Method: Bitmap#gradient_fill_rect

Defined in:
lib/openrgss/bitmap.rb

#gradient_fill_rect(x, y, width, height = false, color1 = nil, color2 = nil, vertical = false) ⇒ Object

:call-seq: gradient_fill_rect(x, y, width, height, color1, color2[, vertical]) gradient_fill_rect(rect, color1, color2[, vertical])

Fills in this bitmap box (x, y, width, height) or rect (Rect) with a gradient from color1 (Color) to color2 (Color).

Set vertical to true to create a vertical gradient. Horizontal gradient is the default.



124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
# File 'lib/openrgss/bitmap.rb', line 124

def gradient_fill_rect(x, y, width, height=false, color1=nil, color2=nil, vertical=false)
  if x.is_a? Rect
    rect     = x
    color1   = y
    color2   = width
    vertical = height
    x        = rect.x
    y        = rect.y
    width    = rect.width
    height   = rect.height
  end
  if vertical
    height.times do |i|
      @entity.fill_rect(x, y+i, width, 1, @entity.map_rgba(
          color1.red + (color2.red - color1.red) * i / height,
          color1.green + (color2.green - color1.green) * i / height,
          color1.blue + (color2.blue - color1.blue) * i / height,
          color1.alpha + (color2.alpha - color1.alpha) * i / height
      ))
    end
  else
    width.times do |i|
      @entity.fill_rect(x+i, y, 1, height, @entity.map_rgba(
          color1.red + (color2.red - color1.red) * i / width,
          color1.green + (color2.green - color1.green) * i / width,
          color1.blue + (color2.blue - color1.blue) * i / width,
          color1.alpha + (color2.alpha - color1.alpha) * i / width
      ))
    end
  end
end