'GRADIENTS
'by Loudar
maxgradients = 20
maxcolors = 20 'per gradient
DIM SHARED gcol&
(maxgradients
, maxcolors
) 'saves color in gradient DIM SHARED gpos
(maxgradients
, maxcolors
) 'saves position of color in gradient DIM SHARED maxgcol&
(maxgradients
) 'saves maximum amount of colors in gradients
'test gradient 1
newgcolor 1, 1, 0, colour&("white")
newgcolor 1, 2, 20, colour&("red")
newgcolor 1, 3, 100, colour&("blue")
newgradient 1, 3
drawgradient 1, 0, 500, 0, 50, "h"
'test gradient 2
newgcolor 2, 1, 0, colour&("green")
newgcolor
2, 2, 20, _RGBA(249, 105, 255, 255)newgcolor
2, 3, 40, _RGBA(127, 255, 127, 255)newgcolor
2, 4, 60, _RGBA(194, 0, 188, 255)newgcolor
2, 5, 80, _RGBA(0, 255, 255, 255)newgcolor 2, 6, 100, colour&("white")
newgradient 2, 6
drawgradient 2, 0, 500, 50, 100, "h"
'test gradient 3
newgcolor
3, 1, 0, _RGBA(255, 172, 0, 255)newgcolor
3, 2, 50, _RGBA(255, 44, 83, 255)newgcolor
3, 3, 100, _RGBA(100, 155, 255, 255)newgradient 3, 3
drawgradient 3, 0, 500, 100, 150, "v"
'--------------------------------------------------------------------------------------------
SUB newgcolor
(gradient
, gcolor
, gpos
, col&
) gcol&(gradient, gcolor) = col&
gpos(gradient, gcolor) = gpos
SUB newgradient
(gradient
, maxgrcolors
) IF gradient
> 0 AND gradient
<= maxgradients
AND maxgrcolors
> 0 AND maxgrcolors
<= maxcolors
THEN maxgcol&(gradient) = maxgrcolors
FUNCTION gradientcolor&
(gradient
, grposition
) IF maxgcol&
(gradient
) > 0 THEN grcolor
= 0:
DO: grcolor
= grcolor
+ 1 IF grposition
= gpos
(gradient
, grcolor
) THEN gradientcolor& = gcol&(gradient, grcolor)
IF grcolor
< maxgcol&
(gradient
) THEN IF grposition
> gpos
(gradient
, grcolor
) AND grposition
< gpos
(gradient
, grcolor
+ 1) THEN r1
= _RED(gcol&
(gradient
, grcolor
)) g1
= _GREEN(gcol&
(gradient
, grcolor
)) b1
= _BLUE(gcol&
(gradient
, grcolor
)) a1
= _ALPHA(gcol&
(gradient
, grcolor
)) r2
= _RED(gcol&
(gradient
, grcolor
+ 1)) g2
= _GREEN(gcol&
(gradient
, grcolor
+ 1)) b2
= _BLUE(gcol&
(gradient
, grcolor
+ 1)) a2
= _ALPHA(gcol&
(gradient
, grcolor
+ 1)) p1 = gpos(gradient, grcolor)
p2 = gpos(gradient, grcolor + 1)
f = (grposition - p1) / (p2 - p1)
r = r1 - ((r1 - r2) * f)
r = r1
r = r1 + ((r2 - r1) * f)
g = g1 - ((g1 - g2) * f)
g = g1
g = g1 + ((g2 - g1) * f)
b = b1 - ((b1 - b2) * f)
b = b1
b = b1 + ((b2 - b1) * f)
a = a1 - ((a1 - a2) * f)
a = a1
a = a1 + ((a2 - a1) * f)
gradientcolor&
= _RGBA(0, 0, 0, 0)
SUB drawgradient
(gradient
, lx
, ux
, ly
, uy
, orientation$
) LINE (lx
+ rx
, ly
)-(lx
+ rx
, uy
), gradientcolor&
(gradient
, rx
/ (ux
- lx
) * 100) LINE (lx
, ly
+ ry
)-(ux
, ly
+ ry
), gradientcolor&
(gradient
, ry
/ (uy
- ly
) * 100)
colour&
= _RGBA(255, 255, 255, 255) colour&
= _RGBA(15, 15, 15, 255) colour&
= _RGBA(255, 30, 30, 255) colour&
= _RGBA(249, 194, 0, 255) colour&
= _RGBA(94, 233, 61, 255) colour&
= _RGBA(6, 150, 255, 255) colour&
= _RGBA(50, 50, 50, 255) colour&
= _RGBA(170, 170, 170, 255) colour&
= _RGBA(0, 0, 0, 0)