Initial revision
[blender.git] / source / blender / makesdna / DNA_sequence_types.h
1 /**
2  * blenlib/DNA_sequence_types.h (mar-2001 nzc)
3  *      
4  * $Id$ 
5  *
6  * ***** BEGIN GPL/BL DUAL 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. The Blender
12  * Foundation also sells licenses for use in proprietary software under
13  * the Blender License.  See http://www.blender.org/BL/ for information
14  * about this.
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License
22  * along with this program; if not, write to the Free Software Foundation,
23  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
24  *
25  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
26  * All rights reserved.
27  *
28  * The Original Code is: all of this file.
29  *
30  * Contributor(s): none yet.
31  *
32  * ***** END GPL/BL DUAL LICENSE BLOCK *****
33  */
34 #ifndef DNA_SEQUENCE_TYPES_H
35 #define DNA_SEQUENCE_TYPES_H
36
37 #include "DNA_listBase.h"
38
39 struct Ipo;
40 struct Scene;
41
42 typedef struct StripElem {
43         char name[40];
44         struct ImBuf *ibuf;
45         struct StripElem *se1, *se2, *se3;
46         short ok, nr;
47         int pad;
48                 
49 } StripElem;
50
51 typedef struct Strip {
52         struct Strip *next, *prev;
53         short rt, len, us, done;
54         StripElem *stripdata;
55         char dir[80];
56         short orx, ory;
57         int pad;
58                 
59 } Strip;
60
61
62 typedef struct PluginSeq {
63         char name[80];
64         void *handle;
65         
66         char *pname;
67         
68         int vars, version;
69
70         void *varstr;
71         float *cfra;
72         
73         float data[32];
74
75         void (*doit)(void);
76
77         void (*callback)(void);
78 } PluginSeq;
79
80
81 /* LET OP: eerste stuk identiek aan ID (ivm ipo's) */
82
83 typedef struct Sequence {
84
85         struct Sequence *next, *prev, *newseq;
86         void *lib;
87         char name[24];
88         
89         short flag, type;
90         int len;
91         int start, startofs, endofs;
92         int startstill, endstill;
93         int machine, depth;
94         int startdisp, enddisp;
95         float mul, handsize;
96         int sfra;
97         
98         Strip *strip;
99         StripElem *curelem;
100         
101         struct Ipo *ipo;
102         struct Scene *scene;
103         struct anim *anim;
104         float facf0, facf1;
105         
106         PluginSeq *plugin;
107
108         /* pointers voor effecten: */
109         struct Sequence *seq1, *seq2, *seq3;
110         
111         /* meta */
112         ListBase seqbase;
113         
114 } Sequence;
115
116
117 #
118 #
119 typedef struct MetaStack {
120         struct MetaStack *next, *prev;
121         ListBase *oldbasep;
122         Sequence *parseq;
123 } MetaStack;
124
125 typedef struct Editing {
126         ListBase *seqbasep;
127         ListBase seqbase;
128         ListBase metastack;
129         short flag, rt;
130         int pad;
131 } Editing;
132
133 /* ***************** SEQUENCE ****************** */
134
135 /* seq->flag */
136 #define SEQ_LEFTSEL             2
137 #define SEQ_RIGHTSEL    4
138 #define SEQ_OVERLAP             8
139 #define SEQ_FILTERY             16
140
141 /* seq->type LET OP BITJE 3!!! */
142 #define SEQ_IMAGE               0
143 #define SEQ_META                1
144 #define SEQ_SCENE               2
145 #define SEQ_MOVIE               3
146
147 #define SEQ_EFFECT              8
148 #define SEQ_CROSS               8
149 #define SEQ_ADD                 9
150 #define SEQ_SUB                 10
151 #define SEQ_ALPHAOVER   11
152 #define SEQ_ALPHAUNDER  12
153 #define SEQ_GAMCROSS    13
154 #define SEQ_MUL                 14
155 #define SEQ_OVERDROP    15
156 #define SEQ_PLUGIN              24
157
158 #endif