merge trunk 16118 -> 116886
[blender.git] / source / blender / blenkernel / BKE_global.h
index d54b6232c6abefc33f11b6aba0bd3dcc38e8d927..1cc336db69e640be86dabada852f7bef973426ce 100644 (file)
@@ -7,15 +7,12 @@
  *
  * $Id$ 
  *
- * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
+ * ***** BEGIN GPL LICENSE BLOCK *****
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
  * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version. The Blender
- * Foundation also sells licenses for use in proprietary software under
- * the Blender License.  See http://www.blender.org/BL/ for information
- * about this.
+ * of the License, or (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -33,7 +30,7 @@
  *
  * Contributor(s): none yet.
  *
- * ***** END GPL/BL DUAL LICENSE BLOCK *****
+ * ***** END GPL LICENSE BLOCK *****
  */
 #ifndef BKE_GLOBAL_H
 #define BKE_GLOBAL_H
@@ -62,74 +59,82 @@ struct Object;
 struct bSoundListener;
 struct BMF_Font;
 struct EditMesh;
-
-#define UNDO_MAX       64
-#define UNDO_EDIT_MAX  64
-
-typedef struct UndoBufferEdit {
-
-       void *datablock;
-       char name[64];
-
-} UndoBufferEdit;
-
+struct BME_Glob;
 
 typedef struct Global {
 
-    /* active pointers */
-    struct View3D *vd;
-    struct View2D *v2d;
-    struct SpaceIpo *sipo;
-    struct SpaceButs *buts;
-    struct SpaceImage *sima;
-    struct SpaceOops *soops;
-    struct SpaceSound *ssound;
-       struct SpaceAction *saction;    /* __NLA */
+       /* active pointers */
+       struct View3D *vd;
+       struct View2D *v2d;
+       struct SpaceIpo *sipo;
+       struct SpaceButs *buts;
+       struct SpaceImage *sima;
+       struct SpaceOops *soops;
+       struct SpaceSound *ssound;
+       struct SpaceAction *saction;            /* __NLA */
        struct SpaceNla *snla;
-    struct Main *main;
-    struct Scene *scene;                               /* denk aan file.c */
-    struct bScreen *curscreen;
-    struct Object *obedit;
+       struct Main *main;
+       struct Scene *scene;                    /* denk aan file.c */
+       struct bScreen *curscreen;
+       struct Object *obedit;
+       char editModeTitleExtra[64];
        
-    /* fonts, allocated global data */
-    struct BMF_Font *font, *fonts, *fontss;
+       /* fonts, allocated global data */
+       struct BMF_Font *font, *fonts, *fontss;
     
-    /* strings: lastsaved */
-    char ima[160], sce[160], lib[160];
+       /* strings: lastsaved */
+       char ima[256], sce[256], lib[256];
+
+       /* flag: if != 0 G.sce contains valid relative base path */
+       int relbase_valid;
+
+       /* strings of recent opend files */
+       struct ListBase recent_files;
     
-    /* totalen */
-    short totobj, totlamp, totobjsel, totcurve, totmesh, totmat;
-    int totvert, totface, totvertsel, totfacesel;
+       /* totals */
+       int totobj, totlamp, totobjsel, totcurve, totmesh;
+       int totbone, totbonesel;
+       int totvert, totedge, totface, totvertsel, totedgesel, totfacesel;
     
-    short machine, afbreek, moving, colact, zbuf;
-    short qual, background, imagewin, animspeed;
+       short afbreek, moving;
+       short qual, background;
+       short winpos, displaymode;      /* used to be in Render */
+       short rendering;                        /* to indicate render is busy, prevent renderwindow events etc */
        /**
         * The current version of Blender.
         */
-    short version;
-       short simulf, fields, order, rt;
+       short version;
+       short simulf, order, rt;
        int f;
 
-    /* Editmode lists */
+       /* Editmode lists */
        struct EditMesh *editMesh;
+       
+       /* Used for BMesh transformations */
+       struct BME_Glob *editBMesh;
     
-    float textcurs[4][2];
+       float textcurs[4][2];
     
-    /* Frank's variables */
-    int renderd;
-    int real_sfra, real_efra;
-    int        save_over;
+       /* Frank's variables */
+       int     save_over;
 
        /* Reevan's __NLA variables */
-       struct  Object  *obpose;                /* Current posable object */
        struct  ListBase edbo;                  /* Armature Editmode bones */
  
        /* Rob's variables */
        int have_quicktime;
        int ui_international;
+       int charstart;
+       int charmin;
+       int charmax;
+       struct VFont *selfont;
+       struct ListBase ttfdata;
 
-    /* this variable is written to / read from FileGlobal->fileflags */
-    int fileflags;
+       /* libtiff flag used to determine if shared library loaded for libtiff*/
+       int have_libtiff;
+
+       /* this variable is written to / read from FileGlobal->fileflags */
+       int fileflags;
     
        /* save the allowed windowstate of blender when using -W or -w */
        int windowstate;
@@ -137,85 +142,91 @@ typedef struct Global {
        /* Janco's playing ground */
        struct bSoundListener* listener;
 
-    /* Test thingy for Nzc */
-    int magic;       /* toggle use of experimental render pipe       */
+       /* Test thingy for Nzc */
        int compat;      /* toggle compatibility mode for edge rendering */
        int notonlysolid;/* T-> also edge-render transparent faces       */
-    int useRscale;   /* bitflag for using colour scaling             */
-    int useGscale;   /* bitflag for using colour scaling             */
-    int useBscale;   /* bitflag for using colour scaling             */
-    float cscale[4]; /* sliders for colour scaling                   */
-    int Rhisto;      /* flags for making histograms                  */
-    int Ghisto;
-    int Bhisto;
-
-    /* special versions */
-    short special1, special2;
-
-    int flags;
-
-    /* editmode undo - written by intrr, ported by Det. Thorn  */
-    struct UndoBufferEdit undo_edit[UNDO_EDIT_MAX+1];/* need one more for undoing first undo */
-    int undo_edit_level;                       /* index of last undo buffer created */
-    int undo_edit_highest;                     /* index of highest undo buffer in use */
-    void *undo_last_data;                      /* pointer to last datablock edited */
-    void (*undo_clear)(void);          /* pointer to function to free the undo data */
+       
+       /* ndof device found ? */
+       int ndofdevice;
+       
+       /* confusing... G.f and G.flags */
+       int flags;
 
-        
 } Global;
 
 /* **************** GLOBAL ********************* */
 
 /* G.f */
-#define G_DISABLE_OK   1
-#define G_PLAYANIM             2
-#define G_TEST_DUPLI   4
-#define G_SIMULATION   8
-#define G_BACKBUFSEL   16
-#define G_PICKSEL              32
-#define G_DRAWNORMALS  64
-#define G_DRAWFACES            128
-#define G_FACESELECT   256
-#define G_DRAW_EXT             512
-#define G_VERTEXPAINT  1024
-#define G_ALLEDGES             2048
-#define G_DEBUG                        4096
-#define G_SCENESCRIPT  8192
-#define G_PROPORTIONAL 16384
-#define G_WEIGHTPAINT  32768   /* __NLA */
-#define G_TEXTUREPAINT 65536
-#define G_NOFROZEN     (1 << 17) // frozen modules inactive
-#define G_DRAWEDGES    (1 << 18)
+#define G_DISABLE_OK   (1 <<  0)
+#define G_PLAYANIM             (1 <<  1)
+/* also uses G_FILE_AUTOPLAY */
+#define G_SIMULATION   (1 <<  3)
+#define G_BACKBUFSEL   (1 <<  4)
+#define G_PICKSEL              (1 <<  5)
+#define G_DRAWNORMALS  (1 <<  6)
+#define G_DRAWFACES            (1 <<  7)
+#define G_FACESELECT   (1 <<  8)
+#define G_DRAW_EXT             (1 <<  9)
+#define G_VERTEXPAINT  (1 << 10)
+#define G_ALLEDGES             (1 << 11)
+#define G_DEBUG                        (1 << 12)
+#define G_DOSCRIPTLINKS (1 << 13)
+#define G_DRAW_VNORMALS        (1 << 14)
+#define G_WEIGHTPAINT  (1 << 15)       
+#define G_TEXTUREPAINT (1 << 16)
+/* #define G_NOFROZEN  (1 << 17) also removed */
+#define G_GREASEPENCIL         (1 << 17)
+#define G_DRAWEDGES            (1 << 18)
 #define G_DRAWCREASES  (1 << 19)
 #define G_DRAWSEAMS     (1 << 20)
 #define G_HIDDENEDGES   (1 << 21)
+/* Measurement info Drawing */
+#define G_DRAW_EDGELEN  (1 << 22) 
+#define G_DRAW_FACEAREA (1 << 23)
+#define G_DRAW_EDGEANG  (1 << 24)
+
+/* #define G_RECORDKEYS        (1 << 25)   also removed */
+/*#ifdef WITH_VERSE*/
+#define G_VERSE_CONNECTED  (1 << 26)
+#define G_DRAW_VERSE_DEBUG (1 << 27)
+/*#endif*/
+#define G_DRAWSHARP     (1 << 28) /* draw edges with the sharp flag */
+#define G_SCULPTMODE    (1 << 29)
+#define G_PARTICLEEDIT (1 << 30)
+
+/* #define G_AUTOMATKEYS       (1 << 30)   also removed */
+#define G_HIDDENHANDLES (1 << 31) /* used for curves only */
+#define G_DRAWBWEIGHTS (1 << 31)
+
+/* macro for testing face select mode
+ * Texture paint could be removed since selected faces are not used
+ * however hiding faces is useful */
+#define FACESEL_PAINT_TEST ((G.f&G_FACESELECT) && (G.f & (G_VERTEXPAINT|G_WEIGHTPAINT|G_TEXTUREPAINT))) 
 
 /* G.fileflags */
 
-#define G_AUTOPACK_BIT                  0
-#define G_FILE_COMPRESS_BIT             1
-#define G_FILE_AUTOPLAY_BIT             2
-#define G_FILE_ENABLE_ALL_FRAMES_BIT    3
-#define G_FILE_SHOW_DEBUG_PROPS_BIT     4
-#define G_FILE_SHOW_FRAMERATE_BIT       5
-#define G_FILE_SHOW_PROFILE_BIT         6
-#define G_FILE_LOCK_BIT                 7
-#define G_FILE_SIGN_BIT                 8
-#define G_FILE_PUBLISH_BIT                             9
-#define G_FILE_NO_UI_BIT                               10
-
-
-#define G_AUTOPACK               (1 << G_AUTOPACK_BIT)
-#define G_FILE_COMPRESS          (1 << G_FILE_COMPRESS_BIT)
-#define G_FILE_AUTOPLAY          (1 << G_FILE_AUTOPLAY_BIT)
-#define G_FILE_ENABLE_ALL_FRAMES (1 << G_FILE_ENABLE_ALL_FRAMES_BIT)
-#define G_FILE_SHOW_DEBUG_PROPS  (1 << G_FILE_SHOW_DEBUG_PROPS_BIT)
-#define G_FILE_SHOW_FRAMERATE    (1 << G_FILE_SHOW_FRAMERATE_BIT)
-#define G_FILE_SHOW_PROFILE      (1 << G_FILE_SHOW_PROFILE_BIT)
-#define G_FILE_LOCK              (1 << G_FILE_LOCK_BIT)
-#define G_FILE_SIGN              (1 << G_FILE_SIGN_BIT)
-#define G_FILE_PUBLISH                  (1 << G_FILE_PUBLISH_BIT)
-#define G_FILE_NO_UI                    (1 << G_FILE_NO_UI_BIT)
+#define G_AUTOPACK               (1 << 0)
+#define G_FILE_COMPRESS          (1 << 1)
+#define G_FILE_AUTOPLAY          (1 << 2)
+#define G_FILE_ENABLE_ALL_FRAMES (1 << 3)
+#define G_FILE_SHOW_DEBUG_PROPS  (1 << 4)
+#define G_FILE_SHOW_FRAMERATE    (1 << 5)
+#define G_FILE_SHOW_PROFILE      (1 << 6)
+#define G_FILE_LOCK              (1 << 7)
+#define G_FILE_SIGN              (1 << 8)
+#define G_FIle_PUBLISH                  (1 << 9)
+#define G_FILE_NO_UI                    (1 << 10)
+#define G_FILE_GAME_TO_IPO              (1 << 11)
+#define G_FILE_GAME_MAT                         (1 << 12)
+#define G_FILE_DISPLAY_LISTS    (1 << 13)
+#define G_FILE_SHOW_PHYSICS             (1 << 14)
+#define G_FILE_GAME_MAT_GLSL    (1 << 15)
+#define G_FILE_GLSL_NO_LIGHTS   (1 << 16)
+#define G_FILE_GLSL_NO_SHADERS  (1 << 17)
+#define G_FILE_GLSL_NO_SHADOWS  (1 << 18)
+#define G_FILE_GLSL_NO_RAMPS    (1 << 19)
+#define G_FILE_GLSL_NO_NODES    (1 << 20)
+#define G_FILE_GLSL_NO_EXTRA_TEX (1 << 21)
 
 /* G.windowstate */
 #define G_WINDOWSTATE_USERDEF          0
@@ -228,10 +239,6 @@ typedef struct Global {
 #define G_QUIT         8
 #define G_SETSCENE     16
 
-/* G.flags: double? */
-#define G_FLAGS_AUTOPLAY_BIT   2 
-#define G_FLAGS_AUTOPLAY               (1 << G_FLAGS_AUTOPLAY_BIT)
-
 /* G.qual */
 #define R_SHIFTKEY             1
 #define L_SHIFTKEY             2
@@ -249,6 +256,12 @@ typedef struct Global {
 #define L_ENDIAN       1
 #define B_ENDIAN       0
 
+/* G.moving, signals drawing in (3d) window to denote transform */
+#define G_TRANSFORM_OBJ                        1
+#define G_TRANSFORM_EDIT               2
+#define G_TRANSFORM_MANIP              4
+#define G_TRANSFORM_PARTICLE   8
+
 /* G.special1 */
 
 /* Memory is allocated where? blender.c */
@@ -260,3 +273,4 @@ extern Global G;
        
 #endif
 
+