/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
}
Submit a comment
Oops! You need to login or register before you can post a comment!

ebaum's world