281 #define ANIM_UPDATE_DEFAULT (ANIM_UPDATE_DEPS | ANIM_UPDATE_ORDER | ANIM_UPDATE_HANDLES)
282 #define ANIM_UPDATE_DEFAULT_NOHANDLES (ANIM_UPDATE_DEFAULT & ~ANIM_UPDATE_HANDLES)
342 #define SEL_SCEC(sce) (CHECK_TYPE_INLINE(sce, Scene *), ((sce->flag & SCE_DS_SELECTED)))
343 #define EXPANDED_SCEC(sce) (CHECK_TYPE_INLINE(sce, Scene *), ((sce->flag & SCE_DS_COLLAPSED) == 0))
345 #define FILTER_WOR_SCED(wo) (CHECK_TYPE_INLINE(wo, World *), (wo->flag & WO_DS_EXPAND))
346 #define FILTER_LS_SCED(linestyle) ((linestyle->flag & LS_DS_EXPAND))
348 #define SEL_OBJC(base) (CHECK_TYPE_INLINE(base, Base *), ((base->flag & SELECT)))
349 #define EXPANDED_OBJC(ob) \
350 (CHECK_TYPE_INLINE(ob, Object *), (((ob)->nlaflag & OB_ADS_COLLAPSED) == 0))
352 #define FILTER_SKE_OBJD(key) (CHECK_TYPE_INLINE(key, Key *), ((key->flag & KEY_DS_EXPAND)))
353 #define FILTER_MAT_OBJD(ma) (CHECK_TYPE_INLINE(ma, Material *), ((ma->flag & MA_DS_EXPAND)))
354 #define FILTER_LAM_OBJD(la) (CHECK_TYPE_INLINE(la, Light *), ((la->flag & LA_DS_EXPAND)))
355 #define FILTER_CAM_OBJD(ca) (CHECK_TYPE_INLINE(ca, Camera *), ((ca->flag & CAM_DS_EXPAND)))
356 #define FILTER_CACHEFILE_OBJD(cf) \
357 (CHECK_TYPE_INLINE(cf, CacheFile *), (((cf)->flag & CACHEFILE_DS_EXPAND)))
358 #define FILTER_CUR_OBJD(cu) (CHECK_TYPE_INLINE(cu, Curve *), ((cu->flag & CU_DS_EXPAND)))
359 #define FILTER_PART_OBJD(part) \
360 (CHECK_TYPE_INLINE(part, ParticleSettings *), (((part)->flag & PART_DS_EXPAND)))
361 #define FILTER_MBALL_OBJD(mb) (CHECK_TYPE_INLINE(mb, MetaBall *), ((mb->flag2 & MB_DS_EXPAND)))
362 #define FILTER_ARM_OBJD(arm) (CHECK_TYPE_INLINE(arm, bArmature *), ((arm->flag & ARM_DS_EXPAND)))
363 #define FILTER_MESH_OBJD(me) (CHECK_TYPE_INLINE(me, Mesh *), ((me->flag & ME_DS_EXPAND)))
364 #define FILTER_LATTICE_OBJD(lt) (CHECK_TYPE_INLINE(lt, Lattice *), ((lt->flag & LT_DS_EXPAND)))
365 #define FILTER_SPK_OBJD(spk) (CHECK_TYPE_INLINE(spk, Speaker *), ((spk->flag & SPK_DS_EXPAND)))
366 #define FILTER_HAIR_OBJD(ha) (CHECK_TYPE_INLINE(ha, Hair *), ((ha->flag & HA_DS_EXPAND)))
367 #define FILTER_POINTS_OBJD(pt) (CHECK_TYPE_INLINE(pt, PointCloud *), ((pt->flag & PT_DS_EXPAND)))
368 #define FILTER_VOLUME_OBJD(vo) (CHECK_TYPE_INLINE(vo, Volume *), ((vo->flag & VO_DS_EXPAND)))
369 #define FILTER_SIMULATION_OBJD(sim) \
370 (CHECK_TYPE_INLINE(sim, Simulation *), ((sim->flag & SIM_DS_EXPAND)))
372 #define FILTER_NTREE_DATA(ntree) \
373 (CHECK_TYPE_INLINE(ntree, bNodeTree *), (((ntree)->flag & NTREE_DS_EXPAND)))
374 #define FILTER_TEX_DATA(tex) (CHECK_TYPE_INLINE(tex, Tex *), ((tex->flag & TEX_DS_EXPAND)))
377 #define SEL_ACTC(actc) ((actc->flag & ACT_SELECTED))
378 #define EXPANDED_ACTC(actc) ((actc->flag & ACT_COLLAPSED) == 0)
380 #define EXPANDED_DRVD(adt) ((adt->flag & ADT_DRIVERS_COLLAPSED) == 0)
384 #define EDITABLE_AGRP(agrp) (((agrp)->flag & AGRP_PROTECTED) == 0)
385 #define EXPANDED_AGRP(ac, agrp) \
386 (((!(ac) || ((ac)->spacetype != SPACE_GRAPH)) && ((agrp)->flag & AGRP_EXPANDED)) || \
387 (((ac) && ((ac)->spacetype == SPACE_GRAPH)) && ((agrp)->flag & AGRP_EXPANDED_G)))
388 #define SEL_AGRP(agrp) (((agrp)->flag & AGRP_SELECTED) || ((agrp)->flag & AGRP_ACTIVE))
390 #define EDITABLE_FCU(fcu) ((fcu->flag & FCURVE_PROTECTED) == 0)
391 #define SEL_FCU(fcu) (fcu->flag & FCURVE_SELECTED)
394 #define EDITABLE_SHAPEKEY(kb) ((kb->flag & KEYBLOCK_LOCKED) == 0)
395 #define SEL_SHAPEKEY(kb) (kb->flag & KEYBLOCK_SEL)
399 #define EXPANDED_GPD(gpd) (gpd->flag & GP_DATA_EXPAND)
401 #define EDITABLE_GPL(gpl) ((gpl->flag & GP_LAYER_LOCKED) == 0)
402 #define SEL_GPL(gpl) (gpl->flag & GP_LAYER_SELECT)
406 #define EXPANDED_MASK(mask) (mask->flag & MASK_ANIMF_EXPAND)
408 #define EDITABLE_MASK(masklay) ((masklay->flag & MASK_LAYERFLAG_LOCKED) == 0)
409 #define SEL_MASKLAY(masklay) (masklay->flag & SELECT)
412 #define SEL_NLT(nlt) (nlt->flag & NLATRACK_SELECTED)
413 #define EDITABLE_NLT(nlt) ((nlt->flag & NLATRACK_PROTECTED) == 0)
416 #define EXPANDED_MCLIP(clip) (clip->flag & MCLIP_DATA_EXPAND)
419 #define EXPANDED_PALETTE(palette) (palette->flag & PALETTE_DATA_EXPAND)
422 #define SEL_ANIMDATA(adt) (adt->flag & ADT_UI_SELECTED)
427 #define ACHANNEL_FIRST_TOP(ac) \
428 (UI_view2d_scale_get_y(&(ac)->region->v2d) * -UI_TIME_SCRUB_MARGIN_Y - ACHANNEL_SKIP)
429 #define ACHANNEL_HEIGHT(ac) (0.8f * (ac)->yscale_fac * U.widget_unit)
430 #define ACHANNEL_SKIP (0.1f * U.widget_unit)
431 #define ACHANNEL_STEP(ac) (ACHANNEL_HEIGHT(ac) + ACHANNEL_SKIP)
433 #define ACHANNEL_TOT_HEIGHT(ac, item_amount) \
434 (-ACHANNEL_FIRST_TOP(ac) + ACHANNEL_STEP(ac) * (item_amount + 1))
437 #define ACHANNEL_NAMEWIDTH (10 * U.widget_unit)
440 #define ACHANNEL_BUTTON_WIDTH (0.8f * U.widget_unit)
445 #define NLACHANNEL_FIRST_TOP(ac) \
446 (UI_view2d_scale_get_y(&(ac)->region->v2d) * -UI_TIME_SCRUB_MARGIN_Y - NLACHANNEL_SKIP)
447 #define NLACHANNEL_HEIGHT(snla) \
448 (((snla) && ((snla)->flag & SNLA_NOSTRIPCURVES)) ? (0.8f * U.widget_unit) : \
449 (1.2f * U.widget_unit))
450 #define NLACHANNEL_SKIP (0.1f * U.widget_unit)
451 #define NLACHANNEL_STEP(snla) (NLACHANNEL_HEIGHT(snla) + NLACHANNEL_SKIP)
453 #define NLACHANNEL_TOT_HEIGHT(ac, item_amount) \
454 (-NLACHANNEL_FIRST_TOP(ac) + NLACHANNEL_STEP(((SpaceNla *)(ac)->sl)) * (item_amount + 1))
457 #define NLACHANNEL_NAMEWIDTH (10 * U.widget_unit)
460 #define NLACHANNEL_BUTTON_WIDTH (0.8f * U.widget_unit)
589 size_t channel_index);
695 const char *modifier_panel_prefix,
698 const char *modifier_panel_prefix,
789 #define BEZKEYTYPE(bezt) ((bezt)->hide)
796 #define ACHANNEL_SET_FLAG(channel, smode, sflag) \
798 if (smode == ACHANNEL_SETFLAG_INVERT) { \
799 (channel)->flag ^= (sflag); \
801 else if (smode == ACHANNEL_SETFLAG_ADD) { \
802 (channel)->flag |= (sflag); \
805 (channel)->flag &= ~(sflag); \
815 #define ACHANNEL_SET_FLAG_NEG(channel, smode, sflag) \
817 if (smode == ACHANNEL_SETFLAG_INVERT) { \
818 (channel)->flag ^= (sflag); \
820 else if (smode == ACHANNEL_SETFLAG_ADD) { \
821 (channel)->flag &= ~(sflag); \
824 (channel)->flag |= (sflag); \
struct Depsgraph Depsgraph
void ED_animedit_unlink_action(struct bContext *C, struct ID *id, struct AnimData *adt, struct bAction *act, struct ReportList *reports, bool force_delete)
@ ACHANNEL_SETFLAG_TOGGLE
@ ACHANNEL_SETFLAG_INVERT
int getname_anim_fcurve(char *name, struct ID *id, struct FCurve *fcu)
void ED_operatortypes_animchannels(void)
void ANIM_flush_setting_anim_channels(bAnimContext *ac, ListBase *anim_data, bAnimListElem *ale_setting, eAnimChannel_Settings setting, eAnimChannels_SetFlag mode)
void ANIM_anim_channels_select_set(bAnimContext *ac, eAnimChannels_SetFlag sel)
void ED_drivers_editor_init(struct bContext *C, struct ScrArea *area)
void ANIM_fmodifier_panels(const struct bContext *C, struct ID *owner_id, struct ListBase *fmodifiers, uiListPanelIDFromDataFunc panel_id_fn)
@ ANIMTYPE_SPECIALDATA__UNUSED
void ANIM_channel_setting_set(bAnimContext *ac, bAnimListElem *ale, eAnimChannel_Settings setting, eAnimChannels_SetFlag mode)
void ED_operatormacros_graph(void)
void ANIM_list_elem_update(struct Main *bmain, struct Scene *scene, bAnimListElem *ale)
void ANIM_channel_draw_widgets(const struct bContext *C, bAnimContext *ac, bAnimListElem *ale, struct uiBlock *block, rctf *rect, size_t channel_index)
void ANIM_fmodifiers_copybuf_free(void)
void ANIM_fcurve_delete_from_animdata(bAnimContext *ac, struct AnimData *adt, struct FCurve *fcu)
void ANIM_draw_previewrange(const struct bContext *C, struct View2D *v2d, int end_frame_width)
bool(* PanelTypePollFn)(const struct bContext *C, struct PanelType *pt)
struct bAnimContext bAnimContext
void nla_action_get_color(struct AnimData *adt, struct bAction *act, float color[4])
void ED_nla_postop_refresh(bAnimContext *ac)
void ANIM_sync_animchannels_to_data(const struct bContext *C)
struct NlaStrip * ANIM_nla_context_strip(const struct bContext *C)
void ANIM_animdata_freelist(ListBase *anim_data)
void ANIM_channel_draw(bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc, size_t channel_index)
void animviz_calc_motionpaths(struct Depsgraph *depsgraph, struct Main *bmain, struct Scene *scene, ListBase *targets, eAnimvizCalcRange range, bool restore)
void ANIM_draw_framerange(struct Scene *scene, struct View2D *v2d)
void animviz_get_object_motionpaths(struct Object *ob, ListBase *targets)
bool ANIM_remove_empty_action_from_animdata(struct AnimData *adt)
void ANIM_nla_mapping_apply_fcurve(struct AnimData *adt, struct FCurve *fcu, bool restore, bool only_keys)
void ED_keymap_animchannels(struct wmKeyConfig *keyconf)
struct Depsgraph * animviz_depsgraph_build(struct Main *bmain, struct Scene *scene, struct ViewLayer *view_layer, struct ListBase *targets)
void ED_keymap_anim(struct wmKeyConfig *keyconf)
float ANIM_unit_mapping_get_factor(struct Scene *scene, struct ID *id, struct FCurve *fcu, short flag, float *r_offset)
void ANIM_set_active_channel(bAnimContext *ac, void *data, eAnimCont_Types datatype, eAnimFilter_Flags filter, void *channel_data, eAnim_ChannelType channel_type)
void ANIM_channel_debug_print_info(bAnimListElem *ale, short indent_level)
bool ANIM_animdata_context_getdata(bAnimContext *ac)
void getcolor_fcurve_rainbow(int cur, int tot, float out[3])
void ANIM_center_frame(struct bContext *C, int smooth_viewtx)
void ANIM_modifier_panels_register_graph_and_NLA(struct ARegionType *region_type, const char *modifier_panel_prefix, PanelTypePollFn poll_function)
void(* uiListPanelIDFromDataFunc)(void *data_link, char *r_idname)
void ANIM_draw_cfra(const struct bContext *C, struct View2D *v2d, short flag)
@ ACHANNEL_SETTING_ALWAYS_VISIBLE
@ ACHANNEL_SETTING_PINNED
@ ACHANNEL_SETTING_PROTECT
@ ACHANNEL_SETTING_VISIBLE
@ ACHANNEL_SETTING_EXPAND
@ ACHANNEL_SETTING_MOD_OFF
@ ACHANNEL_SETTING_SELECT
struct bAnimChannelType bAnimChannelType
bool ANIM_fmodifiers_paste_from_buf(ListBase *modifiers, bool replace, struct FCurve *curve)
size_t ANIM_animdata_filter(bAnimContext *ac, ListBase *anim_data, eAnimFilter_Flags filter_mode, void *data, eAnimCont_Types datatype)
void ANIM_anim_channels_select_toggle(bAnimContext *ac)
short ANIM_channel_setting_get(bAnimContext *ac, bAnimListElem *ale, eAnimChannel_Settings setting)
struct AnimData * ANIM_nla_mapping_get(bAnimContext *ac, bAnimListElem *ale)
void ED_operatortypes_anim(void)
struct AnimData * ED_actedit_animdata_from_context(struct bContext *C)
const bAnimChannelType * ANIM_channel_get_typeinfo(bAnimListElem *ale)
struct FCurve * ANIM_graph_context_fcurve(const struct bContext *C)
eAnimEditDraw_CurrentFrame
bool ANIM_animdata_get_context(const struct bContext *C, bAnimContext *ac)
void ED_operatormacros_action(void)
@ ANIMVIZ_CALC_RANGE_FULL
@ ANIMVIZ_CALC_RANGE_CURRENT_FRAME
@ ANIMVIZ_CALC_RANGE_CHANGED
void ANIM_id_update(struct Main *bmain, struct ID *id)
bool ANIM_fmodifiers_copy_to_buf(ListBase *modifiers, bool active)
@ ANIMFILTER_DATA_VISIBLE
@ ANIMFILTER_CURVE_VISIBLE
@ ANIMFILTER_LIST_VISIBLE
@ ANIMFILTER_LIST_CHANNELS
@ ANIMFILTER_TMP_IGNORE_ONLYSEL
short ANIM_get_normalization_flags(bAnimContext *ac)
void ANIM_animdata_update(bAnimContext *ac, ListBase *anim_data)
@ ANIM_UNITCONV_NORMALIZE
@ ANIM_UNITCONV_NORMALIZE_FREEZE
void ANIM_modifier_panels_register_graph_only(struct ARegionType *region_type, const char *modifier_panel_prefix, PanelTypePollFn poll_function)
struct bAnimListElem bAnimListElem
_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
const Depsgraph * depsgraph
DO_INLINE void filter(lfVector *V, fmatrix3x3 *S)
static void area(int d1, int d2, int e1, int e2, float weights[2])
bool active
all scheduled work for the GPU.
char owner_id[BKE_ST_MAXNAME]
void(* name)(bAnimListElem *ale, char *name)
void(* get_backdrop_color)(bAnimContext *ac, bAnimListElem *ale, float r_color[3])
short(* get_offset)(bAnimContext *ac, bAnimListElem *ale)
bool(* name_prop)(bAnimListElem *ale, struct PointerRNA *ptr, struct PropertyRNA **prop)
void(* draw_backdrop)(bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc)
const char * channel_type_name
bool(* has_setting)(bAnimContext *ac, bAnimListElem *ale, eAnimChannel_Settings setting)
short(* get_indent_level)(bAnimContext *ac, bAnimListElem *ale)
eAnimChannel_Role channel_role
int(* setting_flag)(bAnimContext *ac, eAnimChannel_Settings setting, bool *neg)
int(* icon)(bAnimListElem *ale)
struct ReportList * reports
struct ViewLayer * view_layer
struct Depsgraph * depsgraph
struct ID * fcurve_owner_id
struct bAnimListElem * next
struct bAnimListElem * prev