View2D - Initial commit of Pan-View Operator
[blender.git] / source / blender / makesdna / DNA_view2d_types.h
1 /**
2  * blenlib/DNA_view2d_types.h (mar-2001 nzc)
3  *      
4  * $Id$ 
5  *
6  * ***** BEGIN GPL LICENSE BLOCK *****
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License
10  * as published by the Free Software Foundation; either version 2
11  * of the License, or (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software Foundation,
20  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
21  *
22  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
23  * All rights reserved.
24  *
25  * The Original Code is: all of this file.
26  *
27  * Contributor(s): Joshua Leung
28  *
29  * ***** END GPL LICENSE BLOCK *****
30  */
31 #ifndef DNA_VIEW2D_TYPES_H
32 #define DNA_VIEW2D_TYPES_H
33
34 #include "DNA_vec_types.h"
35
36 /* ---------------------------------- */
37
38 /* View 2D data - stored per region */
39 typedef struct View2D {
40         rctf tot, cur;                                  /* tot - area that data can be drawn in; cur - region of tot that is visible in viewport */
41         rcti vert, hor;                                 /* vert - vertical scrollbar region; hor - horizontal scrollbar region */
42         rcti mask;                                              /* mask - region (in screenspace) within which 'cur' can be viewed */
43         
44         float min[2], max[2];                   /* min/max sizes? */
45         float minzoom, maxzoom;                 /* self explanatory. allowable zoom factor range */
46         
47         short scroll;                                   /* scroll - scrollbars to display (bitflag) */
48         short keeptot;                                  /* keeptot - 'tot' rect  */
49         short keepaspect, keepzoom;             /* axes that zoomimg cannot occur on, and need to maintain aspect ratio */
50         short keepofs;                                  /* keepofs - axes that translation is not allowed to occur on */
51         
52         short flag;                                             /* settings */
53         
54         short oldwinx, oldwiny;                 /* storage of previous winx/winy values encountered by UI_view2d_enforce_status(), for keepaspect */
55         
56         float cursor[2];                                /* only used in the UV view for now (for 2D-cursor) */
57         short around;                                   /* pivot point for transforms (rotate and scale) */
58         char pad[6];
59 } View2D;
60
61 /* ---------------------------------- */
62
63 /* v2d->keepzoom */
64 #define V2D_KEEPZOOM    0x0001  
65 #define V2D_LOCKZOOM_X  0x0100
66 #define V2D_LOCKZOOM_Y  0x0200
67
68 /* v2d->keepofs */
69 #define V2D_LOCKOFS_X   (1<<1)
70 #define V2D_LOCKOFS_Y   (1<<2)
71
72 /* event codes for locking function */
73 #define V2D_LOCK_COPY           1
74 #define V2D_LOCK_REDRAW         2
75
76 /* v2d->flag */
77 #define V2D_VIEWLOCK    (1<<0)
78
79 /* scrollbar thickness */
80         /* height */
81 #define SCROLLH 16
82         /* width */
83 #define SCROLLB 16
84
85 #endif
86