275#define ANIM_UPDATE_DEFAULT (ANIM_UPDATE_DEPS | ANIM_UPDATE_ORDER | ANIM_UPDATE_HANDLES)
276#define ANIM_UPDATE_DEFAULT_NOHANDLES (ANIM_UPDATE_DEFAULT & ~ANIM_UPDATE_HANDLES)
436#define SEL_SCEC(sce) (CHECK_TYPE_INLINE(sce, Scene *), ((sce->flag & SCE_DS_SELECTED)))
437#define EXPANDED_SCEC(sce) (CHECK_TYPE_INLINE(sce, Scene *), ((sce->flag & SCE_DS_COLLAPSED) == 0))
439#define FILTER_WOR_SCED(wo) (CHECK_TYPE_INLINE(wo, World *), (wo->flag & WO_DS_EXPAND))
440#define FILTER_LS_SCED(linestyle) ((linestyle->flag & LS_DS_EXPAND))
442#define SEL_OBJC(base) (CHECK_TYPE_INLINE(base, Base *), ((base->flag & SELECT)))
443#define EXPANDED_OBJC(ob) \
444 (CHECK_TYPE_INLINE(ob, Object *), (((ob)->nlaflag & OB_ADS_COLLAPSED) == 0))
446#define FILTER_SKE_OBJD(key) (CHECK_TYPE_INLINE(key, Key *), ((key->flag & KEY_DS_EXPAND)))
447#define FILTER_MAT_OBJD(ma) (CHECK_TYPE_INLINE(ma, Material *), ((ma->flag & MA_DS_EXPAND)))
448#define FILTER_LAM_OBJD(la) (CHECK_TYPE_INLINE(la, Light *), ((la->flag & LA_DS_EXPAND)))
449#define FILTER_CAM_OBJD(ca) (CHECK_TYPE_INLINE(ca, Camera *), ((ca->flag & CAM_DS_EXPAND)))
450#define FILTER_CACHEFILE_OBJD(cf) \
451 (CHECK_TYPE_INLINE(cf, CacheFile *), (((cf)->flag & CACHEFILE_DS_EXPAND)))
452#define FILTER_CUR_OBJD(cu) (CHECK_TYPE_INLINE(cu, Curve *), ((cu->flag & CU_DS_EXPAND)))
453#define FILTER_PART_OBJD(part) \
454 (CHECK_TYPE_INLINE(part, ParticleSettings *), (((part)->flag & PART_DS_EXPAND)))
455#define FILTER_MBALL_OBJD(mb) (CHECK_TYPE_INLINE(mb, MetaBall *), ((mb->flag2 & MB_DS_EXPAND)))
456#define FILTER_ARM_OBJD(arm) (CHECK_TYPE_INLINE(arm, bArmature *), ((arm->flag & ARM_DS_EXPAND)))
457#define FILTER_MESH_OBJD(me) (CHECK_TYPE_INLINE(me, Mesh *), ((me->flag & ME_DS_EXPAND)))
458#define FILTER_LATTICE_OBJD(lt) (CHECK_TYPE_INLINE(lt, Lattice *), ((lt->flag & LT_DS_EXPAND)))
459#define FILTER_SPK_OBJD(spk) (CHECK_TYPE_INLINE(spk, Speaker *), ((spk->flag & SPK_DS_EXPAND)))
460#define FILTER_CURVES_OBJD(ha) (CHECK_TYPE_INLINE(ha, Curves *), ((ha->flag & HA_DS_EXPAND)))
461#define FILTER_POINTS_OBJD(pt) (CHECK_TYPE_INLINE(pt, PointCloud *), ((pt->flag & PT_DS_EXPAND)))
462#define FILTER_VOLUME_OBJD(vo) (CHECK_TYPE_INLINE(vo, Volume *), ((vo->flag & VO_DS_EXPAND)))
463#define FILTER_LIGHTPROBE_OBJD(probe) \
464 (CHECK_TYPE_INLINE(probe, LightProbe *), ((probe->flag & LIGHTPROBE_DS_EXPAND)))
466#define FILTER_NTREE_DATA(ntree) \
467 (CHECK_TYPE_INLINE(ntree, bNodeTree *), (((ntree)->flag & NTREE_DS_EXPAND)))
468#define FILTER_TEX_DATA(tex) (CHECK_TYPE_INLINE(tex, Tex *), ((tex->flag & TEX_DS_EXPAND)))
471#define SEL_ACTC(actc) ((actc->flag & ACT_SELECTED))
472#define EXPANDED_ACTC(actc) ((actc->flag & ACT_COLLAPSED) == 0)
474#define EXPANDED_DRVD(adt) ((adt->flag & ADT_DRIVERS_COLLAPSED) == 0)
475#define EXPANDED_ADT(adt) ((adt->flag & ADT_UI_EXPANDED) != 0)
479#define EDITABLE_AGRP(agrp) (((agrp)->flag & AGRP_PROTECTED) == 0)
480#define EXPANDED_AGRP(ac, agrp) \
481 (((!(ac) || ((ac)->spacetype != SPACE_GRAPH)) && ((agrp)->flag & AGRP_EXPANDED)) || \
482 (((ac) && ((ac)->spacetype == SPACE_GRAPH)) && ((agrp)->flag & AGRP_EXPANDED_G)))
483#define SEL_AGRP(agrp) (((agrp)->flag & AGRP_SELECTED) || ((agrp)->flag & AGRP_ACTIVE))
485#define EDITABLE_FCU(fcu) (((fcu)->flag & FCURVE_PROTECTED) == 0)
486#define SEL_FCU(fcu) ((fcu)->flag & FCURVE_SELECTED)
489#define EDITABLE_SHAPEKEY(kb) ((kb->flag & KEYBLOCK_LOCKED) == 0)
490#define SEL_SHAPEKEY(kb) (kb->flag & KEYBLOCK_SEL)
494#define EXPANDED_GPD(gpd) (gpd->flag & GP_DATA_EXPAND)
496#define EDITABLE_GPL(gpl) ((gpl->flag & GP_LAYER_LOCKED) == 0)
497#define SEL_GPL(gpl) (gpl->flag & GP_LAYER_SELECT)
501#define EXPANDED_MASK(mask) (mask->flag & MASK_ANIMF_EXPAND)
503#define EDITABLE_MASK(masklay) ((masklay->flag & MASK_LAYERFLAG_LOCKED) == 0)
504#define SEL_MASKLAY(masklay) (masklay->flag & SELECT)
507#define SEL_NLT(nlt) (nlt->flag & NLATRACK_SELECTED)
508#define EDITABLE_NLT(nlt) ((nlt->flag & NLATRACK_PROTECTED) == 0)
511#define EXPANDED_MCLIP(clip) (clip->flag & MCLIP_DATA_EXPAND)
514#define EXPANDED_PALETTE(palette) (palette->flag & PALETTE_DATA_EXPAND)
517#define SEL_ANIMDATA(adt) (adt->flag & ADT_UI_SELECTED)
526#define NLATRACK_FIRST_TOP(ac) \
527 (UI_view2d_scale_get_y(&(ac)->region->v2d) * -UI_TIME_SCRUB_MARGIN_Y - NLATRACK_SKIP)
528#define NLATRACK_HEIGHT(snla) \
529 (((snla) && ((snla)->flag & SNLA_NOSTRIPCURVES)) ? (0.8f * U.widget_unit) : \
530 (1.2f * U.widget_unit))
531#define NLATRACK_SKIP (0.1f * U.widget_unit)
532#define NLATRACK_STEP(snla) (NLATRACK_HEIGHT(snla) + NLATRACK_SKIP)
534#define NLATRACK_TOT_HEIGHT(ac, item_amount) \
535 (-NLATRACK_FIRST_TOP(ac) + NLATRACK_STEP(((SpaceNla *)(ac)->sl)) * (item_amount + 1))
538#define NLATRACK_NAMEWIDTH (10 * U.widget_unit)
623 ID **r_action_user =
nullptr);
781 size_t channel_index);
949 const char *modifier_panel_prefix,
952 const char *modifier_panel_prefix,
1136#define ACHANNEL_SET_FLAG(channel, smode, sflag) \
1138 if (smode == ACHANNEL_SETFLAG_INVERT) { \
1139 (channel)->flag ^= (sflag); \
1141 else if (smode == ACHANNEL_SETFLAG_ADD) { \
1142 (channel)->flag |= (sflag); \
1145 (channel)->flag &= ~(sflag); \
1156#define ACHANNEL_SET_FLAG_NEG(channel, smode, sflag) \
1158 if (smode == ACHANNEL_SETFLAG_INVERT) { \
1159 (channel)->flag ^= (sflag); \
1161 else if (smode == ACHANNEL_SETFLAG_ADD) { \
1162 (channel)->flag &= ~(sflag); \
1165 (channel)->flag |= (sflag); \
#define ENUM_OPERATORS(_type, _max)
Depsgraph * animviz_depsgraph_build(Main *bmain, Scene *scene, ViewLayer *view_layer, blender::Span< MPathTarget * > targets)
@ ACHANNEL_SETFLAG_TOGGLE
@ ACHANNEL_SETFLAG_EXTEND_RANGE
@ ACHANNEL_SETFLAG_INVERT
std::string getname_anim_fcurve_for_slot(Main &bmain, const blender::animrig::Slot &slot, FCurve &fcurve)
NlaTrack * ANIM_nla_context_track(const bContext *C)
bool ANIM_fmodifiers_paste_from_buf(ListBase *modifiers, bool replace, FCurve *curve)
bool ANIM_animdata_can_have_greasepencil(const eAnimCont_Types type)
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_operatortypes_anim()
short ANIM_get_normalization_flags(SpaceLink *space_link)
void ED_keymap_animchannels(wmKeyConfig *keyconf)
@ ANIMTYPE_SPECIALDATA__UNUSED
@ ANIMTYPE_GREASE_PENCIL_DATABLOCK
@ ANIMTYPE_GREASE_PENCIL_LAYER
@ ANIMTYPE_FILLACT_LAYERED
@ ANIMTYPE_GREASE_PENCIL_LAYER_GROUP
AnimData * ED_actedit_animdata_from_context(const bContext *C, ID **r_adt_id_owner)
void ANIM_channel_setting_set(bAnimContext *ac, bAnimListElem *ale, eAnimChannel_Settings setting, eAnimChannels_SetFlag mode)
float ANIM_UI_get_channel_skip()
void ANIM_channel_draw_widgets(const bContext *C, bAnimContext *ac, bAnimListElem *ale, uiBlock *block, const rctf *rect, size_t channel_index)
float ANIM_UI_get_keyframe_scale_factor()
void ED_operatormacros_graph()
float ANIM_UI_get_channel_name_width()
void ANIM_channel_debug_print_info(bAnimContext &ac, bAnimListElem *ale, short indent_level)
void ED_nla_postop_refresh(bAnimContext *ac)
void ED_anim_ale_fcurve_delete(bAnimContext &ac, bAnimListElem &ale)
void ANIM_animdata_freelist(ListBase *anim_data)
void ANIM_channel_draw(bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc, size_t channel_index)
void ANIM_draw_action_framerange(AnimData *adt, bAction *action, View2D *v2d, float ymin, float ymax)
void ANIM_frame_channel_y_extents(bContext *C, bAnimContext *ac)
rctf ANIM_frame_range_view2d_add_xmargin(const View2D &view_2d, rctf view_rect)
void ED_operatormacros_action()
float ANIM_nla_tweakedit_remap(bAnimListElem *ale, float cframe, eNlaTime_ConvertModes mode)
bool ANIM_animdata_get_context(const bContext *C, bAnimContext *ac)
float ANIM_UI_get_channel_step()
void(*)(void *data_link, char *r_idname) uiListPanelIDFromDataFunc
void animviz_free_motionpath_targets(blender::Vector< MPathTarget * > &targets)
bool ANIM_is_active_channel(bAnimListElem *ale)
float ANIM_UI_get_channels_total_height(View2D *v2d, int item_count)
@ ALE_GREASE_PENCIL_GROUP
void animviz_motionpath_compute_range(Object *ob, Scene *scene)
std::optional< int > getname_anim_fcurve(char *name, ID *id, FCurve *fcu)
float ANIM_UI_get_first_channel_top(View2D *v2d)
void ANIM_draw_cfra(const bContext *C, View2D *v2d, short flag)
void ED_animedit_unlink_action(bContext *C, ID *id, AnimData *adt, bAction *act, ReportList *reports, bool force_delete)
bAction * ANIM_active_action_from_area(Scene *scene, ViewLayer *view_layer, const ScrArea *area, ID **r_action_user=nullptr)
void ANIM_set_active_channel(bAnimContext *ac, void *data, eAnimCont_Types datatype, eAnimFilter_Flags filter, void *channel_data, eAnim_ChannelType channel_type)
bool ANIM_animdata_context_getdata(bAnimContext *ac)
void ANIM_deselect_keys_in_animation_editors(bContext *C)
void ANIM_modifier_panels_register_graph_only(ARegionType *region_type, const char *modifier_panel_prefix, PanelTypePollFn poll_function)
float ANIM_UI_get_channel_height()
void getcolor_fcurve_rainbow(int cur, int tot, float out[3])
size_t ANIM_animfilter_action_slot(bAnimContext *ac, ListBase *anim_data, blender::animrig::Action &action, blender::animrig::Slot &slot, eAnimFilter_Flags filter_mode, ID *animated_id)
void ANIM_center_frame(bContext *C, int smooth_viewtx)
void ANIM_nla_mapping_apply_fcurve(AnimData *adt, FCurve *fcu, bool restore, bool only_keys)
NlaStrip * ANIM_nla_context_strip(const bContext *C)
void ANIM_modifier_panels_register_graph_and_NLA(ARegionType *region_type, const char *modifier_panel_prefix, PanelTypePollFn poll_function)
void ANIM_sync_animchannels_to_data(const bContext *C)
void ANIM_draw_scene_strip_range(const bContext *C, View2D *v2d)
bool ANIM_nla_mapping_allowed(const bAnimListElem *ale)
FCurve * ANIM_graph_context_fcurve(const bContext *C)
@ ACHANNEL_SETTING_ALWAYS_VISIBLE
@ ACHANNEL_SETTING_PINNED
@ ACHANNEL_SETTING_PROTECT
@ ACHANNEL_SETTING_VISIBLE
@ ACHANNEL_SETTING_EXPAND
@ ACHANNEL_SETTING_MOD_OFF
@ ACHANNEL_SETTING_SELECT
bAction * ANIM_channel_action_get(const bAnimListElem *ale)
void ANIM_id_update(Main *bmain, ID *id)
void nla_action_get_color(AnimData *adt, bAction *act, float color[4])
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)
void ANIM_nla_mapping_apply_if_needed_fcurve(bAnimListElem *ale, FCurve *fcu, bool restore, bool only_keys)
void ANIM_fmodifiers_copybuf_free()
bool(*)(const bContext *C, PanelType *pt) PanelTypePollFn
void animviz_calc_motionpaths(Depsgraph *depsgraph, Main *bmain, Scene *scene, blender::MutableSpan< MPathTarget * > targets, eAnimvizCalcRange range, bool restore)
void ED_keymap_anim(wmKeyConfig *keyconf)
void ANIM_list_elem_update(Main *bmain, Scene *scene, bAnimListElem *ale)
void animviz_build_motionpath_targets(Object *ob, blender::Vector< MPathTarget * > &r_targets)
eAnimEditDraw_CurrentFrame
float ANIM_UI_get_channel_button_width()
void ANIM_draw_previewrange(const Scene *scene, View2D *v2d, int end_frame_width)
@ ANIMVIZ_CALC_RANGE_FULL
@ ANIMVIZ_CALC_RANGE_CURRENT_FRAME
@ ANIMVIZ_CALC_RANGE_CHANGED
float ANIM_unit_mapping_get_factor(Scene *scene, ID *id, FCurve *fcu, short flag, float *r_offset)
bool ANIM_nla_context_strip_ptr(const bContext *C, PointerRNA *r_ptr)
void ED_operatortypes_animchannels()
bool ANIM_nla_context_track_ptr(const bContext *C, PointerRNA *r_ptr)
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
void ANIM_fmodifier_panels(const bContext *C, ID *owner_id, ListBase *fmodifiers, uiListPanelIDFromDataFunc panel_id_fn)
void ED_operatormacros_nla()
void ED_drivers_editor_init(bContext *C, ScrArea *area)
void ANIM_animdata_update(bAnimContext *ac, ListBase *anim_data)
@ ANIM_UNITCONV_NORMALIZE
@ ANIM_UNITCONV_NORMALIZE_FREEZE
const bAnimChannelType * ANIM_channel_get_typeinfo(const bAnimListElem *ale)
void ANIM_draw_framerange(Scene *scene, View2D *v2d)
BMesh const char void * data
BPy_StructRNA * depsgraph
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, PointerRNA *r_ptr, PropertyRNA **r_prop)
void(* draw_backdrop)(bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc)
int(* setting_flag)(bAnimContext *ac, eAnimChannel_Settings setting, bool *r_neg)
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
bool(* get_channel_color)(const bAnimListElem *ale, uint8_t r_color[3])
int(* icon)(bAnimListElem *ale)
void(* setting_post_update)(Main &bmain, const bAnimListElem &ale, eAnimChannel_Settings setting)
eDopeSheet_FilterFlag flag
eAnimEdit_Context dopesheet_mode
eGraphEdit_Mode grapheditor_mode
struct bAnimContext::@242276144047124000362312251357014355232301013033 filters
eDopeSheet_FilterFlag2 flag2
eAnim_Update_Flags update