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