/DrawGrad
Posted by Imrac
Saturday, April 19, 2008
Description: Draw Gradients In Picture Windows
;/drwagrad @ <color1> <color2> <x y w h> [horizontal]
;colors need to be $rgb(x,x,x) format
;[horizontal] must = 1 to be horizontal
alias drawgrad {
var %window = $1, %rgb1 = $2, %rgb2 = $3, %x = $4, %y = $5, %w = $6, %h = $7, %hz = $8
if (@* !iswm %window) { echo test }
if ((@* !iswm %window) || (%rgb1 !isnum) || (%rgb2 !isnum) || (%x !isnum) || (%y !isnum) || (%w !isnum) || (%h !isnum)) { echo * /drawgrad: insufficient parameters | halt }
else {
var %r1 = $gettok($rgb(%rgb1),1,44), %r2 = $gettok($rgb(%rgb2),1,44), %g1 = $gettok($rgb(%rgb1),2,44), %g2 = $gettok($rgb(%rgb2),2,44), %b1 = $gettok($rgb(%rgb1),3,44), %b2 = $gettok($rgb(%rgb2),3,44)
if (%hz == 1) {
var %a = 0
while (%a <= %w) {
var %r3 = $floor($calc(%r1 + ((%r2 - %r1) * (%a / %w )))), %g3 = $floor($calc(%g1 + ((%g2 - %g1) * (%a / %w )))), %b3 = $floor($calc(%b1 + ((%b2 - %b1) * (%a / %w )))), %xc = $calc(%x + %a)
drawrect -nr %window $rgb(%r3, %g3, %b3) 0 %xc %y 1 %h
inc %a
}
}
else {
var %a = 0
while (%a <= %h) {
var %r3 = $floor($calc(%r1 + ((%r2 - %r1) * (%a / %h)))), %g3 = $floor($calc(%g1 + ((%g2 - %g1) * (%a / %h)))), %b3 = $floor($calc(%b1 + ((%b2 - %b1) * (%a / %h)))), %yc = $calc(%y + %a)
drawrect -nr %window $rgb(%r3, %g3, %b3) 0 %x %yc %w 1
inc %a
}
}
drawrect %window
}
}
alias gradtest {
window -pd @test 250 250 250 250 arial 12
drawgrad @test $rgb(140,170,215) $rgb(112,150,245) 5 3 200 20
}
;/drwagrad @ <color1> <color2> <x y w h> [horizontal]
;colors need to be $rgb(x,x,x) format
;[horizontal] must = 1 to be horizontal
alias drawgrad {
var %window = $1, %rgb1 = $2, %rgb2 = $3, %x = $4, %y = $5, %w = $6, %h = $7, %hz = $8
if (@* !iswm %window) { echo test }
if ((@* !iswm %window) || (%rgb1 !isnum) || (%rgb2 !isnum) || (%x !isnum) || (%y !isnum) || (%w !isnum) || (%h !isnum)) { echo * /drawgrad: insufficient parameters | halt }
else {
var %r1 = $gettok($rgb(%rgb1),1,44), %r2 = $gettok($rgb(%rgb2),1,44), %g1 = $gettok($rgb(%rgb1),2,44), %g2 = $gettok($rgb(%rgb2),2,44), %b1 = $gettok($rgb(%rgb1),3,44), %b2 = $gettok($rgb(%rgb2),3,44)
if (%hz == 1) {
var %a = 0
while (%a <= %w) {
var %r3 = $floor($calc(%r1 + ((%r2 - %r1) * (%a / %w )))), %g3 = $floor($calc(%g1 + ((%g2 - %g1) * (%a / %w )))), %b3 = $floor($calc(%b1 + ((%b2 - %b1) * (%a / %w )))), %xc = $calc(%x + %a)
drawrect -nr %window $rgb(%r3, %g3, %b3) 0 %xc %y 1 %h
inc %a
}
}
else {
var %a = 0
while (%a <= %h) {
var %r3 = $floor($calc(%r1 + ((%r2 - %r1) * (%a / %h)))), %g3 = $floor($calc(%g1 + ((%g2 - %g1) * (%a / %h)))), %b3 = $floor($calc(%b1 + ((%b2 - %b1) * (%a / %h)))), %yc = $calc(%y + %a)
drawrect -nr %window $rgb(%r3, %g3, %b3) 0 %x %yc %w 1
inc %a
}
}
drawrect %window
}
}
alias gradtest {
window -pd @test 250 250 250 250 arial 12
drawgrad @test $rgb(140,170,215) $rgb(112,150,245) 5 3 200 20
}