January 15, 2021, 06:41:08 PM
Welcome,
Guest
. Please
login
or
register
.
Did you miss your
activation email
?
1 Hour
1 Day
1 Week
1 Month
Forever
Login with username, password and session length
Home
Forum
Help
Search
Gallery
Login
Register
SyntaxBomb - Indie Coders
»
Languages & Coding
»
Blitz Code Archives
»
Graphics
»
[bb] antialias/blend by smitty [ 1+ years ago ]
« previous
next »
Print
Pages: [
1
]
Go Down
Author
Topic: [bb] antialias/blend by smitty [ 1+ years ago ] (Read 474 times)
BlitzBot
Jr. Member
Posts: 1
[bb] antialias/blend by smitty [ 1+ years ago ]
«
on:
June 29, 2017, 12:28:38 AM »
Title :
antialias/blend
Author :
smitty
Posted :
1+ years ago
Description :
a very simple way of blending between pixels..nothing new or complex here but it seems to work quite well.
Code :
Code: BlitzBasic
; anti alias/blend example (for sprite editor maybe?)
Graphics
800
,
600
,
32
Global
backgnd=
CreateImage
(
800
,
600
)
;
Global
mx,my
;global mouse coords
Dim
zz
(
7
)
,rt
(
7
)
,gt
(
7
)
,bt
(
7
)
;holds colour values
; draw a cursor
Global
cursor=
CreateImage
(
32
,
32
)
SetBuffer
ImageBuffer
(
cursor
)
Color
$aa,$aa,$aa
Oval
0
,
0
,
32
,
32
,
0
MidHandle
cursor
SetBuffer
BackBuffer
(
)
;draw the large grid
drawgrid
(
)
;draw a random colour palette
For
x=
0
To
31
For
y=
0
To
3
Color
Rnd
(
255
)
,
Rnd
(
255
)
,
Rnd
(
255
)
Rect
(
x*
16
)
+
16
,
(
y*
16
)
+
528
,
16
,
16
,
1
Next
Next
; draw a frame for the pixel grid
Color
$ff,$ff,$ff
Rect
598
,
198
,
36
,
36
,
0
;copy screen to background
CopyRect
(
0
,
0
,
800
,
600
,
0
,
0
,
BackBuffer
(
)
,
ImageBuffer
(
backgnd
)
)
;main loop
While
Not
KeyHit
(
1
)
CopyRect
(
0
,
0
,
800
,
600
,
0
,
0
,
ImageBuffer
(
backgnd
)
,
BackBuffer
(
)
)
mx=
MouseX
(
)
my=
MouseY
(
)
tmx=mx/
16
tmy=my/
16
DrawImage
cursor,mx,my
If
mx<
512
And
my<
512
;check if within the grid area
If
MouseDown
(
1
)
; normal draw
SetBuffer
ImageBuffer
(
backgnd
)
Rect
tmx*
16
,tmy*
16
,
16
,
16
,
1
Plot
tmx+
600
,tmy+
200
EndIf
If
MouseDown
(
2
)
;anti alias
SetBuffer
ImageBuffer
(
backgnd
)
;get the surrounding colour values
zz
(
0
)
=
ReadPixel
(
tmx+
600
,tmy+
200
-
1
)
;get color of pixel top
zz
(
1
)
=
ReadPixel
(
tmx+
600
,tmy+
200
+
1
)
;get color of pixel bottom
zz
(
2
)
=
ReadPixel
(
tmx+
600
+
1
,tmy+
200
)
; pixel to right
zz
(
3
)
=
ReadPixel
(
tmx+
600
-
1
,tmy+
200
)
; pixel to left
zz
(
4
)
=
ReadPixel
(
tmx+
600
-
1
,tmy+
200
-
1
)
; pixel to topleft
zz
(
5
)
=
ReadPixel
(
tmx+
600
+
1
,tmy+
200
-
1
)
; pixel to topright
zz
(
6
)
=
ReadPixel
(
tmx+
600
-
1
,tmy+
200
+
1
)
; pixel to leftbottom
zz
(
7
)
=
ReadPixel
(
tmx+
600
+
1
,tmy+
200
+
1
)
; pixel to rightbottom
;calculate color value for the anti-aliased pixel
antialias
(
)
;draw with the anti-aliased Color
Rect
tmx*
16
,tmy*
16
,
16
,
16
,
1
;draw on grid
Plot
tmx+
600
,tmy+
200
;draw at pixel size
EndIf
Else
; change drawing color
; this checks any area outside the grid
; not just the palette bar
If
MouseDown
(
1
)
GetColor
mx,my
EndIf
EndIf
drawgrid
(
)
SetBuffer
BackBuffer
(
)
Flip
Wend
End
Function
antialias
(
)
; mask out alpha
For
f=
0
To
7
zz
(
f
)
=zz
(
f
)
And
$ffffff
Next
;seperate r,g,b values
For
f=
0
To
7
rt
(
f
)
=
(
zz
(
f
)
Shr
16
)
And
$ff
gt
(
f
)
=
(
zz
(
f
)
Shr
8
)
And
$ff
bt
(
f
)
=zz
(
f
)
And
$ff
Next
; add samples then average.
For
f=
0
To
7
rx=rx+rt
(
f
)
gx=gx+gt
(
f
)
bx=bx+bt
(
f
)
Next
rx=rx
Shr
3
gx=gx
Shr
3
bx=bx
Shr
3
; assign new color
Color
rx,gx,bx
End Function
Function
drawgrid
(
)
r=
ColorRed
(
)
:g=
ColorGreen
(
)
:b=
ColorBlue
(
)
Color
$80,$80,$80
For
x=
0
To
31
For
y=
0
To
31
Rect
x*
16
,y*
16
,
16
,
16
,
0
Next
Next
Color
r,g,b
End Function
Comments :
none...
Logged
Print
Pages: [
1
]
Go Up
« previous
next »
SyntaxBomb - Indie Coders
»
Languages & Coding
»
Blitz Code Archives
»
Graphics
»
[bb] antialias/blend by smitty [ 1+ years ago ]
SimplePortal 2.3.6 © 2008-2014, SimplePortal