Gradient a linear color fade between two colors


Inherits from: Object


See also: Color, HiliteGradient


Creation / Class Methods


*new (color1, color2, direction, steps)

color1 - An instance of Color.

color2 - An instance of Color.

direction - \h or \v for horizontal and vertical respectively. Default value is \h.

steps - The resolution of the gradient. Default value is 64.


Instance Methods


at(pos)

Retrieve the colour at position pos, typically a value between zero and one.

at(0) is color1, and at(1) is color2.


Examples


// basic usage

(

w = Window.new.front;

w.view.background = Gradient(Color.yellow,Color.white);

)


// change direction and resolution

(

w = Window.new.front;

w.view.background = Gradient(Color.red,Color.white,\v, 5);

)


// almost unnoticeable variations can be pleasant

(

w = Window.new.front;

v = CompositeView(w, Rect(50,50,300,300));

c = Color.rand;

d = c.vary(0.15);

v.background = Gradient(c, d, \v);

[c, d].postln

)


(

var w, k, c, d, e, c1, c2, f, g;

w = Window.new.front;

k = Slider2D(w, Rect(50,50,300,300));

f = {

c = Color.rand;

d = c.vary(0.5);

e = d.vary(0.5);

};

g = { 

c1 = d.hueBlend(e, k.y).round(0.01); 

c2 = c.hueBlend(e, k.x).round(0.01); 

k.background = Gradient(c1, c2, \v) 

};

f.value; g.value;

k.action = g;

k.mouseUpAction = { [c1, c2].postln };

k.keyDownAction = f; // hit any key for new color

)


// an example using gradient indirectly to update window colour

(

w=Window.new.front;

g = Gradient(Color.red,Color.green);

Task{

(0, 0.01 .. 1).do{|pos|

w.view.background = g.at(pos);

0.01.wait;

};

}.play(AppClock)

)