Blender  V2.93
rna_movieclip.c
Go to the documentation of this file.
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 
21 #include <limits.h>
22 #include <stdlib.h>
23 
24 #include "MEM_guardedalloc.h"
25 
26 #include "DNA_movieclip_types.h"
27 #include "DNA_scene_types.h"
28 
29 #include "RNA_access.h"
30 #include "RNA_define.h"
31 
32 #include "rna_internal.h"
33 
34 #include "BKE_movieclip.h"
35 #include "BKE_tracking.h"
36 
37 #include "WM_types.h"
38 
39 #include "IMB_imbuf.h"
40 #include "IMB_imbuf_types.h"
41 #include "IMB_metadata.h"
42 
43 #ifdef RNA_RUNTIME
44 
45 # include "DEG_depsgraph.h"
46 
47 # include "ED_clip.h"
48 
49 # include "DNA_screen_types.h"
50 # include "DNA_space_types.h"
51 
52 # include "SEQ_relations.h"
53 
54 static void rna_MovieClip_reload_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
55 {
56  MovieClip *clip = (MovieClip *)ptr->owner_id;
57 
59 }
60 
61 static void rna_MovieClip_size_get(PointerRNA *ptr, int *values)
62 {
63  MovieClip *clip = (MovieClip *)ptr->owner_id;
64 
65  values[0] = clip->lastsize[0];
66  values[1] = clip->lastsize[1];
67 }
68 
69 static float rna_MovieClip_fps_get(PointerRNA *ptr)
70 {
71  MovieClip *clip = (MovieClip *)ptr->owner_id;
72  return BKE_movieclip_get_fps(clip);
73 }
74 
75 static void rna_MovieClip_use_proxy_update(Main *bmain, Scene *UNUSED(scene), PointerRNA *ptr)
76 {
77  MovieClip *clip = (MovieClip *)ptr->owner_id;
80 }
81 
82 static void rna_MovieClipUser_proxy_render_settings_update(Main *bmain,
83  Scene *UNUSED(scene),
84  PointerRNA *ptr)
85 {
86  ID *id = ptr->owner_id;
87  MovieClipUser *user = (MovieClipUser *)ptr->data;
88 
89  /* when changing render settings of space clip user
90  * clear cache for clip, so all the memory is available
91  * for new render settings
92  */
93  if (GS(id->name) == ID_SCR) {
94  bScreen *screen = (bScreen *)id;
95  ScrArea *area;
96  SpaceLink *sl;
97 
98  for (area = screen->areabase.first; area; area = area->next) {
99  for (sl = area->spacedata.first; sl; sl = sl->next) {
100  if (sl->spacetype == SPACE_CLIP) {
101  SpaceClip *sc = (SpaceClip *)sl;
102 
103  if (&sc->user == user) {
104  MovieClip *clip = ED_space_clip_get_clip(sc);
105 
106  if (clip && (clip->flag & MCLIP_USE_PROXY)) {
109  }
110 
111  break;
112  }
113  }
114  }
115  }
116  }
117 }
118 
119 static PointerRNA rna_MovieClip_metadata_get(MovieClip *clip)
120 {
121  if (clip == NULL || clip->anim == NULL) {
122  return PointerRNA_NULL;
123  }
124 
125  IDProperty *metadata = IMB_anim_load_metadata(clip->anim);
126  if (metadata == NULL) {
127  return PointerRNA_NULL;
128  }
129 
130  PointerRNA ptr;
131  RNA_pointer_create(NULL, &RNA_IDPropertyWrapPtr, metadata, &ptr);
132  return ptr;
133 }
134 
135 #else
136 
138 {
139  StructRNA *srna;
140  PropertyRNA *prop;
141 
142  static const EnumPropertyItem clip_tc_items[] = {
143  {IMB_TC_NONE, "NONE", 0, "No TC in use", ""},
145  "RECORD_RUN",
146  0,
147  "Record Run",
148  "Use images in the order they are recorded"},
150  "FREE_RUN",
151  0,
152  "Free Run",
153  "Use global timestamp written by recording device"},
155  "FREE_RUN_REC_DATE",
156  0,
157  "Free Run (rec date)",
158  "Interpolate a global timestamp using the record date and time "
159  "written by recording device"},
161  "FREE_RUN_NO_GAPS",
162  0,
163  "Free Run No Gaps",
164  "Record run, but ignore timecode, changes in framerate or dropouts"},
165  {0, NULL, 0, NULL, NULL},
166  };
167 
168  srna = RNA_def_struct(brna, "MovieClipProxy", NULL);
169  RNA_def_struct_ui_text(srna, "Movie Clip Proxy", "Proxy parameters for a movie clip");
170  RNA_def_struct_sdna(srna, "MovieClipProxy");
171 
172  /* build proxy sized */
173  prop = RNA_def_property(srna, "build_25", PROP_BOOLEAN, PROP_NONE);
174  RNA_def_property_boolean_sdna(prop, NULL, "build_size_flag", MCLIP_PROXY_SIZE_25);
177  prop, "25%", "Build proxy resolution 25% of the original footage dimension");
178 
179  prop = RNA_def_property(srna, "build_50", PROP_BOOLEAN, PROP_NONE);
180  RNA_def_property_boolean_sdna(prop, NULL, "build_size_flag", MCLIP_PROXY_SIZE_50);
183  prop, "50%", "Build proxy resolution 50% of the original footage dimension");
184 
185  prop = RNA_def_property(srna, "build_75", PROP_BOOLEAN, PROP_NONE);
186  RNA_def_property_boolean_sdna(prop, NULL, "build_size_flag", MCLIP_PROXY_SIZE_75);
189  prop, "75%", "Build proxy resolution 75% of the original footage dimension");
190 
191  prop = RNA_def_property(srna, "build_100", PROP_BOOLEAN, PROP_NONE);
192  RNA_def_property_boolean_sdna(prop, NULL, "build_size_flag", MCLIP_PROXY_SIZE_100);
195  prop, "100%", "Build proxy resolution 100% of the original footage dimension");
196 
197  prop = RNA_def_property(srna, "build_undistorted_25", PROP_BOOLEAN, PROP_NONE);
201  prop, "25%", "Build proxy resolution 25% of the original undistorted footage dimension");
202 
203  prop = RNA_def_property(srna, "build_undistorted_50", PROP_BOOLEAN, PROP_NONE);
207  prop, "50%", "Build proxy resolution 50% of the original undistorted footage dimension");
208 
209  prop = RNA_def_property(srna, "build_undistorted_75", PROP_BOOLEAN, PROP_NONE);
213  prop, "75%", "Build proxy resolution 75% of the original undistorted footage dimension");
214 
215  prop = RNA_def_property(srna, "build_undistorted_100", PROP_BOOLEAN, PROP_NONE);
219  prop, "100%", "Build proxy resolution 100% of the original undistorted footage dimension");
220 
221  /* Build time-codes. */
222  prop = RNA_def_property(srna, "build_record_run", PROP_BOOLEAN, PROP_NONE);
223  RNA_def_property_boolean_sdna(prop, NULL, "build_tc_flag", IMB_TC_RECORD_RUN);
225  RNA_def_property_ui_text(prop, "Rec Run", "Build record run time code index");
226 
227  prop = RNA_def_property(srna, "build_free_run", PROP_BOOLEAN, PROP_NONE);
228  RNA_def_property_boolean_sdna(prop, NULL, "build_tc_flag", IMB_TC_FREE_RUN);
230  RNA_def_property_ui_text(prop, "Free Run", "Build free run time code index");
231 
232  prop = RNA_def_property(srna, "build_free_run_rec_date", PROP_BOOLEAN, PROP_NONE);
234  prop, NULL, "build_tc_flag", IMB_TC_INTERPOLATED_REC_DATE_FREE_RUN);
237  prop, "Free Run (Rec Date)", "Build free run time code index using Record Date/Time");
238 
239  /* quality of proxied image */
240  prop = RNA_def_property(srna, "quality", PROP_INT, PROP_UNSIGNED);
241  RNA_def_property_int_sdna(prop, NULL, "quality");
243  RNA_def_property_ui_text(prop, "Quality", "JPEG quality of proxy images");
244  RNA_def_property_ui_range(prop, 1, 100, 1, -1);
245 
246  prop = RNA_def_property(srna, "timecode", PROP_ENUM, PROP_NONE);
247  RNA_def_property_enum_sdna(prop, NULL, "tc");
249  RNA_def_property_enum_items(prop, clip_tc_items);
250  RNA_def_property_ui_text(prop, "Timecode", "");
251  RNA_def_property_update(prop, NC_MOVIECLIP | ND_DISPLAY, "rna_MovieClip_reload_update");
252 
253  /* directory */
254  prop = RNA_def_property(srna, "directory", PROP_STRING, PROP_DIRPATH);
255  RNA_def_property_string_sdna(prop, NULL, "dir");
257  RNA_def_property_ui_text(prop, "Directory", "Location to store the proxy files");
258  RNA_def_property_update(prop, NC_MOVIECLIP | ND_DISPLAY, "rna_MovieClip_reload_update");
259 }
260 
262 {
263  StructRNA *srna;
264  PropertyRNA *prop;
265 
266  static const EnumPropertyItem clip_render_size_items[] = {
267  {MCLIP_PROXY_RENDER_SIZE_25, "PROXY_25", 0, "25%", ""},
268  {MCLIP_PROXY_RENDER_SIZE_50, "PROXY_50", 0, "50%", ""},
269  {MCLIP_PROXY_RENDER_SIZE_75, "PROXY_75", 0, "75%", ""},
270  {MCLIP_PROXY_RENDER_SIZE_100, "PROXY_100", 0, "100%", ""},
271  {MCLIP_PROXY_RENDER_SIZE_FULL, "FULL", 0, "None, full render", ""},
272  {0, NULL, 0, NULL, NULL},
273  };
274 
275  srna = RNA_def_struct(brna, "MovieClipUser", NULL);
277  srna,
278  "Movie Clip User",
279  "Parameters defining how a MovieClip data-block is used by another data-block");
280 
281  prop = RNA_def_property(srna, "frame_current", PROP_INT, PROP_TIME);
282  RNA_def_property_int_sdna(prop, NULL, "framenr");
285  prop, "Current Frame", "Current frame number in movie or image sequence");
286 
287  /* render size */
288  prop = RNA_def_property(srna, "proxy_render_size", PROP_ENUM, PROP_NONE);
289  RNA_def_property_enum_sdna(prop, NULL, "render_size");
290  RNA_def_property_enum_items(prop, clip_render_size_items);
292  "Proxy Render Size",
293  "Display preview using full resolution or different proxy resolutions");
295  prop, NC_MOVIECLIP | ND_DISPLAY, "rna_MovieClipUser_proxy_render_settings_update");
296 
297  /* render undistorted */
298  prop = RNA_def_property(srna, "use_render_undistorted", PROP_BOOLEAN, PROP_NONE);
300  RNA_def_property_ui_text(prop, "Render Undistorted", "Render preview using undistorted proxy");
302  prop, NC_MOVIECLIP | ND_DISPLAY, "rna_MovieClipUser_proxy_render_settings_update");
303 }
304 
306 {
307  StructRNA *srna;
308 
309  srna = RNA_def_struct(brna, "MovieClipScopes", NULL);
310  RNA_def_struct_ui_text(srna, "MovieClipScopes", "Scopes for statistical view of a movie clip");
311 }
312 
313 static void rna_def_movieclip(BlenderRNA *brna)
314 {
315  StructRNA *srna;
316  PropertyRNA *prop;
317  FunctionRNA *func;
318  PropertyRNA *parm;
319 
320  static const EnumPropertyItem clip_source_items[] = {
321  {MCLIP_SRC_SEQUENCE, "SEQUENCE", 0, "Image Sequence", "Multiple image files, as a sequence"},
322  {MCLIP_SRC_MOVIE, "MOVIE", 0, "Movie File", "Movie file"},
323  {0, NULL, 0, NULL, NULL},
324  };
325 
326  srna = RNA_def_struct(brna, "MovieClip", "ID");
328  srna, "MovieClip", "MovieClip data-block referencing an external movie file");
329  RNA_def_struct_ui_icon(srna, ICON_SEQUENCE);
330 
331  prop = RNA_def_property(srna, "filepath", PROP_STRING, PROP_FILEPATH);
332  RNA_def_property_string_sdna(prop, NULL, "filepath");
333  RNA_def_property_ui_text(prop, "File Path", "Filename of the movie or sequence file");
334  RNA_def_property_update(prop, NC_MOVIECLIP | ND_DISPLAY, "rna_MovieClip_reload_update");
335 
336  prop = RNA_def_property(srna, "tracking", PROP_POINTER, PROP_NONE);
337  RNA_def_property_struct_type(prop, "MovieTracking");
338 
339  prop = RNA_def_property(srna, "proxy", PROP_POINTER, PROP_NONE);
340  RNA_def_property_struct_type(prop, "MovieClipProxy");
341 
342  /* use proxy */
343  prop = RNA_def_property(srna, "use_proxy", PROP_BOOLEAN, PROP_NONE);
347  prop, "Use Proxy / Timecode", "Use a preview proxy and/or timecode index for this clip");
348  RNA_def_property_update(prop, NC_MOVIECLIP | ND_DISPLAY, "rna_MovieClip_use_proxy_update");
349 
350  prop = RNA_def_int_vector(srna,
351  "size",
352  2,
353  NULL,
354  0,
355  0,
356  "Size",
357  "Width and height in pixels, zero when image data cant be loaded",
358  0,
359  0);
360  RNA_def_property_int_funcs(prop, "rna_MovieClip_size_get", NULL, NULL);
362 
363  prop = RNA_def_property(srna, "display_aspect", PROP_FLOAT, PROP_XYZ);
364  RNA_def_property_float_sdna(prop, NULL, "aspx");
365  RNA_def_property_array(prop, 2);
366  RNA_def_property_range(prop, 0.1f, FLT_MAX);
367  RNA_def_property_ui_range(prop, 0.1f, 5000.0f, 1, 2);
369  prop, "Display Aspect", "Display Aspect for this clip, does not affect rendering");
371 
372  /* source */
373  prop = RNA_def_property(srna, "source", PROP_ENUM, PROP_NONE);
374  RNA_def_property_enum_items(prop, clip_source_items);
375  RNA_def_property_ui_text(prop, "Source", "Where the clip comes from");
377 
378  /* custom proxy directory */
379  prop = RNA_def_property(srna, "use_proxy_custom_directory", PROP_BOOLEAN, PROP_NONE);
383  prop,
384  "Proxy Custom Directory",
385  "Create proxy images in a custom directory (default is movie location)");
386  RNA_def_property_update(prop, NC_MOVIECLIP | ND_DISPLAY, "rna_MovieClip_reload_update");
387 
388  /* grease pencil */
389  prop = RNA_def_property(srna, "grease_pencil", PROP_POINTER, PROP_NONE);
390  RNA_def_property_pointer_sdna(prop, NULL, "gpd");
391  RNA_def_property_struct_type(prop, "GreasePencil");
393  prop, NULL, NULL, NULL, "rna_GPencil_datablocks_annotations_poll");
395  RNA_def_property_ui_text(prop, "Grease Pencil", "Grease pencil data for this movie clip");
397 
398  /* start_frame */
399  prop = RNA_def_property(srna, "frame_start", PROP_INT, PROP_NONE);
400  RNA_def_property_int_sdna(prop, NULL, "start_frame");
402  "Start Frame",
403  "Global scene frame number at which this movie starts playing "
404  "(affects all data associated with a clip)");
405  RNA_def_property_update(prop, NC_MOVIECLIP | ND_DISPLAY, "rna_MovieClip_reload_update");
406 
407  /* frame_offset */
408  prop = RNA_def_property(srna, "frame_offset", PROP_INT, PROP_NONE);
409  RNA_def_property_int_sdna(prop, NULL, "frame_offset");
411  prop,
412  "Frame Offset",
413  "Offset of footage first frame relative to its file name "
414  "(affects only how footage is loading, does not change data associated with a clip)");
415  RNA_def_property_update(prop, NC_MOVIECLIP | ND_DISPLAY, "rna_MovieClip_reload_update");
416 
417  /* length */
418  prop = RNA_def_property(srna, "frame_duration", PROP_INT, PROP_NONE);
420  RNA_def_property_int_sdna(prop, NULL, "len");
421  RNA_def_property_ui_text(prop, "Duration", "Detected duration of movie clip in frames");
422 
423  /* FPS */
424  prop = RNA_def_property(srna, "fps", PROP_FLOAT, PROP_NONE);
426  RNA_def_property_float_funcs(prop, "rna_MovieClip_fps_get", NULL, NULL);
428  prop, "Frame Rate", "Detected frame rate of the movie clip in frames per second");
429 
430  /* color management */
431  prop = RNA_def_property(srna, "colorspace_settings", PROP_POINTER, PROP_NONE);
432  RNA_def_property_pointer_sdna(prop, NULL, "colorspace_settings");
433  RNA_def_property_struct_type(prop, "ColorManagedInputColorspaceSettings");
434  RNA_def_property_ui_text(prop, "Color Space Settings", "Input color space settings");
435 
436  /* metadata */
437  func = RNA_def_function(srna, "metadata", "rna_MovieClip_metadata_get");
438  RNA_def_function_ui_description(func, "Retrieve metadata of the movie file");
439  /* return type */
440  parm = RNA_def_pointer(
441  func, "metadata", "IDPropertyWrapPtr", "", "Dict-like object containing the metadata");
443  RNA_def_function_return(func, parm);
444 
446 }
447 
449 {
450  rna_def_movieclip(brna);
452  rna_def_moviecliUser(brna);
454 }
455 
456 #endif
void BKE_movieclip_clear_cache(struct MovieClip *clip)
Definition: movieclip.c:1674
float BKE_movieclip_get_fps(struct MovieClip *clip)
Definition: movieclip.c:1591
#define UNUSED(x)
void DEG_id_tag_update(struct ID *id, int flag)
@ ID_RECALC_SOURCE
Definition: DNA_ID.h:673
@ ID_SCR
Definition: DNA_ID_enums.h:72
@ MCLIP_PROXY_RENDER_UNDISTORT
@ MCLIP_USE_PROXY_CUSTOM_DIR
@ MCLIP_USE_PROXY
@ MCLIP_PROXY_SIZE_75
@ MCLIP_PROXY_UNDISTORTED_SIZE_100
@ MCLIP_PROXY_UNDISTORTED_SIZE_75
@ MCLIP_PROXY_SIZE_25
@ MCLIP_PROXY_SIZE_100
@ MCLIP_PROXY_UNDISTORTED_SIZE_50
@ MCLIP_PROXY_SIZE_50
@ MCLIP_PROXY_UNDISTORTED_SIZE_25
@ MCLIP_SRC_SEQUENCE
@ MCLIP_SRC_MOVIE
@ MCLIP_PROXY_RENDER_SIZE_75
@ MCLIP_PROXY_RENDER_SIZE_100
@ MCLIP_PROXY_RENDER_SIZE_50
@ MCLIP_PROXY_RENDER_SIZE_FULL
@ MCLIP_PROXY_RENDER_SIZE_25
#define MINAFRAME
#define MAXFRAME
@ SPACE_CLIP
struct MovieClip * ED_space_clip_get_clip(struct SpaceClip *sc)
Definition: clip_editor.c:572
@ IMB_TC_INTERPOLATED_REC_DATE_FREE_RUN
Definition: IMB_imbuf.h:312
@ IMB_TC_RECORD_RUN_NO_GAPS
Definition: IMB_imbuf.h:313
@ IMB_TC_NONE
Definition: IMB_imbuf.h:300
@ IMB_TC_FREE_RUN
Definition: IMB_imbuf.h:307
@ IMB_TC_RECORD_RUN
Definition: IMB_imbuf.h:304
Contains defines and structs used throughout the imbuf module.
struct IDProperty * IMB_anim_load_metadata(struct anim *anim)
Definition: anim_movie.c:247
Read Guarded memory(de)allocation.
@ PARM_RNAPTR
Definition: RNA_types.h:339
@ PROP_FLOAT
Definition: RNA_types.h:75
@ PROP_BOOLEAN
Definition: RNA_types.h:73
@ PROP_ENUM
Definition: RNA_types.h:77
@ PROP_INT
Definition: RNA_types.h:74
@ PROP_STRING
Definition: RNA_types.h:76
@ PROP_POINTER
Definition: RNA_types.h:78
@ PROP_ANIMATABLE
Definition: RNA_types.h:188
@ PROP_EDITABLE
Definition: RNA_types.h:175
@ PROP_ID_REFCOUNT
Definition: RNA_types.h:212
@ PROP_TIME
Definition: RNA_types.h:133
@ PROP_XYZ
Definition: RNA_types.h:148
@ PROP_NONE
Definition: RNA_types.h:113
@ PROP_DIRPATH
Definition: RNA_types.h:117
@ PROP_UNSIGNED
Definition: RNA_types.h:129
@ PROP_FILEPATH
Definition: RNA_types.h:116
#define ND_DISPLAY
Definition: WM_types.h:391
#define NC_MOVIECLIP
Definition: WM_types.h:298
Scene scene
#define GS(x)
Definition: iris.c:241
static void area(int d1, int d2, int e1, int e2, float weights[2])
void RNA_pointer_create(ID *id, StructRNA *type, void *data, PointerRNA *r_ptr)
Definition: rna_access.c:146
const PointerRNA PointerRNA_NULL
Definition: rna_access.c:71
void rna_def_animdata_common(StructRNA *srna)
void RNA_def_property_pointer_sdna(PropertyRNA *prop, const char *structname, const char *propname)
Definition: rna_define.c:2762
PropertyRNA * RNA_def_pointer(StructOrFunctionRNA *cont_, const char *identifier, const char *type, const char *ui_name, const char *ui_description)
Definition: rna_define.c:4159
void RNA_def_property_boolean_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t bit)
Definition: rna_define.c:2257
void RNA_def_function_return(FunctionRNA *func, PropertyRNA *ret)
Definition: rna_define.c:4302
void RNA_def_property_float_funcs(PropertyRNA *prop, const char *get, const char *set, const char *range)
Definition: rna_define.c:3153
void RNA_def_property_ui_text(PropertyRNA *prop, const char *name, const char *description)
Definition: rna_define.c:1676
void RNA_def_property_string_sdna(PropertyRNA *prop, const char *structname, const char *propname)
Definition: rna_define.c:2717
FunctionRNA * RNA_def_function(StructRNA *srna, const char *identifier, const char *call)
Definition: rna_define.c:4262
void RNA_def_struct_ui_text(StructRNA *srna, const char *name, const char *description)
Definition: rna_define.c:1259
void RNA_def_property_enum_items(PropertyRNA *prop, const EnumPropertyItem *item)
Definition: rna_define.c:1892
void RNA_def_struct_sdna(StructRNA *srna, const char *structname)
Definition: rna_define.c:1067
void RNA_def_property_array(PropertyRNA *prop, int length)
Definition: rna_define.c:1568
void RNA_def_property_range(PropertyRNA *prop, double min, double max)
Definition: rna_define.c:1757
void RNA_def_property_struct_type(PropertyRNA *prop, const char *type)
Definition: rna_define.c:1792
void RNA_def_function_ui_description(FunctionRNA *func, const char *description)
Definition: rna_define.c:4337
void RNA_def_property_update(PropertyRNA *prop, int noteflag, const char *func)
Definition: rna_define.c:2927
PropertyRNA * RNA_def_property(StructOrFunctionRNA *cont_, const char *identifier, int type, int subtype)
Definition: rna_define.c:1279
PropertyRNA * RNA_def_int_vector(StructOrFunctionRNA *cont_, const char *identifier, int len, const int *default_value, int hardmin, int hardmax, const char *ui_name, const char *ui_description, int softmin, int softmax)
Definition: rna_define.c:3611
void RNA_def_property_clear_flag(PropertyRNA *prop, PropertyFlag flag)
Definition: rna_define.c:1517
void RNA_def_property_pointer_funcs(PropertyRNA *prop, const char *get, const char *set, const char *type_fn, const char *poll)
Definition: rna_define.c:3373
StructRNA * RNA_def_struct(BlenderRNA *brna, const char *identifier, const char *from)
Definition: rna_define.c:1047
void RNA_def_property_enum_sdna(PropertyRNA *prop, const char *structname, const char *propname)
Definition: rna_define.c:2623
void RNA_def_property_int_funcs(PropertyRNA *prop, const char *get, const char *set, const char *range)
Definition: rna_define.c:3055
void RNA_def_struct_ui_icon(StructRNA *srna, int icon)
Definition: rna_define.c:1267
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
Definition: rna_define.c:1512
void RNA_def_property_float_sdna(PropertyRNA *prop, const char *structname, const char *propname)
Definition: rna_define.c:2515
void RNA_def_property_ui_range(PropertyRNA *prop, double min, double max, double step, int precision)
Definition: rna_define.c:1706
void RNA_def_property_int_sdna(PropertyRNA *prop, const char *structname, const char *propname)
Definition: rna_define.c:2364
void RNA_def_parameter_flags(PropertyRNA *prop, PropertyFlag flag_property, ParameterFlag flag_parameter)
Definition: rna_define.c:1547
static void rna_def_movieclip(BlenderRNA *brna)
static void rna_def_movieclip_proxy(BlenderRNA *brna)
void RNA_def_movieclip(BlenderRNA *brna)
static void rna_def_moviecliUser(BlenderRNA *brna)
static void rna_def_movieClipScopes(BlenderRNA *brna)
void SEQ_relations_invalidate_movieclip_strips(Main *bmain, MovieClip *clip_target)
Definition: DNA_ID.h:273
char name[66]
Definition: DNA_ID.h:283
void * first
Definition: DNA_listBase.h:47
Definition: BKE_main.h:116
struct anim * anim
void * data
Definition: RNA_types.h:52
struct ID * owner_id
Definition: RNA_types.h:50
struct MovieClipUser user
ListBase areabase
PointerRNA * ptr
Definition: wm_files.c:3157