Blender  V2.93
BKE_fcurve.h
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  * The Original Code is Copyright (C) 2009 Blender Foundation, Joshua Leung
17  * All rights reserved.
18  */
19 
20 #pragma once
21 
26 #include "DNA_curve_types.h"
27 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31 
32 struct ChannelDriver;
33 struct FCM_EnvelopeData;
34 struct FCurve;
35 struct FModifier;
36 
37 struct AnimData;
39 struct BezTriple;
40 struct BlendDataReader;
41 struct BlendExpander;
42 struct BlendLibReader;
43 struct BlendWriter;
45 struct PathResolvedRNA;
46 struct PointerRNA;
47 struct PropertyRNA;
48 struct StructRNA;
49 struct bAction;
50 struct bContext;
51 
52 /* ************** Keyframe Tools ***************** */
53 
54 typedef struct CfraElem {
55  struct CfraElem *next, *prev;
56  float cfra;
57  int sel;
59 
60 /* ************** F-Curve Modifiers *************** */
61 
62 /* F-Curve Modifier Type-Info (fmi):
63  * This struct provides function pointers for runtime, so that functions can be
64  * written more generally (with fewer/no special exceptions for various modifiers).
65  *
66  * Callers of these functions must check that they actually point to something useful,
67  * as some constraints don't define some of these.
68  *
69  * Warning: it is not too advisable to reorder order of members of this struct,
70  * as you'll have to edit quite a few ($FMODIFIER_NUM_TYPES) of these
71  * structs.
72  */
73 typedef struct FModifierTypeInfo {
74  /* admin/ident */
76  short type;
78  short size;
80  short acttype;
82  short requires;
84  char name[64];
86  char structName[64];
89 
90  /* data management function pointers - special handling */
92  void (*free_data)(struct FModifier *fcm);
94  void (*copy_data)(struct FModifier *fcm, const struct FModifier *src);
98  void (*new_data)(void *mdata);
100  void (*verify_data)(struct FModifier *fcm);
101 
102  /* evaluation */
105  struct FCurve *fcu, struct FModifier *fcm, float cvalue, float evaltime, void *storage);
108  struct FCurve *fcu, struct FModifier *fcm, float *cvalue, float evaltime, void *storage);
110 
111 /* Values which describe the behavior of a FModifier Type */
112 typedef enum eFMI_Action_Types {
113  /* modifier only modifies values outside of data range */
115  /* modifier leaves data-points alone, but adjusts the interpolation between and around them */
117  /* modifier only modifies the values of points (but times stay the same) */
119  /* modifier generates a curve regardless of what came before */
122 
123 /* Flags for the requirements of a FModifier Type */
125  /* modifier requires original data-points (kindof beats the purpose of a modifier stack?) */
127  /* modifier doesn't require on any preceding data (i.e. it will generate a curve).
128  * Use in conjunction with FMI_TYPE_GENRATE_CURVE
129  */
131  /* refer to modifier instance */
134 
135 /* Function Prototypes for FModifierTypeInfo's */
138 
139 /* ---------------------- */
140 
141 struct FModifier *add_fmodifier(ListBase *modifiers, int type, struct FCurve *owner_fcu);
142 struct FModifier *copy_fmodifier(const struct FModifier *src);
143 void copy_fmodifiers(ListBase *dst, const ListBase *src);
144 bool remove_fmodifier(ListBase *modifiers, struct FModifier *fcm);
145 void free_fmodifiers(ListBase *modifiers);
146 
147 struct FModifier *find_active_fmodifier(ListBase *modifiers);
148 void set_active_fmodifier(ListBase *modifiers, struct FModifier *fcm);
149 
150 bool list_has_suitable_fmodifier(ListBase *modifiers, int mtype, short acttype);
151 
152 typedef struct FModifiersStackStorage {
155  void *buffer;
157 
160  ListBase *modifiers,
161  struct FCurve *fcu,
162  float cvalue,
163  float evaltime);
165  ListBase *modifiers,
166  struct FCurve *fcu,
167  float *cvalue,
168  float evaltime);
169 
170 void fcurve_bake_modifiers(struct FCurve *fcu, int start, int end);
171 
173  float frame,
174  int arraylen,
175  bool *r_exists);
176 
177 /* ************** F-Curves API ******************** */
178 
179 /* threshold for binary-searching keyframes - threshold here should be good enough for now,
180  * but should become userpref */
181 #define BEZT_BINARYSEARCH_THRESH 0.01f /* was 0.00001, but giving errors */
182 
183 /* -------- Data Management -------- */
184 struct FCurve *BKE_fcurve_create(void);
185 void BKE_fcurve_free(struct FCurve *fcu);
186 struct FCurve *BKE_fcurve_copy(const struct FCurve *fcu);
187 
188 void BKE_fcurves_free(ListBase *list);
189 void BKE_fcurves_copy(ListBase *dst, ListBase *src);
190 
191 void BKE_fcurve_foreach_id(struct FCurve *fcu, struct LibraryForeachIDData *data);
192 
193 /* find matching F-Curve in the given list of F-Curves */
194 struct FCurve *BKE_fcurve_find(ListBase *list, const char rna_path[], const int array_index);
195 
196 struct FCurve *BKE_fcurve_iter_step(struct FCurve *fcu_iter, const char rna_path[]);
197 
198 /* high level function to get an fcurve from C without having the rna */
200  ID *id, void *data, struct StructRNA *type, const char *prop_name, int index, bool *r_driven);
201 
202 /* Get list of LinkData's containing pointers to the F-Curves which control the types of data
203  * indicated
204  * e.g. numMatches = BKE_fcurves_filter(matches, &act->curves, "pose.bones[", "MyFancyBone");
205  */
206 int BKE_fcurves_filter(ListBase *dst, ListBase *src, const char *dataPrefix, const char *dataName);
207 
208 /* Find an f-curve based on an rna property. */
210  struct PropertyRNA *prop,
211  int rnaindex,
212  struct AnimData **r_adt,
213  struct bAction **r_action,
214  bool *r_driven,
215  bool *r_special);
216 /* Same as above, but takes a context data,
217  * temp hack needed for complex paths like texture ones. */
219  struct PointerRNA *ptr,
220  struct PropertyRNA *prop,
221  int rnaindex,
222  struct AnimData **r_animdata,
223  struct bAction **r_action,
224  bool *r_driven,
225  bool *r_special);
226 
227 /* Binary search algorithm for finding where to 'insert' BezTriple with given frame number.
228  * Returns the index to insert at (data already at that index will be offset if replace is 0)
229  */
231  float frame,
232  int arraylen,
233  bool *r_replace);
234 
235 /* fcurve_cache.c */
236 /* Cached f-curve look-ups, use when this needs to be done many times. */
237 struct FCurvePathCache;
239 void BKE_fcurve_pathcache_destroy(struct FCurvePathCache *fcache);
241  const char rna_path[],
242  const int array_index);
244  const char *rna_path,
245  struct FCurve **fcurve_result,
246  int fcurve_result_len);
247 
248 /* get the time extents for F-Curve */
250  struct FCurve *fcu, float *min, float *max, const bool do_sel_only, const bool do_min_length);
251 
252 /* get the bounding-box extents for F-Curve */
253 bool BKE_fcurve_calc_bounds(struct FCurve *fcu,
254  float *xmin,
255  float *xmax,
256  float *ymin,
257  float *ymax,
258  const bool do_sel_only,
259  const bool include_handles);
260 
261 float *BKE_fcurves_calc_keyed_frames_ex(struct FCurve **fcurve_array,
262  const int fcurve_array_len,
263  const float interval,
264  int *r_frames_len);
265 float *BKE_fcurves_calc_keyed_frames(struct FCurve **fcurve_array,
266  const int fcurve_array_len,
267  int *r_frames_len);
268 
269 void BKE_fcurve_active_keyframe_set(struct FCurve *fcu, const struct BezTriple *active_bezt);
271 
272 /* Move the indexed keyframe to the given value, and move the handles with it to ensure the slope
273  * remains the same. */
274 void BKE_fcurve_keyframe_move_value_with_handles(struct BezTriple *keyframe, float new_value);
275 
276 /* .............. */
277 
278 /* Are keyframes on F-Curve of any use (to final result, and to show in editors)? */
279 bool BKE_fcurve_are_keyframes_usable(struct FCurve *fcu);
280 
281 /* Can keyframes be added to F-Curve? */
282 bool BKE_fcurve_is_keyframable(struct FCurve *fcu);
283 bool BKE_fcurve_is_protected(struct FCurve *fcu);
284 
285 /* The curve is an infinite cycle via Cycles modifier */
286 bool BKE_fcurve_is_cyclic(struct FCurve *fcu);
287 
288 /* Type of infinite cycle for a curve. */
289 typedef enum eFCU_Cycle_Type {
291  /* The cycle repeats identically to the base range. */
293  /* The cycle accumulates the change between start and end keys. */
296 
298 
299 /* Recompute handles to neatly subdivide the prev-next range at bezt. */
301  struct BezTriple *prev,
302  struct BezTriple *next,
303  float *r_pdelta);
304 
305 /* -------- Curve Sanity -------- */
306 
307 void calchandles_fcurve(struct FCurve *fcu);
308 void calchandles_fcurve_ex(struct FCurve *fcu, eBezTriple_Flag handle_sel_flag);
309 void testhandles_fcurve(struct FCurve *fcu, eBezTriple_Flag sel_flag, const bool use_handle);
310 void sort_time_fcurve(struct FCurve *fcu);
311 bool test_time_fcurve(struct FCurve *fcu);
312 
313 void BKE_fcurve_correct_bezpart(const float v1[2], float v2[2], float v3[2], const float v4[2]);
314 
315 /* -------- Evaluation -------- */
316 
317 /* evaluate fcurve */
318 float evaluate_fcurve(struct FCurve *fcu, float evaltime);
319 float evaluate_fcurve_only_curve(struct FCurve *fcu, float evaltime);
321  struct FCurve *fcu,
322  struct ChannelDriver *driver_orig,
323  const struct AnimationEvalContext *anim_eval_context);
324 bool BKE_fcurve_is_empty(struct FCurve *fcu);
325 /* evaluate fcurve and store value */
326 float calculate_fcurve(struct PathResolvedRNA *anim_rna,
327  struct FCurve *fcu,
328  const struct AnimationEvalContext *anim_eval_context);
329 
330 /* ************* F-Curve Samples API ******************** */
331 
332 /* -------- Defines -------- */
333 
334 /* Basic signature for F-Curve sample-creation function
335  * - fcu: the F-Curve being operated on
336  * - data: pointer to some specific data that may be used by one of the callbacks
337  */
338 typedef float (*FcuSampleFunc)(struct FCurve *fcu, void *data, float evaltime);
339 
340 /* ----- Sampling Callbacks ------ */
341 
342 /* Basic sampling callback which acts as a wrapper for evaluate_fcurve() */
343 float fcurve_samplingcb_evalcurve(struct FCurve *fcu, void *data, float evaltime);
344 
345 /* -------- Main Methods -------- */
346 
347 /* Main API function for creating a set of sampled curve data, given some callback function
348  * used to retrieve the values to store.
349  */
351  struct FCurve *fcu, void *data, int start, int end, FcuSampleFunc sample_cb);
352 
353 /* Convert baked/sampled fcurves into bezt/regular fcurves. */
354 void fcurve_samples_to_keyframes(struct FCurve *fcu, const int start, const int end);
355 
356 /* ************* F-Curve .blend file API ******************** */
357 
358 void BKE_fmodifiers_blend_write(struct BlendWriter *writer, struct ListBase *fmodifiers);
360  ListBase *fmodifiers,
361  struct FCurve *curve);
363  struct ID *id,
364  struct ListBase *fmodifiers);
365 void BKE_fmodifiers_blend_read_expand(struct BlendExpander *expander, struct ListBase *fmodifiers);
366 
367 void BKE_fcurve_blend_write(struct BlendWriter *writer, struct ListBase *fcurves);
368 void BKE_fcurve_blend_read_data(struct BlendDataReader *reader, struct ListBase *fcurves);
369 void BKE_fcurve_blend_read_lib(struct BlendLibReader *reader,
370  struct ID *id,
371  struct ListBase *fcurves);
372 void BKE_fcurve_blend_read_expand(struct BlendExpander *expander, struct ListBase *fcurves);
373 
374 #ifdef __cplusplus
375 }
376 #endif
typedef float(TangentPoint)[2]
struct FModifier * copy_fmodifier(const struct FModifier *src)
eFMI_Action_Types
Definition: BKE_fcurve.h:112
@ FMI_TYPE_EXTRAPOLATION
Definition: BKE_fcurve.h:114
@ FMI_TYPE_REPLACE_VALUES
Definition: BKE_fcurve.h:118
@ FMI_TYPE_INTERPOLATION
Definition: BKE_fcurve.h:116
@ FMI_TYPE_GENERATE_CURVE
Definition: BKE_fcurve.h:120
struct FCurvePathCache * BKE_fcurve_pathcache_create(ListBase *list)
Definition: fcurve_cache.c:78
bool BKE_fcurve_calc_bounds(struct FCurve *fcu, float *xmin, float *xmax, float *ymin, float *ymax, const bool do_sel_only, const bool include_handles)
Definition: fcurve.c:664
struct FModifiersStackStorage FModifiersStackStorage
void BKE_fcurve_active_keyframe_set(struct FCurve *fcu, const struct BezTriple *active_bezt)
void testhandles_fcurve(struct FCurve *fcu, eBezTriple_Flag sel_flag, const bool use_handle)
Definition: fcurve.c:1407
float evaluate_fcurve(struct FCurve *fcu, float evaltime)
Definition: fcurve.c:2186
bool BKE_fcurve_bezt_subdivide_handles(struct BezTriple *bezt, struct BezTriple *prev, struct BezTriple *next, float *r_pdelta)
Definition: fcurve.c:1714
int BKE_fcm_envelope_find_index(struct FCM_EnvelopeData *array, float frame, int arraylen, bool *r_exists)
bool BKE_fcurve_calc_range(struct FCurve *fcu, float *min, float *max, const bool do_sel_only, const bool do_min_length)
Definition: fcurve.c:795
void copy_fmodifiers(ListBase *dst, const ListBase *src)
Definition: fmodifier.c:1197
const FModifierTypeInfo * fmodifier_get_typeinfo(const struct FModifier *fcm)
void BKE_fcurve_blend_write(struct BlendWriter *writer, struct ListBase *fcurves)
Definition: fcurve.c:2397
void BKE_fmodifiers_blend_read_data(struct BlendDataReader *reader, ListBase *fmodifiers, struct FCurve *curve)
Definition: fcurve.c:2336
void BKE_fcurve_keyframe_move_value_with_handles(struct BezTriple *keyframe, float new_value)
Definition: fcurve.c:947
void BKE_fcurve_blend_read_data(struct BlendDataReader *reader, struct ListBase *fcurves)
Definition: fcurve.c:2436
float * BKE_fcurves_calc_keyed_frames(struct FCurve **fcurve_array, const int fcurve_array_len, int *r_frames_len)
Definition: fcurve.c:885
float calculate_fcurve(struct PathResolvedRNA *anim_rna, struct FCurve *fcu, const struct AnimationEvalContext *anim_eval_context)
float evaluate_fcurve_only_curve(struct FCurve *fcu, float evaltime)
Definition: fcurve.c:2193
eFCU_Cycle_Type
Definition: BKE_fcurve.h:289
@ FCU_CYCLE_OFFSET
Definition: BKE_fcurve.h:294
@ FCU_CYCLE_NONE
Definition: BKE_fcurve.h:290
@ FCU_CYCLE_PERFECT
Definition: BKE_fcurve.h:292
bool BKE_fcurve_is_empty(struct FCurve *fcu)
Definition: fcurve.c:2250
void BKE_fcurve_free(struct FCurve *fcu)
Definition: fcurve.c:81
void BKE_fcurve_foreach_id(struct FCurve *fcu, struct LibraryForeachIDData *data)
Definition: fcurve.c:188
float * BKE_fcurves_calc_keyed_frames_ex(struct FCurve **fcurve_array, const int fcurve_array_len, const float interval, int *r_frames_len)
Definition: fcurve.c:850
struct FModifier * find_active_fmodifier(ListBase *modifiers)
Definition: fmodifier.c:1288
void BKE_fcurve_pathcache_destroy(struct FCurvePathCache *fcache)
Definition: fcurve_cache.c:127
void calchandles_fcurve_ex(struct FCurve *fcu, eBezTriple_Flag handle_sel_flag)
Definition: fcurve.c:1302
void fcurve_store_samples(struct FCurve *fcu, void *data, int start, int end, FcuSampleFunc sample_cb)
Definition: fcurve.c:1108
void BKE_fmodifiers_blend_write(struct BlendWriter *writer, struct ListBase *fmodifiers)
Definition: fcurve.c:2286
void BKE_fcurve_blend_read_lib(struct BlendLibReader *reader, struct ID *id, struct ListBase *fcurves)
Definition: fcurve.c:2491
struct FCurve * BKE_fcurve_pathcache_find(struct FCurvePathCache *fcache, const char rna_path[], const int array_index)
void evaluate_value_fmodifiers(FModifiersStackStorage *storage, ListBase *modifiers, struct FCurve *fcu, float *cvalue, float evaltime)
Definition: fmodifier.c:1518
float(* FcuSampleFunc)(struct FCurve *fcu, void *data, float evaltime)
Definition: BKE_fcurve.h:338
bool BKE_fcurve_are_keyframes_usable(struct FCurve *fcu)
Definition: fcurve.c:963
struct FCurve * BKE_fcurve_find_by_rna_context_ui(struct bContext *C, struct PointerRNA *ptr, struct PropertyRNA *prop, int rnaindex, struct AnimData **r_animdata, struct bAction **r_action, bool *r_driven, bool *r_special)
Definition: fcurve.c:390
void fcurve_bake_modifiers(struct FCurve *fcu, int start, int end)
Definition: fmodifier.c:1570
void set_active_fmodifier(ListBase *modifiers, struct FModifier *fcm)
Definition: fmodifier.c:1311
int BKE_fcurves_filter(ListBase *dst, ListBase *src, const char *dataPrefix, const char *dataName)
Definition: fcurve.c:336
struct FCurve * BKE_fcurve_find_by_rna(struct PointerRNA *ptr, struct PropertyRNA *prop, int rnaindex, struct AnimData **r_adt, struct bAction **r_action, bool *r_driven, bool *r_special)
Definition: fcurve.c:378
bool BKE_fcurve_is_keyframable(struct FCurve *fcu)
Definition: fcurve.c:1031
eFMI_Requirement_Flags
Definition: BKE_fcurve.h:124
@ FMI_REQUIRES_NOTHING
Definition: BKE_fcurve.h:130
@ FMI_REQUIRES_RUNTIME_CHECK
Definition: BKE_fcurve.h:132
@ FMI_REQUIRES_ORIGINAL_DATA
Definition: BKE_fcurve.h:126
struct FCurve * BKE_fcurve_copy(const struct FCurve *fcu)
struct FCurve * BKE_fcurve_iter_step(struct FCurve *fcu_iter, const char rna_path[])
Definition: fcurve.c:304
bool BKE_fcurve_is_protected(struct FCurve *fcu)
Definition: fcurve.c:1023
bool remove_fmodifier(ListBase *modifiers, struct FModifier *fcm)
Definition: fmodifier.c:1226
struct FCurve * BKE_fcurve_find(ListBase *list, const char rna_path[], const int array_index)
Definition: fcurve.c:274
float evaluate_time_fmodifiers(FModifiersStackStorage *storage, ListBase *modifiers, struct FCurve *fcu, float cvalue, float evaltime)
Definition: fmodifier.c:1457
eFCU_Cycle_Type BKE_fcurve_get_cycle_type(struct FCurve *fcu)
Definition: fcurve.c:1232
bool test_time_fcurve(struct FCurve *fcu)
Definition: fcurve.c:1472
void sort_time_fcurve(struct FCurve *fcu)
Definition: fcurve.c:1429
void fcurve_samples_to_keyframes(struct FCurve *fcu, const int start, const int end)
Definition: fcurve.c:1156
const FModifierTypeInfo * get_fmodifier_typeinfo(const int type)
Definition: fmodifier.c:1072
void calchandles_fcurve(struct FCurve *fcu)
Definition: fcurve.c:1391
void BKE_fcurve_blend_read_expand(struct BlendExpander *expander, struct ListBase *fcurves)
Definition: fcurve.c:2521
void BKE_fcurves_free(ListBase *list)
Definition: fcurve.c:103
struct FModifier * add_fmodifier(ListBase *modifiers, int type, struct FCurve *owner_fcu)
Definition: fmodifier.c:1114
struct CfraElem CfraElem
bool list_has_suitable_fmodifier(ListBase *modifiers, int mtype, short acttype)
Definition: fmodifier.c:1337
void BKE_fcurves_copy(ListBase *dst, ListBase *src)
Definition: fcurve.c:165
int BKE_fcurve_active_keyframe_index(const struct FCurve *fcu)
int BKE_fcurve_pathcache_find_array(struct FCurvePathCache *fcache, const char *rna_path, struct FCurve **fcurve_result, int fcurve_result_len)
Definition: fcurve_cache.c:163
struct FCurve * id_data_find_fcurve(ID *id, void *data, struct StructRNA *type, const char *prop_name, int index, bool *r_driven)
Definition: fcurve.c:221
struct FCurve * BKE_fcurve_create(void)
Definition: fcurve.c:68
float evaluate_fcurve_driver(struct PathResolvedRNA *anim_rna, struct FCurve *fcu, struct ChannelDriver *driver_orig, const struct AnimationEvalContext *anim_eval_context)
void BKE_fmodifiers_blend_read_lib(struct BlendLibReader *reader, struct ID *id, struct ListBase *fmodifiers)
Definition: fcurve.c:2369
void free_fmodifiers(ListBase *modifiers)
Definition: fmodifier.c:1269
struct FModifierTypeInfo FModifierTypeInfo
void BKE_fmodifiers_blend_read_expand(struct BlendExpander *expander, struct ListBase *fmodifiers)
Definition: fcurve.c:2383
uint evaluate_fmodifiers_storage_size_per_modifier(ListBase *modifiers)
Definition: fmodifier.c:1376
int BKE_fcurve_bezt_binarysearch_index(struct BezTriple array[], float frame, int arraylen, bool *r_replace)
Definition: fcurve.c:600
float fcurve_samplingcb_evalcurve(struct FCurve *fcu, void *data, float evaltime)
bool BKE_fcurve_is_cyclic(struct FCurve *fcu)
Definition: fcurve.c:1267
void BKE_fcurve_correct_bezpart(const float v1[2], float v2[2], float v3[2], const float v4[2])
Definition: fcurve.c:1521
unsigned int uint
Definition: BLI_sys_types.h:83
eBezTriple_Flag
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble v1
#define C
Definition: RandGen.cpp:39
ATTR_WARN_UNUSED_RESULT const BMVert * v2
float evaltime
Definition: bpy_driver.c:181
Curve curve
static ulong * next
#define min(a, b)
Definition: sort.c:51
float cfra
Definition: BKE_fcurve.h:56
struct CfraElem * next
Definition: BKE_fcurve.h:55
struct CfraElem * prev
Definition: BKE_fcurve.h:55
int sel
Definition: BKE_fcurve.h:57
char * rna_path
BezTriple * bezt
struct FCurve * prev
int array_index
void(* verify_data)(struct FModifier *fcm)
Definition: BKE_fcurve.h:100
float(* evaluate_modifier_time)(struct FCurve *fcu, struct FModifier *fcm, float cvalue, float evaltime, void *storage)
Definition: BKE_fcurve.h:104
void(* free_data)(struct FModifier *fcm)
Definition: BKE_fcurve.h:92
void(* evaluate_modifier)(struct FCurve *fcu, struct FModifier *fcm, float *cvalue, float evaltime, void *storage)
Definition: BKE_fcurve.h:107
void(* new_data)(void *mdata)
Definition: BKE_fcurve.h:98
char structName[64]
Definition: BKE_fcurve.h:86
void(* copy_data)(struct FModifier *fcm, const struct FModifier *src)
Definition: BKE_fcurve.h:94
Definition: DNA_ID.h:273
float max
PointerRNA * ptr
Definition: wm_files.c:3157