b098ee51134d9a4a0d4233546836c89deff5c2cc
[blender.git] / source / blender / include / BIF_resources.h
1 /**
2  * $Id$
3  *
4  * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version. The Blender
10  * Foundation also sells licenses for use in proprietary software under
11  * the Blender License.  See http://www.blender.org/BL/ for information
12  * about this.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software Foundation,
21  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
22  *
23  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
24  * All rights reserved.
25  *
26  * The Original Code is: all of this file.
27  *
28  * Contributor(s): none yet.
29  *
30  * ***** END GPL/BL DUAL LICENSE BLOCK *****
31  */
32
33 #ifndef BIF_RESOURCES_H
34 #define BIF_RESOURCES_H
35
36 typedef enum {
37 #define BIFICONID_FIRST         (ICON_VIEW3D)
38         ICON_VIEW3D,
39         ICON_IPO,
40         ICON_OOPS,
41         ICON_BUTS,
42         ICON_FILESEL,
43         ICON_IMAGE_COL,
44         ICON_INFO,
45         ICON_SEQUENCE,
46         ICON_TEXT,
47         ICON_IMASEL,
48         ICON_SOUND,
49         ICON_ACTION,
50         ICON_NLA,
51         ICON_VIEWZOOM,
52         ICON_VIEWMOVE,
53         ICON_HOME,
54         ICON_CLIPUV_DEHLT,
55         ICON_CLIPUV_HLT,
56         ICON_SOME_WACKY_VERTS_AND_LINES,
57         ICON_A_WACKY_VERT_AND_SOME_LINES,
58         ICON_VPAINT_COL,
59
60         ICON_ORTHO,
61         ICON_PERSP,
62         ICON_CAMERA,
63         ICON_BLANK1,
64         ICON_BBOX,
65         ICON_WIRE,
66         ICON_SOLID,
67         ICON_SMOOTH,
68         ICON_POTATO,
69         ICON_BLANK2,
70         ICON_NORMALVIEW,
71         ICON_LOCALVIEW,
72         ICON_UNUSEDVIEW,
73         ICON_BLANK3,
74         ICON_SORTALPHA,
75         ICON_SORTTIME,
76         ICON_SORTSIZE,
77         ICON_LONGDISPLAY,
78         ICON_SHORTDISPLAY,
79         ICON_BLANK4,
80         ICON_BLANK5,
81
82         ICON_VIEW_AXIS_ALL,
83         ICON_VIEW_AXIS_NONE,
84         ICON_VIEW_AXIS_NONE2,
85         ICON_VIEW_AXIS_TOP,
86         ICON_VIEW_AXIS_FRONT,
87         ICON_VIEW_AXIS_SIDE,
88         ICON_POSE_DEHLT,
89         ICON_POSE_HLT,
90         ICON_BORDERMOVE,
91         ICON_MAYBE_ITS_A_LASSO,
92         ICON_BLANK6,
93         ICON_ROTATE,
94         ICON_CURSOR,
95         ICON_ROTATECOLLECTION,
96         ICON_ROTATECENTER,
97         ICON_BLANK7,
98         ICON_BLANK8,
99         ICON_BLANK9,
100         ICON_BLANK10,
101         ICON_BLANK11,
102         ICON_BLANK12,
103         
104         ICON_DOTSUP,
105         ICON_DOTSDOWN,
106         ICON_MENU_PANEL,
107         ICON_AXIS_SIDE,
108         ICON_AXIS_FRONT,
109         ICON_AXIS_TOP,
110         ICON_DRAW_UVFACES,
111         ICON_STICKY_UVS,
112         ICON_STICKY2_UVS,
113         ICON_BLANK17,
114         ICON_BLANK18,
115         ICON_ENVMAP,
116         ICON_TRANSP_HLT,
117         ICON_TRANSP_DEHLT,
118         ICON_RADIO_DEHLT,
119         ICON_RADIO_HLT,
120         ICON_TPAINT_DEHLT,
121         ICON_TPAINT_HLT,
122         ICON_WPAINT_DEHLT,
123         ICON_WPAINT_HLT,
124         ICON_BLANK21,
125         
126         ICON_X,
127         ICON_GO_LEFT,
128         ICON_NO_GO_LEFT,
129         ICON_UNLOCKED,
130         ICON_LOCKED,
131         ICON_PARLIB,
132         ICON_DATALIB,
133         ICON_AUTO,
134         ICON_MATERIAL_DEHLT2,
135         ICON_RING,
136         ICON_GRID,
137         ICON_PROPEDIT,
138         ICON_KEEPRECT,
139         ICON_DESEL_CUBE_VERTS,
140         ICON_EDITMODE_DEHLT,
141         ICON_EDITMODE_HLT,
142         ICON_VPAINT_DEHLT,
143         ICON_VPAINT_HLT,
144         ICON_FACESEL_DEHLT,
145         ICON_FACESEL_HLT,
146         ICON_BLANK22,
147         
148         ICON_HELP,
149         ICON_ERROR,
150         ICON_FOLDER_DEHLT,
151         ICON_FOLDER_HLT,
152         ICON_BLUEIMAGE_DEHLT,
153         ICON_BLUEIMAGE_HLT,
154         ICON_BPIBFOLDER_DEHLT,
155         ICON_BPIBFOLDER_HLT,
156         ICON_BPIBFOLDER_ERR,
157         ICON_UGLY_GREEN_RING,
158         ICON_GHOST,
159         ICON_SHARPCURVE,
160         ICON_SMOOTHCURVE,
161         ICON_BLANK23,
162         ICON_BLANK24,
163         ICON_BLANK25,
164         ICON_BLANK26,
165         ICON_BPIBFOLDER_X,
166         ICON_BPIBFOLDERGREY,
167         ICON_MAGNIFY,
168         ICON_INFO2,
169         
170         ICON_RIGHTARROW,
171         ICON_DOWNARROW_HLT,
172         ICON_ROUNDBEVELTHING,
173         ICON_FULLTEXTURE,
174         ICON_REDPUBLISHERHALFTHINGY,
175         ICON_PUBLISHER,
176         ICON_CKEY,
177         ICON_CHECKBOX_DEHLT,
178         ICON_CHECKBOX_HLT,
179         ICON_LINK,
180         ICON_INLINK,
181         ICON_BEVELBUT_HLT,
182         ICON_BEVELBUT_DEHLT,
183         ICON_PASTEDOWN,
184         ICON_COPYDOWN,
185         ICON_CONSTANT,
186         ICON_LINEAR,
187         ICON_CYCLIC,
188         ICON_KEY_DEHLT,
189         ICON_KEY_HLT,
190         ICON_GRID2,
191         
192         ICON_EYE,
193         ICON_LAMP,
194         ICON_MATERIAL,
195         ICON_TEXTURE,
196         ICON_ANIM,
197         ICON_WORLD,
198         ICON_SCENE,
199         ICON_EDIT,
200         ICON_GAME,
201         ICON_PAINT,
202         ICON_RADIO,
203         ICON_SCRIPT,
204         ICON_SPEAKER,
205         ICON_PASTEUP,
206         ICON_COPYUP,
207         ICON_PASTEFLIPUP,
208         ICON_PASTEFLIPDOWN,
209         ICON_CYCLICLINEAR,
210         ICON_PIN_DEHLT,
211         ICON_PIN_HLT,
212         ICON_LITTLEGRID,
213         
214         ICON_FULLSCREEN,
215         ICON_SPLITSCREEN,
216         ICON_RIGHTARROW_THIN,
217         ICON_DISCLOSURE_TRI_RIGHT,
218         ICON_DISCLOSURE_TRI_DOWN,
219         ICON_SCENE_SEPIA,
220         ICON_SCENE_DEHLT,
221         ICON_OBJECT,
222         ICON_MESH,
223         ICON_CURVE,
224         ICON_MBALL,
225         ICON_LATTICE,
226         ICON_LAMP_DEHLT,
227         ICON_MATERIAL_DEHLT,
228         ICON_TEXTURE_DEHLT,
229         ICON_IPO_DEHLT,
230         ICON_LIBRARY_DEHLT,
231         ICON_IMAGE_DEHLT,
232         ICON_WINDOW_FULLSCREEN,
233         ICON_WINDOW_WINDOW,
234         ICON_PANEL_CLOSE,
235         
236         ICON_BLENDER,
237         ICON_PACKAGE,
238         ICON_UGLYPACKAGE,
239         ICON_MATPLANE,
240         ICON_MATSPHERE,
241         ICON_MATCUBE,
242         ICON_SCENE_HLT,
243         ICON_OBJECT_HLT,
244         ICON_MESH_HLT,
245         ICON_CURVE_HLT,
246         ICON_MBALL_HLT,
247         ICON_LATTICE_HLT,
248         ICON_LAMP_HLT,
249         ICON_MATERIAL_HLT,
250         ICON_TEXTURE_HLT,
251         ICON_IPO_HLT,
252         ICON_LIBRARY_HLT,
253         ICON_IMAGE_HLT,
254         ICON_CONSTRAINT,
255         ICON_BLANK32,
256         ICON_BLANK33,
257 #define BIFICONID_LAST          (ICON_BLANK33)
258 #define BIFNICONIDS                     (BIFICONID_LAST-BIFICONID_FIRST + 1)
259 } BIFIconID;
260
261 typedef enum {
262 #define BIFCOLORSHADE_FIRST     (COLORSHADE_DARK)
263         COLORSHADE_DARK,
264         COLORSHADE_GREY,
265         COLORSHADE_MEDIUM,
266         COLORSHADE_HILITE,
267         COLORSHADE_LIGHT,
268         COLORSHADE_WHITE,
269 #define BIFCOLORSHADE_LAST      (COLORSHADE_WHITE)
270 #define BIFNCOLORSHADES         (BIFCOLORSHADE_LAST-BIFCOLORSHADE_FIRST + 1)
271 } BIFColorShade;
272
273 typedef enum {
274 #define BIFCOLORID_FIRST        (BUTGREY)
275         BUTGREY = 0,
276         BUTGREEN,
277         BUTBLUE,
278         BUTSALMON,
279         MIDGREY,
280         BUTPURPLE,
281         BUTYELLOW,
282         REDALERT,
283         BUTRUST,
284         BUTWHITE,
285         BUTDBLUE,
286         BUTPINK,
287         BUTDPINK,
288         BUTMACTIVE,
289
290         BUTIPO,
291         BUTAUDIO,
292         BUTCAMERA,
293         BUTRANDOM,
294         BUTEDITOBJECT,
295         BUTPROPERTY,
296         BUTSCENE,
297         BUTMOTION,
298         BUTMESSAGE,
299         BUTACTION,
300         BUTCD,
301         BUTGAME,
302         BUTVISIBILITY,
303         BUTYUCK,
304         BUTSEASICK,
305         BUTCHOKE,
306         BUTIMPERIAL,
307
308         BUTTEXTCOLOR,
309         BUTTEXTPRESSED,
310         BUTSBACKGROUND,
311         
312         VIEWPORTBACKCOLOR,
313         VIEWPORTGRIDCOLOR,
314         VIEWPORTACTIVECOLOR,
315         VIEWPORTSELECTEDCOLOR,
316         VIEWPORTUNSELCOLOR,
317         
318         EDITVERTSEL, 
319         EDITVERTUNSEL, 
320         EDITEDGESEL, 
321         EDITEDGEUNSEL,
322         
323 #define BIFCOLORID_LAST         (EDITEDGEUNSEL)
324 #define BIFNCOLORIDS            (BIFCOLORID_LAST-BIFCOLORID_FIRST + 1)
325
326 } BIFColorID;
327
328 enum {
329         TH_AUTO,        /* for buttons, to signal automatic color assignment */
330         
331 // uibutton colors
332         TH_BUT_OUTLINE,
333         TH_BUT_NEUTRAL,
334         TH_BUT_ACTION,
335         TH_BUT_SETTING,
336         TH_BUT_SETTING1,
337         TH_BUT_SETTING2,
338         TH_BUT_NUM,
339         TH_BUT_TEXTFIELD,
340         TH_BUT_POPUP,
341         TH_BUT_TEXT,
342         TH_BUT_TEXT_HI,
343         TH_MENU_BACK,
344         TH_MENU_ITEM,
345         TH_MENU_HILITE,
346         TH_MENU_TEXT,
347         TH_MENU_TEXT_HI,
348         
349         TH_BUT_DRAWTYPE,
350         
351         TH_REDALERT,
352         TH_CUSTOM,
353         
354         TH_THEMEUI,
355 // common colors among spaces
356         
357         TH_BACK,
358         TH_TEXT,
359         TH_TEXT_HI,
360         TH_HEADER,
361         TH_HEADERDESEL,
362         TH_PANEL,
363         TH_SHADE1,
364         TH_SHADE2,
365         TH_HILITE,
366
367         TH_GRID,
368         TH_WIRE,
369         TH_SELECT,
370         TH_ACTIVE,
371         TH_TRANSFORM,
372         TH_VERTEX,
373         TH_VERTEX_SELECT,
374         TH_VERTEX_SIZE,
375         TH_EDGE,
376         TH_EDGE_SELECT,
377         TH_FACE,
378         TH_FACE_SELECT
379 };
380
381 /* specific defines per space should have higher define values */
382
383 struct bTheme;
384
385 // THE CODERS API FOR THEMES:
386
387 // sets the color
388 void    BIF_ThemeColor(int colorid);
389
390 // sets the color plus alpha
391 void    BIF_ThemeColor4(int colorid);
392
393 // sets color plus offset for shade
394 void    BIF_ThemeColorShade(int colorid, int offset);
395
396 // sets color plus offset for alpha
397 void            BIF_ThemeColorShadeAlpha(int colorid, int coloffset, int alphaoffset);
398
399 // sets color, which is blend between two theme colors
400 void    BIF_ThemeColorBlend(int colorid1, int colorid2, float fac);
401 // same, with shade offset
402 void    BIF_ThemeColorBlendShade(int colorid1, int colorid2, float fac, int offset);
403
404 // returns one value, not scaled
405 float   BIF_GetThemeValuef(int colorid);
406 int     BIF_GetThemeValue(int colorid);
407
408 // get three color values, scaled to 0.0-1.0 range
409 void    BIF_GetThemeColor3fv(int colorid, float *col);
410
411 // get the 3 or 4 byte values
412 void    BIF_GetThemeColor3ubv(int colorid, char *col);
413 void    BIF_GetThemeColor4ubv(int colorid, char *col);
414
415 struct ScrArea;
416
417 // internal (blender) usage only, for init and set active
418 void    BIF_InitTheme(void);
419 void    BIF_SetTheme(struct ScrArea *sa);
420 void    BIF_resources_init              (void);
421 void    BIF_resources_free              (void);
422 void    BIF_colors_init                 (void);
423 void    BIF_load_ui_colors              (void);
424
425
426 // icon API
427 int             BIF_get_icon_width              (BIFIconID icon);
428 int             BIF_get_icon_height             (BIFIconID icon);
429 void    BIF_draw_icon                   (BIFIconID icon);
430 void    BIF_draw_icon_blended   (BIFIconID icon, int colorid, int shade);
431
432 /* only for buttons in theme editor! */
433 char    *BIF_ThemeGetColorPtr(struct bTheme *btheme, int spacetype, int colorid);
434 char    *BIF_ThemeColorsPup(int spacetype);
435
436
437 void    BIF_def_color                   (BIFColorID colorid, unsigned char r, unsigned char g, unsigned char b);
438
439 #endif /*  BIF_ICONS_H */