Preferences: remove author field
[blender.git] / source / blender / makesdna / DNA_image_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) 2001-2002 by NaN Holding BV.
19  * All rights reserved.
20  *
21  * The Original Code is: all of this file.
22  *
23  * Contributor(s): none yet.
24  *
25  * ***** END GPL LICENSE BLOCK *****
26  */
27
28 /** \file DNA_image_types.h
29  *  \ingroup DNA
30  */
31
32 #ifndef __DNA_IMAGE_TYPES_H__
33 #define __DNA_IMAGE_TYPES_H__
34
35 #include "DNA_defs.h"
36 #include "DNA_ID.h"
37 #include "DNA_color_types.h"  /* for color management */
38
39 struct PackedFile;
40 struct Scene;
41 struct anim;
42 struct MovieCache;
43 struct RenderResult;
44 struct GPUTexture;
45
46 /* ImageUser is in Texture, in Nodes, Background Image, Image Window, .... */
47 /* should be used in conjunction with an ID * to Image. */
48 typedef struct ImageUser {
49         /** To retrieve render result. */
50         struct Scene *scene;
51
52         /** Movies, sequences: current to display. */
53         int framenr;
54         /** Total amount of frames to use. */
55         int frames;
56         /** Offset within movie, start frame in global time. */
57         int offset, sfra;
58         /** Cyclic flag. */
59         char _pad, cycl;
60         char ok;
61
62         /** Multiview current eye - for internal use of drawing routines. */
63         char multiview_eye;
64         short pass;
65         short pad;
66
67         /** Listbase indices, for menu browsing or retrieve buffer. */
68         short multi_index, view, layer;
69         short flag;
70 } ImageUser;
71
72 typedef struct ImageAnim {
73         struct ImageAnim *next, *prev;
74         struct anim *anim;
75 } ImageAnim;
76
77 typedef struct ImageView {
78         struct ImageView *next, *prev;
79         /** MAX_NAME. */
80         char name[64];
81         /** 1024 = FILE_MAX. */
82         char filepath[1024];
83 } ImageView;
84
85 typedef struct ImagePackedFile {
86         struct ImagePackedFile *next, *prev;
87         struct PackedFile *packedfile;
88         /** 1024 = FILE_MAX. */
89         char filepath[1024];
90 } ImagePackedFile;
91
92 typedef struct RenderSlot {
93         struct RenderSlot *next, *prev;
94         /** 64 = MAX_NAME. */
95         char name[64];
96         struct RenderResult *render;
97 } RenderSlot;
98
99 /* iuser->flag */
100 #define IMA_ANIM_ALWAYS         (1 << 0)
101 #define IMA_ANIM_REFRESHED      (1 << 1)
102 /* #define IMA_DO_PREMUL        (1 << 2) */
103 #define IMA_NEED_FRAME_RECALC   (1 << 3)
104 #define IMA_SHOW_STEREO         (1 << 4)
105
106 enum {
107         TEXTARGET_TEXTURE_2D = 0,
108         TEXTARGET_TEXTURE_CUBE_MAP = 1,
109         TEXTARGET_COUNT = 2
110 };
111
112 typedef struct Image {
113         ID id;
114
115         /** File path, 1024 = FILE_MAX. */
116         char name[1024];
117
118         /** Not written in file. */
119         struct MovieCache *cache;
120         /** Not written in file 2 = TEXTARGET_COUNT. */
121         struct GPUTexture *gputexture[2];
122
123         /* sources from: */
124         ListBase anims;
125         struct RenderResult *rr;
126
127         ListBase renderslots;
128         short render_slot, last_render_slot;
129
130         int flag;
131         short source, type;
132         int lastframe;
133
134         /* texture page */
135         short tpageflag;
136         short pad2;
137         unsigned int pad3;
138
139         /** Deprecated. */
140         struct PackedFile *packedfile DNA_DEPRECATED;
141         struct ListBase packedfiles;
142         struct PreviewImage *preview;
143
144         int lastused;
145         short ok;
146         short pad4[3];
147
148         /* for generated images */
149         int gen_x, gen_y;
150         char gen_type, gen_flag;
151         short gen_depth;
152         float gen_color[4];
153
154         /* display aspect - for UV editing images resized for faster openGL display */
155         float aspx, aspy;
156
157         /* color management */
158         ColorManagedColorspaceSettings colorspace_settings;
159         char alpha_mode;
160
161         char pad[5];
162
163         /* Multiview */
164         /** For viewer node stereoscopy. */
165         char eye;
166         char views_format;
167         /** ImageView. */
168         ListBase views;
169         struct Stereo3dFormat *stereo3d_format;
170 } Image;
171
172
173 /* **************** IMAGE ********************* */
174
175 /* Image.flag */
176 enum {
177         IMA_FLAG_DEPRECATED_0   = (1 << 0),  /* cleared */
178         IMA_FLAG_DEPRECATED_1   = (1 << 1),  /* cleared */
179 #ifdef DNA_DEPRECATED
180         IMA_DO_PREMUL           = (1 << 2),
181 #endif
182         IMA_FLAG_DEPRECATED_4   = (1 << 4),  /* cleared */
183         IMA_NOCOLLECT           = (1 << 5),
184         IMA_FLAG_DEPRECATED_6   = (1 << 6),  /* cleared */
185         IMA_OLD_PREMUL          = (1 << 7),
186         IMA_FLAG_DEPRECATED_8   = (1 << 8),  /* cleared */
187         IMA_USED_FOR_RENDER     = (1 << 9),
188         IMA_USER_FRAME_IN_RANGE = (1 << 10), /* for image user, but these flags are mixed */
189         IMA_VIEW_AS_RENDER      = (1 << 11),
190         IMA_IGNORE_ALPHA        = (1 << 12),
191         IMA_DEINTERLACE         = (1 << 13),
192         IMA_USE_VIEWS           = (1 << 14),
193         IMA_FLAG_DEPRECATED_15  = (1 << 15),  /* cleared */
194         IMA_FLAG_DEPRECATED_16  = (1 << 16),  /* cleared */
195 };
196
197 /* Image.tpageflag */
198 #define IMA_TPAGEFLAG_DEPRECATED_0      (1 << 0)  /* cleared */
199 #define IMA_TPAGEFLAG_DEPRECATED_1      (1 << 1)  /* cleared */
200 #define IMA_TPAGEFLAG_DEPRECATED_2      (1 << 2)  /* cleared */
201 #define IMA_MIPMAP_COMPLETE             (1 << 3)  /* all mipmap levels in OpenGL texture set? */
202 #define IMA_TPAGEFLAG_DEPRECATED_4      (1 << 4)  /* cleared */
203 #define IMA_TPAGEFLAG_DEPRECATED_5      (1 << 5)  /* cleared */
204 #define IMA_TPAGE_REFRESH               (1 << 6)
205 #define IMA_GLBIND_IS_DATA              (1 << 7) /* opengl image texture bound as non-color data */
206
207 /* ima->type and ima->source moved to BKE_image.h, for API */
208
209 /* render */
210 #define IMA_MAX_RENDER_TEXT             (1 << 9)
211
212 /* gen_flag */
213 #define IMA_GEN_FLOAT           1
214
215 /* alpha_mode */
216 enum {
217         IMA_ALPHA_STRAIGHT = 0,
218         IMA_ALPHA_PREMUL = 1,
219 };
220
221 #endif