fix for RNA ranges exceeding the range of the type (INT_MAX used on short's for eg).
[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         struct Scene *scene;            /* to retrieve render result */
48
49         int framenr;                            /* movies, sequences: current to display */
50         int frames;                                     /* total amount of frames to use */
51         int offset, sfra;                       /* offset within movie, start frame in global time */
52         char fie_ima, cycl;             /* fields/image in movie, cyclic flag */
53         char ok, pad;
54
55         short multi_index, layer, pass;  /* listbase indices, for menu browsing or retrieve buffer */
56
57         short flag;
58         
59         int pad2;
60
61 } ImageUser;
62
63 /* iuser->flag */
64 #define IMA_ANIM_ALWAYS         1
65 #define IMA_ANIM_REFRESHED      2
66 /* #define IMA_DO_PREMUL        4 */
67
68 typedef struct Image {
69         ID id;
70         
71         char name[240];                 /* file path */
72         
73         ListBase ibufs;                                 /* not written in file */
74         struct GPUTexture *gputexture;  /* not written in file */
75         
76         /* sources from: */
77         struct anim *anim;
78         struct RenderResult *rr;
79
80         struct RenderResult *renders[8]; /* IMA_MAX_RENDER_SLOT */
81         short render_slot, last_render_slot;
82         
83         short ok, flag;
84         short source, type;
85         int lastframe;
86
87         /* texture page */
88         short tpageflag, totbind;
89         short xrep, yrep;
90         short twsta, twend;
91         unsigned int bindcode;  /* only for current image... */
92         unsigned int *repbind;  /* for repeat of parts of images */
93         
94         struct PackedFile * packedfile;
95         struct PreviewImage * preview;
96
97         /* game engine tile animation */
98         float lastupdate;
99         int lastused;
100         short animspeed;
101         
102         /* for generated images */
103         short gen_x, gen_y, gen_type;
104         
105         /* display aspect - for UV editing images resized for faster openGL display */
106         float aspx, aspy;
107 } Image;
108
109
110 /* **************** IMAGE ********************* */
111
112 /* Image.flag */
113 #define IMA_FIELDS              1
114 #define IMA_STD_FIELD   2
115 #define IMA_DO_PREMUL   4
116
117 #define IMA_REFLECT             16
118 #define IMA_NOCOLLECT   32
119 #define IMA_DEPRECATED  64
120 #define IMA_OLD_PREMUL  128
121
122 /* Image.tpageflag */
123 #define IMA_TILES                       1
124 #define IMA_TWINANIM            2
125 #define IMA_COLCYCLE            4       /* Depreciated */
126 #define IMA_MIPMAP_COMPLETE 8   /* all mipmap levels in OpenGL texture set? */
127 #define IMA_CLAMP_U                     16 
128 #define IMA_CLAMP_V                     32
129 #define IMA_TPAGE_REFRESH       64
130
131 /* ima->type and ima->source moved to BKE_image.h, for API */
132
133 /* render */
134 #define IMA_MAX_RENDER_TEXT             512
135 #define IMA_MAX_RENDER_SLOT             8
136
137 #endif
138