QcPenPrinter: no need to allocate QPrintDialog on heap
[supercollider.git] / HelpSource / Classes / Gradient.schelp
blob916e3702a8d74759e8f5de03c6b51d24bacd5ae7
1 class:: Gradient
2 summary:: A linear color fade between two colors
3 categories:: GUI>GUI-Tools
4 related:: Classes/Color, Classes/HiliteGradient
6 classmethods::
8 method:: new
9 argument:: color1
10 An instance of link::Classes/Color::.
11 argument:: color2
12 An instance of link::Classes/Color::.
13 argument:: direction
14 code::\h:: or code::\v:: for horizontal and vertical respectively. Default value is code::\h::.
15 argument:: steps
16 The resolution of the gradient. Default value is 64.
18 instancemethods::
20 method:: at
21 Retrieve the colour at position code::pos::, typically a value between zero and one. code::at(0):: is code::color1::, and code::at(1):: is code::color2::.
22 argument:: pos
24 examples::
25 code::
26 // basic usage
28 w = Window.new.front;
29 w.view.background = Gradient(Color.yellow,Color.white);
32 // change direction and resolution
34 w = Window.new.front;
35 w.view.background = Gradient(Color.red,Color.white,\v, 5);
38 // almost unnoticeable variations can be pleasant
40 w = Window.new.front;
41 v = CompositeView(w, Rect(50,50,300,300));
42 c = Color.rand;
43 d = c.vary(0.15);
44 v.background = Gradient(c, d, \v);
45 [c, d].postln
49 var w, k, c, d, e, c1, c2, f, g;
50 w = Window.new.front;
51 k = Slider2D(w, Rect(50,50,300,300));
52 f = {
53         c = Color.rand;
54         d = c.vary(0.5);
55         e = d.vary(0.5);
57 g = {
58         c1 = d.hueBlend(e, k.y).round(0.01);
59         c2 = c.hueBlend(e, k.x).round(0.01);
60         k.background = Gradient(c1, c2, \v)
62 f.value; g.value;
63 k.action = g;
64 k.mouseUpAction = { [c1, c2].postln };
65 k.keyDownAction = f; // hit any key for new color
68 // an example using gradient indirectly to update window colour
70 w=Window.new.front;
71 g = Gradient(Color.red,Color.green);
72 Task{
73         (0, 0.01 .. 1).do{|pos|
74                 w.view.background = g.at(pos);
75                 0.01.wait;
76         };
77 }.play(AppClock)