Cleanup: Remove unused depsgraph function
[blender.git] / source / blender / makesdna / DNA_movieclip_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) 2011 Blender Foundation.
17  * All rights reserved.
18  */
19
20 /** \file
21  * \ingroup DNA
22  */
23
24 #ifndef __DNA_MOVIECLIP_TYPES_H__
25 #define __DNA_MOVIECLIP_TYPES_H__
26
27 #include "DNA_ID.h"
28 #include "DNA_tracking_types.h"
29 #include "DNA_color_types.h" /* for color management */
30
31 struct AnimData;
32 struct ImBuf;
33 struct MovieClipProxy;
34 struct MovieTrackingMarker;
35 struct MovieTrackingTrack;
36 struct anim;
37 struct bGPdata;
38
39 typedef struct MovieClipUser {
40   /** Current frame number. */
41   int framenr;
42   /** Proxy render size. */
43   short render_size, render_flag;
44 } MovieClipUser;
45
46 typedef struct MovieClipProxy {
47   /** 768=FILE_MAXDIR custom directory for index and proxy files (defaults to BL_proxy). */
48   char dir[768];
49
50   /** Time code in use. */
51   short tc;
52   /** Proxy build quality. */
53   short quality;
54   /** Size flags (see below) of all proxies to build. */
55   short build_size_flag;
56   /** Time code flags (see below) of all tc indices to build. */
57   short build_tc_flag;
58 } MovieClipProxy;
59
60 typedef struct MovieClip {
61   ID id;
62   /** Animation data (must be immediately after id for utilities to use it). */
63   struct AnimData *adt;
64
65   /** File path, 1024 = FILE_MAX. */
66   char name[1024];
67
68   /** Sequence or movie. */
69   int source;
70   /** Last accessed frame number. */
71   int lastframe;
72   /** Size of last accessed frame. */
73   int lastsize[2];
74
75   /** Display aspect. */
76   float aspx, aspy;
77
78   /** Movie source data. */
79   struct anim *anim;
80   /** Cache for different stuff, not in file. */
81   struct MovieClipCache *cache;
82   /** Grease pencil data. */
83   struct bGPdata *gpd;
84
85   /** Data for SfM tracking. */
86   struct MovieTracking tracking;
87   /**
88    * Context of tracking job used to synchronize data
89    * like framenumber in SpaceClip clip user.
90    */
91   void *tracking_context;
92
93   /** Proxy to clip data. */
94   struct MovieClipProxy proxy;
95   int flag;
96
97   /** Length of movie. */
98   int len;
99
100   /**
101    * Scene frame number footage starts playing at affects all data
102    * which is associated with a clip such as motion tracking,
103    * camera Reconstruction and so.
104    */
105   int start_frame;
106   /**
107    * Offset which is adding to a file number when reading frame from a file.
108    * affects only a way how scene frame is mapping to a file name and not
109    * touches other data associated with a clip. */
110   int frame_offset;
111
112   /* color management */
113   ColorManagedColorspaceSettings colorspace_settings;
114 } MovieClip;
115
116 typedef struct MovieClipScopes {
117   /** 1 means scopes are ok and recalculation is unneeded. */
118   short ok;
119   /** Whether track's mask should be applied on preview. */
120   short use_track_mask;
121   /** Height of track preview widget. */
122   int track_preview_height;
123   /** Width and height of frame for which scopes are calculated. */
124   int frame_width, frame_height;
125   /** Undistorted position of marker used for pattern sampling. */
126   struct MovieTrackingMarker undist_marker;
127   /** Search area of a track. */
128   struct ImBuf *track_search;
129   /** #ImBuf displayed in track preview. */
130   struct ImBuf *track_preview;
131   /** Sub-pizel position of marker in track ImBuf. */
132   float track_pos[2];
133   /** Active track is disabled, special notifier should be drawn. */
134   short track_disabled;
135   /** Active track is locked, no transformation should be allowed. */
136   short track_locked;
137   /** Frame number scopes are created for. */
138   int framenr;
139   /** Track scopes are created for. */
140   struct MovieTrackingTrack *track;
141   /** Marker scopes are created for. */
142   struct MovieTrackingMarker *marker;
143   /** Scale used for sliding from previewe area. */
144   float slide_scale[2];
145 } MovieClipScopes;
146
147 /* MovieClipProxy->build_size_flag */
148 enum {
149   MCLIP_PROXY_SIZE_25 = (1 << 0),
150   MCLIP_PROXY_SIZE_50 = (1 << 1),
151   MCLIP_PROXY_SIZE_75 = (1 << 2),
152   MCLIP_PROXY_SIZE_100 = (1 << 3),
153   MCLIP_PROXY_UNDISTORTED_SIZE_25 = (1 << 4),
154   MCLIP_PROXY_UNDISTORTED_SIZE_50 = (1 << 5),
155   MCLIP_PROXY_UNDISTORTED_SIZE_75 = (1 << 6),
156   MCLIP_PROXY_UNDISTORTED_SIZE_100 = (1 << 7),
157 };
158
159 /* MovieClip->source */
160 enum {
161   MCLIP_SRC_SEQUENCE = 1,
162   MCLIP_SRC_MOVIE = 2,
163 };
164
165 /* MovieClip->selection types */
166 enum {
167   MCLIP_SEL_NONE = 0,
168   MCLIP_SEL_TRACK = 1,
169 };
170
171 /* MovieClip->flag */
172 enum {
173   MCLIP_USE_PROXY = (1 << 0),
174   MCLIP_USE_PROXY_CUSTOM_DIR = (1 << 1),
175   /* MCLIP_CUSTOM_START_FRAME    = (1 << 2), */ /* UNUSED */
176   MCLIP_DATA_EXPAND = (1 << 3),
177
178   MCLIP_TIMECODE_FLAGS = (MCLIP_USE_PROXY | MCLIP_USE_PROXY_CUSTOM_DIR),
179 };
180
181 /* MovieClip->render_size */
182 enum {
183   MCLIP_PROXY_RENDER_SIZE_FULL = 0,
184   MCLIP_PROXY_RENDER_SIZE_25 = 1,
185   MCLIP_PROXY_RENDER_SIZE_50 = 2,
186   MCLIP_PROXY_RENDER_SIZE_75 = 3,
187   MCLIP_PROXY_RENDER_SIZE_100 = 4,
188 };
189
190 /* MovieClip->render_flag */
191 enum {
192   MCLIP_PROXY_RENDER_UNDISTORT = 1,
193   /** Use original, if proxy is not found. */
194   MCLIP_PROXY_RENDER_USE_FALLBACK_RENDER = 2,
195 };
196
197 #endif