== Render ==
[blender.git] / source / blender / include / blendef.h
1 /* $Id$
2  *
3  * ***** BEGIN GPL LICENSE BLOCK *****
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU General Public License
7  * as published by the Free Software Foundation; either version 2
8  * of the License, or (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software Foundation,
17  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
18  *
19  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
20  * All rights reserved.
21  *
22  * The Original Code is: all of this file.
23  *
24  * Contributor(s): none yet.
25  *
26  * ***** END GPL LICENSE BLOCK *****
27  */
28 #ifndef BLENDEF_H
29 #define BLENDEF_H
30
31
32 /* **************** MAX ********************* */
33
34 #define MAXFRAME        300000
35 #define MAXFRAMEF       300000.0f
36
37 #define MINFRAME        1
38 #define MINFRAMEF       1.0
39
40 /* max length material array, 16 because of bits in matfrom */
41 #define MAXPICKBUF      10000
42 #define MAXSEQ          32
43
44 /* in buttons.c */
45 #define MAX_EFFECT      20
46
47 #ifndef MAXFLOAT
48 #define MAXFLOAT  ((float)3.40282347e+38)
49 #endif
50
51 /* also fill in structs itself, dna cannot handle defines, duplicate with utildefines.h still */
52 #ifndef FILE_MAXDIR
53 #define FILE_MAXDIR             160
54 #define FILE_MAXFILE            80
55 #endif
56
57
58 #include <float.h>      
59
60
61
62
63 /* **************** GENERAL ********************* */
64
65 // return values
66
67 #define RET_OK 0
68 #define RET_ERROR 1
69 #define RET_CANCEL 2
70 #define RET_YES (1 == 1)
71 #define RET_NO (1 == 0)
72
73 #if defined(__sgi) || defined(__sparc) || defined(__sparc__) || defined (__PPC__) || defined (__ppc__) || defined (__hppa__) || defined (__BIG_ENDIAN__)
74 /* big endian */
75 #define MAKE_ID2(c, d)          ( (c)<<8 | (d) )
76 #define MOST_SIG_BYTE                           0
77 #define BBIG_ENDIAN
78 #else
79 /* little endian  */
80 #define MAKE_ID2(c, d)          ( (d)<<8 | (c) )
81 #define MOST_SIG_BYTE                           1
82 #define BLITTLE_ENDIAN
83 #endif
84
85 #define SELECT                  1
86 #define HIDDEN                  1
87 #define FIRST                   1
88 #define ACTIVE                  2
89 /*#ifdef WITH_VERSE*/
90 #define VERSE                   3
91 /*#endif*/
92 #define DESELECT                0
93 #define NOT_YET                 0
94 #define VISIBLE                 0
95 #define LAST                    0
96
97 #define TESTBASE(base)  ( ((base)->flag & SELECT) && ((base)->lay & G.vd->lay) && (((base)->object->restrictflag & OB_RESTRICT_VIEW)==0) )
98 #define TESTBASELIB(base)       ( ((base)->flag & SELECT) && ((base)->lay & G.vd->lay) && ((base)->object->id.lib==0) && (((base)->object->restrictflag & OB_RESTRICT_VIEW)==0))
99
100 /* This is a TESTBASELIB that can work without a 3D view */
101 #define TESTBASELIB_BGMODE(base)        ( ((base)->flag & SELECT) && ((base)->lay & (G.vd ? G.vd->lay : G.scene->lay)) && ((base)->object->id.lib==0) && (((base)->object->restrictflag & OB_RESTRICT_VIEW)==0))
102
103 #define BASE_SELECTABLE(base)    ((base->lay & G.vd->lay) && (base->object->restrictflag & (OB_RESTRICT_SELECT|OB_RESTRICT_VIEW))==0)
104 #define FIRSTBASE               G.scene->base.first
105 #define LASTBASE                G.scene->base.last
106 #define BASACT                  (G.scene->basact)
107 #define OBACT                   (BASACT? BASACT->object: 0)
108 #define OB_SUPPORT_MATERIAL(ob) ELEM5(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_MBALL)
109 #define ID_NEW(a)               if( (a) && (a)->id.newid ) (a)= (void *)(a)->id.newid
110 #define ID_NEW_US(a)    if( (a)->id.newid) {(a)= (void *)(a)->id.newid; (a)->id.us++;}
111 #define ID_NEW_US2(a)   if( ((ID *)a)->newid) {(a)= ((ID *)a)->newid; ((ID *)a)->us++;}
112 #define CFRA                    (G.scene->r.cfra)
113 #define F_CFRA                  ((float)(G.scene->r.cfra))
114 #define SFRA                    (G.scene->r.sfra)
115 #define EFRA                    (G.scene->r.efra)
116 #define STFRA                   (G.scene->frame_step)
117 #define PSFRA                   ((G.scene->r.psfra != 0)? (G.scene->r.psfra): (G.scene->r.sfra))
118 #define PEFRA                   ((G.scene->r.psfra != 0)? (G.scene->r.pefra): (G.scene->r.efra))
119 #define FRA2TIME(a)           ((((double) G.scene->r.frs_sec_base) * (a)) / G.scene->r.frs_sec)
120 #define TIME2FRA(a)           ((((double) G.scene->r.frs_sec) * (a)) / G.scene->r.frs_sec_base)
121 #define FPS                     (((double) G.scene->r.frs_sec) / G.scene->r.frs_sec_base)
122
123 #define ISPOIN(a, b, c)                 ( (a->b) && (a->c) )
124 #define ISPOIN3(a, b, c, d)             ( (a->b) && (a->c) && (a->d) )
125 #define ISPOIN4(a, b, c, d, e)  ( (a->b) && (a->c) && (a->d) && (a->e) )
126
127 #define BEZSELECTED(bezt)   (((bezt)->f1 & SELECT) || ((bezt)->f2 & SELECT) || ((bezt)->f3 & SELECT))
128 /* for curve objects in editmode that can have hidden handles - may use for IPO's later */
129 #define BEZSELECTED_HIDDENHANDLES(bezt)   ((G.f & G_HIDDENHANDLES) ? (bezt)->f2 & SELECT : BEZSELECTED(bezt))
130
131 /* psfont */
132 #define FNT_PDRAW 1
133 #define FNT_HAEBERLI 2
134
135 /* getbutton */
136
137 /* do_global_buttons(event) */
138
139 // (first event)
140 #define B_LOCAL_ALONE   20
141
142
143 #define B_ACTLOCAL              24      /* __NLA */
144 #define B_ACTALONE              25      /* __NLA */
145 #define B_ARMLOCAL              26      /* __NLA */
146 #define B_ARMALONE              27      /* __NLA */
147
148 #define B_WORLDLOCAL            28
149 #define B_WORLDALONE            29
150 #define B_LATTLOCAL             30
151 #define B_MBALLLOCAL            31
152 #define B_CAMERALOCAL           32
153 #define B_OBLOCAL               33
154 #define B_IPOLOCAL              34
155 #define B_LAMPLOCAL             35
156 #define B_MATLOCAL              36
157 #define B_TEXLOCAL              37
158 #define B_MESHLOCAL             38
159 #define B_CURVELOCAL            39
160
161 #define B_LATTALONE             40
162 #define B_MBALLALONE            41
163 #define B_CAMERAALONE           42
164 #define B_OBALONE               43
165 #define B_IPOALONE              44
166 #define B_LAMPALONE             45
167 #define B_MATALONE              46
168 #define B_TEXALONE              47
169 #define B_MESHALONE             48
170 #define B_CURVEALONE            49
171
172 /* EVENT < 50: alones en locals */
173
174 #define B_KEEPDATA              60
175 #define B_CONSOLETOG            61
176 #define B_DRAWINFO              62
177 #define B_REDRCURW3D            63
178 #define B_FLIPINFOMENU          64
179 #define B_FLIPFULLSCREEN        65
180 #define B_PLAINMENUS            66
181
182
183 #define B_GLRESLIMITCHANGED     69
184 #define B_SHOWSPLASH            70
185 #define B_RESETAUTOSAVE         71
186 #define B_SOUNDTOGGLE           72
187 #define B_MIPMAPCHANGED         73
188 #define B_CONSTRAINTBROWSE      74      /* __NLA */
189 #define B_ACTIONDELETE          75      /* __NLA */
190 #define B_ACTIONBROWSE          76      /* __NLA */
191 #define B_IMAGEDELETE           77
192 #define B_LTEXBROWSE            78
193 #define B_MESHBROWSE            79
194 #define B_EXTEXBROWSE           80
195 #define B_LOADTEMP              81
196 #define B_MATDELETE             82
197 #define B_TEXDELETE             83
198 #define B_IPODELETE             84
199 #define B_WORLDDELETE           85
200 #define B_WTEXBROWSE            86
201 #define B_WORLDBROWSE           87
202 #define B_IPOBROWSE             88
203 #define B_NEWFRAME              89
204 #define B_LAMPBROWSE            90
205 #define B_MATBROWSE             91
206 #define B_TEXBROWSE             92
207 #define B_EDITBROWSE            93
208 #define B_AUTOTEXNAME           94
209 #define B_AUTOMATNAME           95
210 #define B_MATLOCK               96
211 #define B_IDNAME                97
212 #define B_NEWSPACE              98
213 #define B_FULL                  99
214 #define B_REDR                  100
215
216
217 /* VIEW3D: 100 */
218 #define B_HOME                  101
219 #define B_LAY                   102
220 /* watch: codes 102-132 in in use for layers */
221 #define B_AUTOKEY               139
222 #define B_SCENELOCK             140
223 #define B_LOCALVIEW             141
224 #define B_U_CAPSLOCK            142
225
226 #define B_VIEWBUT               146
227 #define B_PERSP                 147
228 #define B_PROPTOOL              148
229 #define B_VIEWRENDER            149
230 #define B_STARTGAME             150
231
232 #define B_MODESELECT            156
233 #define B_AROUND                157
234 #define B_SEL_VERT              158
235 #define B_SEL_EDGE              159
236 #define B_SEL_FACE              160
237 #define B_MAN_TRANS             161
238 #define B_MAN_ROT               162
239 #define B_MAN_SCALE             163
240 #define B_SEL_PATH              166
241 #define B_SEL_POINT             167
242 #define B_SEL_END               168
243 #define B_MAN_MODE              169
244 #define B_NDOF                  170
245 #define B_VIEW_BUTSEDIT 171
246
247 /* IPO: 200 */
248 #define B_IPOHOME               201
249 #define B_IPOBORDER             202
250 #define B_IPOCOPY               203
251 #define B_IPOPASTE              204
252 #define B_IPOCONT               205
253 #define B_IPOEXTRAP             206
254 #define B_IPOCYCLIC             207
255 #define B_IPOMAIN               208
256 #define B_IPOSHOWKEY            209
257 #define B_IPOCYCLICX            210
258         /* warn: also used for oops and seq */
259 #define B_VIEW2DZOOM            211
260 #define B_IPOPIN                212
261 #define B_IPO_ACTION_OB         213
262 #define B_IPO_ACTION_KEY        214
263 #define B_IPOVIEWCENTER         215
264 #define B_IPOVIEWALL            216
265 #define B_IPOREDRAW                     217
266
267 /* OOPS: 250 */
268 #define B_OOPSHOME              251
269 #define B_OOPSBORDER            252
270 #define B_NEWOOPS               253
271 #define B_OOPSVIEWSEL           254
272
273 /* INFO: 300 */
274 /* watch: also in filesel.c and editobject.c */
275 #define B_INFOSCR               301
276 #define B_INFODELSCR            302
277 #define B_INFOSCE               304
278 #define B_INFODELSCE            305
279 #define B_FILEMENU              306
280 #define B_PACKFILE              307
281
282 #define B_CONSOLEOUT            308
283 #define B_CONSOLENUMLINES       309
284 #define B_USERPREF              310
285 #define B_LOADUIFONT            311
286 #define B_SETLANGUAGE           312
287 #define B_SETFONTSIZE           313
288 #define B_SETENCODING           314
289 #define B_SETTRANSBUTS          315
290 #define B_DOLANGUIFONT          316
291 #define B_RESTOREFONT           317
292 #define B_USETEXTUREFONT        318
293
294 #define B_UITHEMECHANGED        320
295 #define B_UITHEMECOLORMOD       321
296 #define B_UITHEMERESET          322
297 #define B_UITHEMEIMPORT         323
298 #define B_UITHEMEEXPORT         324
299
300 #define B_MEMCACHELIMIT         325
301 #define B_WPAINT_RANGE          326
302
303 /* Definitions for the fileselect buttons in user prefs */
304 #define B_FONTDIRFILESEL        330
305 #define B_TEXTUDIRFILESEL       331
306 #define B_PLUGTEXDIRFILESEL     332
307 #define B_PLUGSEQDIRFILESEL     333
308 #define B_RENDERDIRFILESEL      334
309 #define B_PYTHONDIRFILESEL      335
310 #define B_SOUNDDIRFILESEL       336
311 #define B_TEMPDIRFILESEL        337
312 /* yafray: for exportdir select */
313 #define B_YAFRAYDIRFILESEL      338
314 #define B_PYMENUEVAL            339 /* re-eval scripts registration in menus */
315 /* END Definitions for the fileselect buttons in user prefs */
316
317 /* IMAGE: 350 */
318 #define B_SIMAGEHOME            351
319 #define B_SIMABROWSE            352
320 #define B_SIMAGELOAD            353
321 #define B_SIMA_REDR_IMA_3D      354
322 #define B_SIMAGETILE            355
323 #define B_BE_SQUARE                     356
324 #define B_TWINANIM                      357
325 #define B_SIMAGEREPLACE         358
326 #define B_CLIP_UV                       359
327 #define B_SIMAGELOAD1           360
328 #define B_SIMAGEREPLACE1        361
329 #define B_SIMAGEPAINTTOOL       362
330 #define B_SIMAPACKIMA           363
331 #define B_SIMAGESAVE            364
332 #define B_SIMACLONEBROWSE       365
333 #define B_SIMACLONEDELETE       366
334 #define B_SIMANOTHING           368
335 #define B_SIMACURVES            369
336 #define B_SIMARANGE                     370
337 #define B_SIMA_USE_ALPHA        371
338 #define B_SIMA_SHOW_ALPHA       372
339 #define B_SIMA_SHOW_ZBUF        373
340 #define B_SIMABRUSHBROWSE       374
341 #define B_SIMABRUSHDELETE       375
342 #define B_SIMABRUSHLOCAL        376
343 #define B_SIMABRUSHCHANGE       377
344 #define B_SIMABTEXBROWSE        378
345 #define B_SIMABTEXDELETE        379
346 #define B_SIMARELOAD            380
347 #define B_SIMANAME                      381
348 #define B_SIMAMULTI                     382
349 #define B_TRANS_IMAGE           383
350 #define B_CURSOR_IMAGE          384
351 #define B_SIMA_REPACK           385
352 #define B_SIMA_PLAY                     386
353 #define B_SIMA_RECORD           387
354 #define B_SIMAPIN                       388
355 #define B_SIMA3DVIEWDRAW        389
356
357
358 /* BUTS: 400 */
359 #define B_BUTSHOME                      401
360 #define B_BUTSPREVIEW           402
361 #define B_MATCOPY                       403
362 #define B_MATPASTE                      404
363 #define B_MESHTYPE                      405
364 #define B_CONTEXT_SWITCH        406
365
366 /* IMASEL: 450 */
367 /* in imasel.h - not any more - elubie */
368 #define B_SORTIMASELLIST        451
369 #define B_RELOADIMASELDIR       452
370 #define B_FILTERIMASELDIR       453
371
372 /* TEXT: 500 */
373 #define B_TEXTBROWSE            501
374 #define B_TEXTALONE             502
375 #define B_TEXTLOCAL             503
376 #define B_TEXTDELETE            504
377 #define B_TEXTFONT              505
378 #define B_TEXTSTORE             506
379 #define B_TEXTLINENUM           507
380 #define B_TAB_NUMBERS           508
381 #define B_SYNTAX                509
382 #define B_WORDWRAP              510
383 #define B_TEXTPLUGINS   511
384 #define B_PASTEFIND             512
385 #define B_PASTEREPLACE  513
386 #define B_TEXTREPLACE   514
387 #define B_TEXTFIND              515
388 #define B_TEXTMARKALL   516
389
390 /* SCRIPT: 525 */
391 #define B_SCRIPTBROWSE          526
392 #define B_SCRIPT2PREV           527
393
394 /* FILE: 550 */
395 #define B_SORTFILELIST          551
396 #define B_RELOADDIR             552
397
398 /* SEQUENCE: 600 */
399 #define B_SEQHOME               601
400 #define B_SEQCLEAR              602
401
402 /* SOUND: 650 */
403 #define B_SOUNDBROWSE           651
404 #define B_SOUNDBROWSE2          652
405 #define B_SOUNDHOME             653
406 #define B_PACKSOUND             654
407
408 /* ACTION: 701 - 750 */
409 #define B_ACTHOME               701
410 #define B_ACTCOPY               702
411 #define B_ACTPASTE              703
412 #define B_ACTPASTEFLIP          704
413 #define B_ACTCYCLIC             705
414 #define B_ACTCONT               706
415 #define B_ACTMAIN               707
416 #define B_ACTPIN                708
417 #define B_ACTBAKE               709
418 #define B_ACTCOPYKEYS           710
419 #define B_ACTPASTEKEYS          711
420
421 #define B_ACTCUSTCOLORS         712
422 #define B_ACTCOLSSELECTOR       713
423 #define B_ACTGRP_SELALL         714
424 #define B_ACTGRP_ADDTOSELF      715
425 #define B_ACTGRP_UNGROUP        716
426
427 /* TIME: 751 - 800 */
428 #define B_TL_REW                751
429 #define B_TL_PLAY               752
430 #define B_TL_FF                 753
431 #define B_TL_PREVKEY            754
432 #define B_TL_NEXTKEY            755
433 #define B_TL_STOP               756
434 #define B_TL_PREVIEWON          757
435
436 /* NLA: 801-850 */
437 #define B_NLAHOME               801
438
439 /* NODE: 851-900 */
440 #define B_NODEHOME              851
441 #define B_NODE_USEMAT           852
442 #define B_NODE_USESCENE         853
443
444 /* FREE 901 - 999 */
445
446
447 #define B_NOP                   -1
448
449
450 /* editbutflag */
451 #define B_CLOCKWISE             1
452 #define B_KEEPORIG              2
453 #define B_BEAUTY                4
454 #define B_SMOOTH                8
455 #define B_BEAUTY_SHORT          16
456 #define B_AUTOFGON              32
457 #define B_KNIFE                 0x80
458 #define B_PERCENTSUBD           0x40
459 #define B_MESH_X_MIRROR         0x100
460 #define B_JOINTRIA_UV           0x200
461 #define B_JOINTRIA_VCOL         0X400
462 #define B_JOINTRIA_SHARP        0X800
463 #define B_JOINTRIA_MAT          0X1000
464
465 /* DISPLAYMODE */
466 #define R_DISPLAYIMAGE  0
467 #define R_DISPLAYWIN    1
468 #define R_DISPLAYSCREEN 2
469
470 /* Gvp.flag and Gwp.flag */
471 #define VP_COLINDEX     1
472 #define VP_AREA         2
473 #define VP_SOFT         4
474 #define VP_NORMALS      8
475 #define VP_SPRAY        16
476 #define VP_MIRROR_X     32
477 #define VP_HARD         64
478 #define VP_ONLYVGROUP   128
479
480 /* Error messages */
481 #define ERROR_LIBDATA_MESSAGE "Can't edit external libdata"
482
483 #define MAX_RENDER_PASS 100
484
485 #endif