b58bd259983786c9fcdf582fab3ad25c0cc0ed06
[blender.git] / source / blender / makesdna / DNA_image_types.h
1 /**
2  * blenlib/DNA_image_types.h (mar-2001 nzc)
3  *
4  * $Id$ 
5  *
6  * ***** BEGIN GPL LICENSE BLOCK *****
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License
10  * as published by the Free Software Foundation; either version 2
11  * of the License, or (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software Foundation,
20  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21  *
22  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
23  * All rights reserved.
24  *
25  * The Original Code is: all of this file.
26  *
27  * Contributor(s): none yet.
28  *
29  * ***** END GPL LICENSE BLOCK *****
30  */
31 #ifndef DNA_IMAGE_TYPES_H
32 #define DNA_IMAGE_TYPES_H
33
34 #include "DNA_ID.h"
35
36 struct PackedFile;
37 struct Scene;
38 struct anim;
39 struct ImBuf;
40 struct RenderResult;
41 struct GPUTexture;
42
43
44 /* ImageUser is in Texture, in Nodes, Background Image, Image Window, .... */
45 /* should be used in conjunction with an ID * to Image. */
46 typedef struct ImageUser {
47         int framenr;                            /* movies, sequences: current to display */
48         int frames;                                     /* total amount of frames to use */
49         int offset, sfra;                       /* offset within movie, start frame in global time */
50         short fie_ima, cycl;            /* fields/image in movie, cyclic flag */
51         short flag, ok;
52         
53         short multi_index, layer, pass;  /* listbase indices, for menu browsing or retrieve buffer */
54         /* short menunr; */                                     /* localized menu entry, for handling browse event */
55         short pad;
56
57         struct Scene *scene;            /* to retrieve render result */
58 } ImageUser;
59
60 /* iuser->flag */
61 #define IMA_ANIM_ALWAYS         1
62 #define IMA_ANIM_REFRESHED      2
63 /* #define IMA_DO_PREMUL        4 */
64
65 typedef struct Image {
66         ID id;
67         
68         char name[240];                 /* file path */
69         
70         ListBase ibufs;                                 /* not written in file */
71         struct GPUTexture *gputexture;  /* not written in file */
72         
73         /* sources from: */
74         struct anim *anim;
75         struct RenderResult *rr;
76
77         struct RenderResult *renders[8]; /* IMA_MAX_RENDER_SLOT */
78         short render_slot, last_render_slot;
79         
80         short ok, flag;
81         short source, type;
82         int lastframe;
83
84         /* texture page */
85         short tpageflag, totbind;
86         short xrep, yrep;
87         short twsta, twend;
88         unsigned int bindcode;  /* only for current image... */
89         unsigned int *repbind;  /* for repeat of parts of images */
90         
91         struct PackedFile * packedfile;
92         struct PreviewImage * preview;
93
94         /* game engine tile animation */
95         float lastupdate;
96         int lastused;
97         short animspeed;
98         
99         /* for generated images */
100         short gen_x, gen_y, gen_type;
101         
102         /* display aspect - for UV editing images resized for faster openGL display */
103         float aspx, aspy;
104 } Image;
105
106
107 /* **************** IMAGE ********************* */
108
109 /* Image.flag */
110 #define IMA_FIELDS              1
111 #define IMA_STD_FIELD   2
112 #define IMA_DO_PREMUL   4
113
114 #define IMA_REFLECT             16
115 #define IMA_NOCOLLECT   32
116 #define IMA_DEPRECATED  64
117 #define IMA_OLD_PREMUL  128
118
119 /* Image.tpageflag */
120 #define IMA_TILES                       1
121 #define IMA_TWINANIM            2
122 #define IMA_COLCYCLE            4       /* Depreciated */
123 #define IMA_MIPMAP_COMPLETE 8   /* all mipmap levels in OpenGL texture set? */
124 #define IMA_CLAMP_U                     16 
125 #define IMA_CLAMP_V                     32
126 #define IMA_TPAGE_REFRESH       64
127
128 /* ima->type and ima->source moved to BKE_image.h, for API */
129
130 /* render */
131 #define IMA_MAX_RENDER_TEXT             512
132 #define IMA_MAX_RENDER_SLOT             8
133
134 #endif
135