doxygen: add newline after \file
[blender.git] / source / blender / editors / include / ED_screen_types.h
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  *
16  * The Original Code is Copyright (C) 2008 Blender Foundation.
17  * All rights reserved.
18  */
19
20 /** \file
21  * \ingroup editors
22  */
23
24 #ifndef __ED_SCREEN_TYPES_H__
25 #define __ED_SCREEN_TYPES_H__
26
27 /* ----------------------------------------------------- */
28
29 /* for animplayer */
30 typedef struct ScreenAnimData {
31         ARegion *ar;            /* do not read from this, only for comparing if region exists */
32         short redraws;
33         short refresh;
34         short flag;             /* flags for playback */
35         int sfra;               /* frame that playback was started from */
36         int nextfra;            /* next frame to go to (when ANIMPLAY_FLAG_USE_NEXT_FRAME is set) */
37         double last_duration;   /* used for frame dropping */
38         bool from_anim_edit;    /* playback was invoked from animation editor */
39 } ScreenAnimData;
40
41 /* for animplayer */
42 enum {
43         /* user-setting - frame range is played backwards */
44         ANIMPLAY_FLAG_REVERSE       = (1 << 0),
45         /* temporary - playback just jumped to the start/end */
46         ANIMPLAY_FLAG_JUMPED        = (1 << 1),
47         /* drop frames as needed to maintain framerate */
48         ANIMPLAY_FLAG_SYNC          = (1 << 2),
49         /* don't drop frames (and ignore SCE_FRAME_DROP flag) */
50         ANIMPLAY_FLAG_NO_SYNC       = (1 << 3),
51         /* use nextfra at next timer update */
52         ANIMPLAY_FLAG_USE_NEXT_FRAME = (1 << 4),
53 };
54
55 /* ----------------------------------------------------- */
56
57 #define REDRAW_FRAME_AVERAGE 8
58
59 /* for playback framerate info
60  * stored during runtime as scene->fps_info
61  */
62 typedef struct ScreenFrameRateInfo {
63         double redrawtime;
64         double lredrawtime;
65         float redrawtimes_fps[REDRAW_FRAME_AVERAGE];
66         short redrawtime_index;
67 } ScreenFrameRateInfo;
68
69 /* ----------------------------------------------------- */
70
71 /* Enum for Action Zone Edges. Which edge of area is action zone. */
72 typedef enum {
73         /** Region located on the left, _right_ edge is action zone.
74          * Region minimized to the top left */
75         AE_RIGHT_TO_TOPLEFT,
76         /** Region located on the right, _left_ edge is action zone.
77          * Region minimized to the top right */
78         AE_LEFT_TO_TOPRIGHT,
79         /** Region located at the bottom, _top_ edge is action zone.
80          * Region minimized to the bottom right */
81         AE_TOP_TO_BOTTOMRIGHT,
82         /** Region located at the top, _bottom_ edge is action zone.
83          * Region minimized to the top left */
84         AE_BOTTOM_TO_TOPLEFT
85 } AZEdge;
86
87 typedef enum {
88         AZ_SCROLL_VERT,
89         AZ_SCROLL_HOR,
90 } AZScrollDirection;
91
92 /* for editing areas/regions */
93 typedef struct AZone {
94         struct AZone *next, *prev;
95         ARegion *ar;
96         int type;
97
98         union {
99                 /* region-azone, which of the edges (only for AZONE_REGION) */
100                 AZEdge edge;
101                 AZScrollDirection direction;
102         };
103         /* for draw */
104         short x1, y1, x2, y2;
105         /* for clip */
106         rcti rect;
107         /* for fade in/out */
108         float alpha;
109 } AZone;
110
111 /* actionzone type */
112 enum {
113         /* corner widgets for splitting areas */
114         AZONE_AREA = 1,
115         /* when a region is collapsed, draw a handle to expose */
116         AZONE_REGION,
117         /* when in editor fullscreen draw a corner to go to normal mode */
118         AZONE_FULLSCREEN,
119         /* Hotspot azone around scrollbars to show/hide them. */
120         AZONE_REGION_SCROLL,
121 };
122
123 #endif /* __ED_SCREEN_TYPES_H__ */