]> gitweb.factorcode.org Git - factor.git/blob - core/ui/gadgets/theme.factor
10a3a71c235bb5cfd13084116f324cccca62f5c7
[factor.git] / core / ui / gadgets / theme.factor
1 ! Copyright (C) 2005 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 IN: gadgets-buttons
4 DEFER: <button-paint>
5
6 IN: gadgets-labels
7 DEFER: set-label-color
8 DEFER: set-label-font
9
10 IN: gadgets-text
11 DEFER: set-editor-color
12 DEFER: set-editor-caret-color
13 DEFER: set-editor-selection-color
14 DEFER: set-editor-font
15
16 IN: gadgets-theme
17 USING: arrays gadgets kernel sequences styles ;
18
19 : black { 0.0 0.0 0.0 1.0 } ;
20 : white { 1.0 1.0 1.0 1.0 } ;
21 : gray { 0.6 0.6 0.6 1.0 } ;
22
23 : solid-interior white <solid> swap set-gadget-interior ;
24
25 : solid-boundary black <solid> swap set-gadget-boundary ;
26
27 : faint-boundary gray <solid> swap set-gadget-boundary ;
28
29 : plain-gradient
30     T{ gradient f {
31         { 0.94 0.94 0.94 1.0 }
32         { 0.83 0.83 0.83 1.0 }
33         { 0.83 0.83 0.83 1.0 }
34         { 0.62 0.62 0.62 1.0 }
35     } } ;
36
37 : rollover-gradient
38     T{ gradient f {
39         { 1.0 1.0 1.0 1.0 }
40         { 0.9 0.9 0.9 1.0 }
41         { 0.9 0.9 0.9 1.0 }
42         { 0.75 0.75 0.75 1.0 }
43     } } ;
44
45 : pressed-gradient
46     T{ gradient f {
47         { 0.75 0.75 0.75 1.0 }
48         { 0.9 0.9 0.9 1.0 }
49         { 0.9 0.9 0.9 1.0 }
50         { 1.0 1.0 1.0 1.0 }
51     } } ;
52
53 : selected-gradient
54     T{ gradient f {
55         { 0.65 0.65 0.65 1.0 }
56         { 0.8 0.8 0.8 1.0 }
57         { 0.8 0.8 0.8 1.0 }
58         { 1.0 1.0 1.0 1.0 }
59     } } ;
60
61 : bevel-button-theme ( gadget -- )
62     plain-gradient
63     rollover-gradient
64     pressed-gradient
65     selected-gradient
66     <button-paint> over set-gadget-interior
67     faint-boundary ;
68
69 : thumb-theme ( thumb -- )
70     plain-gradient over set-gadget-interior faint-boundary ;
71
72 : roll-button-theme ( button -- )
73     f black <solid> dup f <button-paint>
74     swap set-gadget-boundary ;
75
76 : caret-theme ( caret -- )
77     T{ solid f { 1.0 0.0 0.0 1.0 } } swap set-gadget-interior ;
78
79 : elevator-theme ( elevator -- )
80     T{ gradient f {
81         { 0.37 0.37 0.37 1.0 }
82         { 0.43 0.43 0.43 1.0 }
83         { 0.5 0.5 0.5 1.0 }
84     } } swap set-gadget-interior ;
85
86 : reverse-video-theme ( label -- )
87     white over set-label-color
88     black <solid> swap set-gadget-interior ;
89
90 : label-theme ( gadget -- )
91     black over set-label-color
92     { "sans-serif" plain 12 } swap set-label-font ;
93
94 : text-theme ( gadget -- )
95     black over set-label-color
96     { "monospace" plain 12 } swap set-label-font ;
97
98 : editor-theme ( editor -- )
99     black over set-editor-color
100     { 1.0 0.0 0.0 1.0 } over set-editor-caret-color
101     { 0.8 0.8 1.0 1.0 } over set-editor-selection-color
102     { "monospace" plain 12 } swap set-editor-font ;
103
104 : popup-theme ( gadget -- )
105     T{ solid f { 0.95 0.95 0.95 0.95 } }
106     swap set-gadget-interior ;
107
108 : menu-theme ( gadget -- )
109     T{ solid f { 0.95 0.95 0.95 0.95 } }
110     over set-gadget-interior
111     gray <solid> swap set-gadget-boundary ;
112
113 : title-theme ( gadget -- )
114     { 1 0 } over set-gadget-orientation
115     T{ gradient f {
116         { 0.65 0.65 1.0 1.0 }
117         { 0.65 0.45 1.0 1.0 }
118     } } swap set-gadget-interior ;