UI: Tweak Sequencer Sidebar panels
[blender.git] / source / blender / makesdna / DNA_image_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) 2001-2002 by NaN Holding BV.
17  * All rights reserved.
18  */
19
20 /** \file
21  * \ingroup DNA
22  */
23
24 #ifndef __DNA_IMAGE_TYPES_H__
25 #define __DNA_IMAGE_TYPES_H__
26
27 #include "DNA_defs.h"
28 #include "DNA_ID.h"
29 #include "DNA_color_types.h" /* for color management */
30
31 struct GPUTexture;
32 struct MovieCache;
33 struct PackedFile;
34 struct RenderResult;
35 struct Scene;
36 struct anim;
37
38 /* ImageUser is in Texture, in Nodes, Background Image, Image Window, .... */
39 /* should be used in conjunction with an ID * to Image. */
40 typedef struct ImageUser {
41   /** To retrieve render result. */
42   struct Scene *scene;
43
44   /** Movies, sequences: current to display. */
45   int framenr;
46   /** Total amount of frames to use. */
47   int frames;
48   /** Offset within movie, start frame in global time. */
49   int offset, sfra;
50   /** Cyclic flag. */
51   char _pad0, cycl;
52   char ok;
53
54   /** Multiview current eye - for internal use of drawing routines. */
55   char multiview_eye;
56   short pass;
57   char _pad1[2];
58
59   /** Listbase indices, for menu browsing or retrieve buffer. */
60   short multi_index, view, layer;
61   short flag;
62 } ImageUser;
63
64 typedef struct ImageAnim {
65   struct ImageAnim *next, *prev;
66   struct anim *anim;
67 } ImageAnim;
68
69 typedef struct ImageView {
70   struct ImageView *next, *prev;
71   /** MAX_NAME. */
72   char name[64];
73   /** 1024 = FILE_MAX. */
74   char filepath[1024];
75 } ImageView;
76
77 typedef struct ImagePackedFile {
78   struct ImagePackedFile *next, *prev;
79   struct PackedFile *packedfile;
80   /** 1024 = FILE_MAX. */
81   char filepath[1024];
82 } ImagePackedFile;
83
84 typedef struct RenderSlot {
85   struct RenderSlot *next, *prev;
86   /** 64 = MAX_NAME. */
87   char name[64];
88   struct RenderResult *render;
89 } RenderSlot;
90
91 /* iuser->flag */
92 #define IMA_ANIM_ALWAYS (1 << 0)
93 /* #define IMA_UNUSED_1         (1 << 1) */
94 /* #define IMA_UNUSED_2         (1 << 2) */
95 #define IMA_NEED_FRAME_RECALC (1 << 3)
96 #define IMA_SHOW_STEREO (1 << 4)
97
98 enum {
99   TEXTARGET_TEXTURE_2D = 0,
100   TEXTARGET_TEXTURE_CUBE_MAP = 1,
101   TEXTARGET_COUNT = 2,
102 };
103
104 typedef struct Image {
105   ID id;
106
107   /** File path, 1024 = FILE_MAX. */
108   char name[1024];
109
110   /** Not written in file. */
111   struct MovieCache *cache;
112   /** Not written in file 2 = TEXTARGET_COUNT. */
113   struct GPUTexture *gputexture[2];
114
115   /* sources from: */
116   ListBase anims;
117   struct RenderResult *rr;
118
119   ListBase renderslots;
120   short render_slot, last_render_slot;
121
122   int flag;
123   short source, type;
124   int lastframe;
125
126   /* GPU texture flag. */
127   short gpuflag;
128   char _pad2[2];
129   int gpuframenr;
130
131   /** Deprecated. */
132   struct PackedFile *packedfile DNA_DEPRECATED;
133   struct ListBase packedfiles;
134   struct PreviewImage *preview;
135
136   int lastused;
137   short ok;
138   char _pad4[6];
139
140   /* for generated images */
141   int gen_x, gen_y;
142   char gen_type, gen_flag;
143   short gen_depth;
144   float gen_color[4];
145
146   /* display aspect - for UV editing images resized for faster openGL display */
147   float aspx, aspy;
148
149   /* color management */
150   ColorManagedColorspaceSettings colorspace_settings;
151   char alpha_mode;
152
153   char _pad[5];
154
155   /* Multiview */
156   /** For viewer node stereoscopy. */
157   char eye;
158   char views_format;
159   /** ImageView. */
160   ListBase views;
161   struct Stereo3dFormat *stereo3d_format;
162 } Image;
163
164 /* **************** IMAGE ********************* */
165
166 /* Image.flag */
167 enum {
168   IMA_FLAG_UNUSED_0 = (1 << 0), /* cleared */
169   IMA_FLAG_UNUSED_1 = (1 << 1), /* cleared */
170 #ifdef DNA_DEPRECATED
171   IMA_DO_PREMUL = (1 << 2),
172 #endif
173   IMA_FLAG_UNUSED_4 = (1 << 4), /* cleared */
174   IMA_NOCOLLECT = (1 << 5),
175   IMA_FLAG_UNUSED_6 = (1 << 6), /* cleared */
176   IMA_OLD_PREMUL = (1 << 7),
177   IMA_FLAG_UNUSED_8 = (1 << 8), /* cleared */
178   IMA_USED_FOR_RENDER = (1 << 9),
179   /** For image user, but these flags are mixed. */
180   IMA_USER_FRAME_IN_RANGE = (1 << 10),
181   IMA_VIEW_AS_RENDER = (1 << 11),
182   IMA_FLAG_UNUSED_12 = (1 << 12), /* cleared */
183   IMA_DEINTERLACE = (1 << 13),
184   IMA_USE_VIEWS = (1 << 14),
185   IMA_FLAG_UNUSED_15 = (1 << 15), /* cleared */
186   IMA_FLAG_UNUSED_16 = (1 << 16), /* cleared */
187 };
188
189 /* Image.gpuflag */
190 enum {
191   /** GPU texture needs to be refreshed. */
192   IMA_GPU_REFRESH = (1 << 0),
193   /** All mipmap levels in OpenGL texture set? */
194   IMA_GPU_MIPMAP_COMPLETE = (1 << 1),
195 };
196
197 /* Image.source, where the image comes from */
198 enum {
199   IMA_SRC_CHECK = 0,
200   IMA_SRC_FILE = 1,
201   IMA_SRC_SEQUENCE = 2,
202   IMA_SRC_MOVIE = 3,
203   IMA_SRC_GENERATED = 4,
204   IMA_SRC_VIEWER = 5,
205 };
206
207 /* Image.type, how to handle or generate the image */
208 enum {
209   IMA_TYPE_IMAGE = 0,
210   IMA_TYPE_MULTILAYER = 1,
211   /* generated */
212   IMA_TYPE_UV_TEST = 2,
213   /* viewers */
214   IMA_TYPE_R_RESULT = 4,
215   IMA_TYPE_COMPOSITE = 5,
216 };
217
218 /* Image.gen_type */
219 enum {
220   IMA_GENTYPE_BLANK = 0,
221   IMA_GENTYPE_GRID = 1,
222   IMA_GENTYPE_GRID_COLOR = 2,
223 };
224
225 /* render */
226 #define IMA_MAX_RENDER_TEXT (1 << 9)
227
228 /* Image.gen_flag */
229 enum {
230   IMA_GEN_FLOAT = 1,
231 };
232
233 /* Image.alpha_mode */
234 enum {
235   IMA_ALPHA_STRAIGHT = 0,
236   IMA_ALPHA_PREMUL = 1,
237   IMA_ALPHA_CHANNEL_PACKED = 2,
238   IMA_ALPHA_IGNORE = 3,
239 };
240
241 #endif