Welcome to mirror list, hosted at ThFree Co, Russian Federation.

UI_view2d.h « include « editors « blender « source - git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 2705c5de4f6e0b63125abb95f9023ac185fcba25 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/**
 * $Id$
 *
 * ***** 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. 
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * 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.
 *
 * The Original Code is Copyright (C) 2008 Blender Foundation.
 * All rights reserved.
 *
 * 
 * Contributor(s): Blender Foundation, Joshua Leung
 *
 *
 * Generic 2d view with should allow drawing grids,
 * panning, zooming, scrolling, .. 
 * ***** END GPL LICENSE BLOCK *****
 */

#ifndef UI_VIEW2D_H
#define UI_VIEW2D_H

/* ------------------------------------------ */
/* Settings and Defines: 					*/

/* generic value to use when coordinate lies out of view when converting */
#define V2D_IS_CLIPPED	12000

/* 'dummy' argument to pass when argument is irrelevant */
#define V2D_ARG_DUMMY		-1


/* grid-units (for drawing time) */
#define V2D_UNIT_SECONDS	0
#define V2D_UNIT_FRAMES		1

/* grid-units (for drawing values) */
#define V2D_UNIT_VALUES		2
#define V2D_UNIT_DEGREES	3
#define V2D_UNIT_TIME		4
#define V2D_UNIT_SECONDSSEQ	5

/* clamping of grid values to whole numbers */
#define V2D_GRID_NOCLAMP	0
#define V2D_GRID_CLAMP		1


/* flags for grid-lines to draw */
#define V2D_HORIZONTAL_LINES		(1<<0)
#define V2D_VERTICAL_LINES			(1<<1)
#define V2D_HORIZONTAL_AXIS			(1<<2)
#define V2D_VERTICAL_AXIS			(1<<3)
#define V2D_HORIZONTAL_FINELINES	(1<<4)

#define V2D_GRIDLINES_MAJOR			(V2D_VERTICAL_LINES|V2D_VERTICAL_AXIS|V2D_HORIZONTAL_LINES|V2D_HORIZONTAL_AXIS)
#define V2D_GRIDLINES_ALL			(V2D_GRIDLINES_MAJOR|V2D_HORIZONTAL_FINELINES)


/* ------------------------------------------ */
/* Macros:								*/

/* test if mouse in a scrollbar */
#define IN_2D_VERT_SCROLL(v2d, co) (BLI_in_rcti(&v2d->vert, co[0], co[1]))
#define IN_2D_HORIZ_SCROLL(v2d, co) (BLI_in_rcti(&v2d->hor, co[0], co[1]))

/* ------------------------------------------ */
/* Type definitions: 						*/

struct View2D;
struct View2DGrid;
struct View2DScrollers;

struct wmWindowManager;
struct bContext;

typedef struct View2DGrid View2DGrid;
typedef struct View2DScrollers View2DScrollers;

/* ----------------------------------------- */
/* Prototypes:						    */

/* refresh and validation (of view rects) */
void UI_view2d_size_update(struct View2D *v2d, int winx, int winy);
void UI_view2d_curRect_validate(struct View2D *v2d);
void UI_view2d_curRect_reset(struct View2D *v2d);
void UI_view2d_totRect_set(struct View2D *v2d, int width, int height);

/* view matrix operations */
void UI_view2d_view_ortho(const struct bContext *C, struct View2D *v2d);
void UI_view2d_view_orthoSpecial(const struct bContext *C, struct View2D *v2d, short xaxis);
void UI_view2d_view_restore(const struct bContext *C);

/* grid drawing */
View2DGrid *UI_view2d_grid_calc(const struct bContext *C, struct View2D *v2d, short xunits, short xclamp, short yunits, short yclamp, int winx, int winy);
void UI_view2d_grid_draw(const struct bContext *C, struct View2D *v2d, View2DGrid *grid, int flag);
void UI_view2d_grid_free(View2DGrid *grid);

/* scrollbar drawing */
View2DScrollers *UI_view2d_scrollers_calc(const struct bContext *C, struct View2D *v2d, short xunits, short xclamp, short yunits, short yclamp);
void UI_view2d_scrollers_draw(const struct bContext *C, struct View2D *v2d, View2DScrollers *scrollers);
void UI_view2d_scrollers_free(View2DScrollers *scrollers);

/* coordinate conversion */
void UI_view2d_region_to_view(struct View2D *v2d, int x, int y, float *viewx, float *viewy);
void UI_view2d_view_to_region(struct View2D *v2d, float x, float y, short *regionx, short *regiony);
void UI_view2d_to_region_no_clip(struct View2D *v2d, float x, float y, short *regionx, short *region_y);

/* utilities */
struct View2D *UI_view2d_fromcontext(const struct bContext *C);
struct View2D *UI_view2d_fromcontext_rwin(const struct bContext *C);
void UI_view2d_getscale(struct View2D *v2d, float *x, float *y);
void UI_view2d_header_default(struct View2D *v2d);

/* operators */
void ui_view2d_operatortypes(void);
void UI_view2d_keymap(struct wmWindowManager *wm);

#endif /* UI_VIEW2D_H */