own fix r34446, was incorrect, fixed properly now.
[blender.git] / source / blender / makesdna / DNA_view2d_types.h
index e60fe90fbb92c7ff1b280514582f3a99e81bd81a..75ad1e644d102f95d08f46b66c9aa8953f48042e 100644 (file)
@@ -17,7 +17,7 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  *
  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
  * All rights reserved.
@@ -45,8 +45,9 @@ typedef struct View2D {
        float minzoom, maxzoom;                 /* self explanatory. allowable zoom factor range (only when keepzoom set) */
        
        short scroll;                                   /* scroll - scrollbars to display (bitflag) */
+       short scroll_ui;                                /* scroll_ui - temp settings used for UI drawing of scrollers */
+       
        short keeptot;                                  /* keeptot - 'cur' rect cannot move outside the 'tot' rect? */
-       short keepaspect;                               /* keepaspect - need to maintain aspect ratio (0 or 1 boolean only) */
        short keepzoom;                                 /* keepzoom - axes that zooming cannot occur on, and also clamp within zoom-limits */
        short keepofs;                                  /* keepofs - axes that translation is not allowed to occur on */
        
@@ -57,34 +58,55 @@ typedef struct View2D {
        short oldwinx, oldwiny;                 /* storage of previous winx/winy values encountered by UI_view2d_curRect_validate(), for keepaspect */
        
        short around;                                   /* pivot point for transforms (rotate and scale) */
-       float cursor[2];                                /* only used in the UV view for now (for 2D-cursor) */
+
+       float *tab_offset;                              /* different offset per tab, for buttons */
+       int tab_num;                                    /* number of tabs stored */
+       int tab_cur;                                    /* current tab */
 } View2D;
 
 /* ---------------------------------- */
 
 /* view zooming restrictions, per axis (v2d->keepzoom) */
-#define V2D_KEEPZOOM           0x0001
+       /* zoom is clamped to lie within limits set by minzoom and maxzoom */
+#define V2D_LIMITZOOM          0x0001
+       /* aspect ratio is maintained on view resize */
+#define V2D_KEEPASPECT         0x0002
+       /* zoom is kept when the window resizes */
+#define V2D_KEEPZOOM           0x0004
+       /* zooming on x-axis is not allowed */
 #define V2D_LOCKZOOM_X         0x0100
+       /* zooming on y-axis is not allowed */
 #define V2D_LOCKZOOM_Y         0x0200
 
 /* view panning restrictions, per axis (v2d->keepofs) */
+       /* panning on x-axis is not allowed */
 #define V2D_LOCKOFS_X  (1<<1)
+       /* panning on y-axis is not allowed */
 #define V2D_LOCKOFS_Y  (1<<2)
+       /* on resize, keep the x offset */
+#define V2D_KEEPOFS_X  (1<<3)
+       /* on resize, keep the y offset */
+#define V2D_KEEPOFS_Y  (1<<4)
+
+/* view extent restrictions (v2d->keeptot) */
+       /* 'cur' view can be out of extents of 'tot' */
+#define V2D_KEEPTOT_FREE               0
+       /* 'cur' rect is adjusted so that it satisfies the extents of 'tot', with some compromises */
+#define V2D_KEEPTOT_BOUNDS             1
+       /* 'cur' rect is moved so that the 'minimum' bounds of the 'tot' rect are always respected (particularly in x-axis) */
+#define V2D_KEEPTOT_STRICT             2
 
 /* general refresh settings (v2d->flag) */
        /* global view2d horizontal locking (for showing same time interval) */
-#define V2D_VIEWSYNC_X         (1<<0)
-       /* within region view2d vertical locking */
-#define V2D_VIEWSYNC_Y         (1<<1)
-
-
-/* scroller thickness */
-#define V2D_SCROLL_HEIGHT      16
-#define V2D_SCROLL_WIDTH       16
-
-/* half the size (in pixels) of scroller 'handles' */
-#define V2D_SCROLLER_HANDLE_SIZE       5
-
+#define V2D_VIEWSYNC_SCREEN_TIME       (1<<0)
+       /* within area (i.e. between regions) view2d vertical locking */
+#define V2D_VIEWSYNC_AREA_VERTICAL     (1<<1)
+       /* apply pixel offsets on x-axis when setting view matrices */
+#define V2D_PIXELOFS_X                         (1<<2)
+       /* apply pixel offsets on y-axis when setting view matrices */
+#define V2D_PIXELOFS_Y                         (1<<3)
+       /* view settings need to be set still... */
+#define V2D_IS_INITIALISED                     (1<<10)
 
 /* scroller flags for View2D (v2d->scroll) */
        /* left scrollbar */
@@ -94,18 +116,23 @@ typedef struct View2D {
        /* horizontal scrollbar */
 #define V2D_SCROLL_TOP                                 (1<<2)
 #define V2D_SCROLL_BOTTOM                      (1<<3)
-#define V2D_SCROLL_HORIZONTAL                  (V2D_SCROLL_TOP|V2D_SCROLL_BOTTOM)
-       /* special hacks for outliner hscroll - prevent hanging older versions of Blender */
+       /* special hack for outliner hscroll - prevent hanging older versions of Blender */
 #define V2D_SCROLL_BOTTOM_O            (1<<4)
-#define V2D_SCROLL_HORIZONTAL_O        (V2D_SCROLL_TOP|V2D_SCROLL_BOTTOM_O)
+#define V2D_SCROLL_HORIZONTAL                  (V2D_SCROLL_TOP|V2D_SCROLL_BOTTOM|V2D_SCROLL_BOTTOM_O)
        /* scale markings - vertical */
-#define V2D_SCROLL_SCALE_LEFT          (1<<5)
-#define V2D_SCROLL_SCALE_RIGHT         (1<<6)
-#define V2D_SCROLL_SCALE_VERTICAL      (V2D_SCROLL_SCALE_LEFT|V2D_SCROLL_SCALE_RIGHT)
-       /* scale markings - horizontal */
-#define V2D_SCROLL_SCALE_BOTTOM                (1<<7)
-#define V2D_SCROLL_SCALE_TOP           (1<<8)  
-#define V2D_SCROLL_SCALE_HORIZONTAL    (V2D_SCROLL_SCALE_BOTTOM|V2D_SCROLL_SCALE_TOP)
+#define V2D_SCROLL_SCALE_VERTICAL      (1<<5)
+       /* scale markings - horizontal */       
+#define V2D_SCROLL_SCALE_HORIZONTAL    (1<<6)
+       /* induce hiding of scrollbars - set by region drawing in response to size of region */
+#define V2D_SCROLL_VERTICAL_HIDE       (1<<7)          
+#define V2D_SCROLL_HORIZONTAL_HIDE     (1<<8)
+       /* scrollbar extends beyond its available window - set when calculating scrollbars for drawing */
+#define V2D_SCROLL_VERTICAL_FULLR      (1<<9)  
+#define V2D_SCROLL_HORIZONTAL_FULLR (1<<10)    
+
+/* scroll_ui, activate flag for drawing */
+#define V2D_SCROLL_H_ACTIVE                    (1<<0)
+#define V2D_SCROLL_V_ACTIVE                    (1<<1)
 
 /* alignment flags for totrect, flags use 'shading-out' convention (v2d->align) */
        /* all quadrants free */