52#include "RNA_prototypes.hh"
87#define EXTRA_SCROLL_PAD 100.0f
90#define INDENT_STEP_SIZE (0.35f * U.widget_unit)
93#define GET_ACF_FLAG_PTR(ptr, type) ((*(type) = sizeof(ptr)), &(ptr))
184 const int colorOffset = 10 - 10 * indent;
262 switch (ntree->
type) {
298 if (action->wrap().is_action_layered()) {
299 offset += short(0.35f *
U.widget_unit);
321 offset +=
U.widget_unit;
325 offset += short(0.7f *
U.widget_unit);
330 offset += short(0.7f *
U.widget_unit);
364 return (*r_prop !=
nullptr);
376 return (*r_prop !=
nullptr);
439 box.ymin = yminc - 2;
524 return ICON_SCENE_DATA;
641 return ICON_OUTLINER_OB_LIGHT;
643 return ICON_OUTLINER_OB_MESH;
645 return ICON_OUTLINER_OB_CAMERA;
647 return ICON_OUTLINER_OB_CURVE;
649 return ICON_OUTLINER_OB_META;
651 return ICON_OUTLINER_OB_LATTICE;
653 return ICON_OUTLINER_OB_SPEAKER;
655 return ICON_OUTLINER_OB_LIGHTPROBE;
657 return ICON_OUTLINER_OB_ARMATURE;
659 return ICON_OUTLINER_OB_FONT;
661 return ICON_OUTLINER_OB_SURFACE;
663 return ICON_OUTLINER_OB_CURVES;
665 return ICON_OUTLINER_OB_POINTCLOUD;
667 return ICON_OUTLINER_OB_VOLUME;
669 return ICON_OUTLINER_OB_EMPTY;
671 return ICON_OUTLINER_OB_GREASEPENCIL;
673 return ICON_OUTLINER_OB_GREASEPENCIL;
675 return ICON_OBJECT_DATA;
697 return (*r_prop !=
nullptr);
865 return (*r_prop !=
nullptr);
953 if (color_index == 0) {
958 if (color_index < 0) {
959 wire_color = &agrp->
cs;
963 wire_color = &btheme->
tarm[(color_index - 1)];
966 r_color[0] = wire_color->
solid[0];
967 r_color[1] = wire_color->
solid[1];
968 r_color[2] = wire_color->
solid[2];
1025 const size_t num_chars_copied = fcurve_name.copy(name, std::string::npos);
1026 name[num_chars_copied] =
'\0';
1052 return (*r_prop !=
nullptr);
1245 "NLA Controls Expander",
1286 "NLA Control F-Curve",
1306#ifdef WITH_ANIM_BAKLAVA
1373 "Ob-Layered-Action Filler",
1386 acf_fillanim_setting_valid,
1387 acf_fillanim_setting_flag,
1388 acf_fillanim_setting_ptr,
1391static void acf_action_slot_name(
bAnimListElem *ale,
char *r_name)
1406 switch (num_users) {
1426 return (*r_prop !=
nullptr);
1431 return ICON_ACTION_SLOT;
1440static bool acf_action_slot_setting_valid(
bAnimContext * ,
1454static int acf_action_slot_setting_flag(
bAnimContext * ,
1462 return int(animrig::Slot::Flags::Selected);
1464 return int(animrig::Slot::Flags::Expanded);
1487 acf_action_slot_name,
1488 acf_action_slot_name_prop,
1489 acf_action_slot_icon,
1491 acf_action_slot_setting_valid,
1492 acf_action_slot_setting_flag,
1493 acf_action_slot_setting_ptr,
1680 return ICON_MATERIAL_DATA;
1739 "Material Data Expander",
1762 return ICON_LIGHT_DATA;
1844 return ICON_TEXTURE_DATA;
1910 "Texture Data Expander",
1983 if (cache_file->
adt) {
1996 "Cache File Expander",
2019 return ICON_CAMERA_DATA;
2110 return ICON_FONT_DATA;
2112 return ICON_SURFACE_DATA;
2114 return ICON_CURVE_DATA;
2197 return ICON_SHAPEKEY_DATA;
2275 "Shape Key Expander",
2298 return ICON_WORLD_DATA;
2380 return ICON_PARTICLE_DATA;
2439 "Particle Data Expander",
2462 return ICON_META_DATA;
2521 "Metaball Expander",
2544 return ICON_ARMATURE_DATA;
2603 "Armature Expander",
2626 return ICON_NODETREE;
2696 "Node Tree Expander",
2719 return ICON_LINE_DATA;
2778 "Line Style Expander",
2801 return ICON_MESH_DATA;
2884 return ICON_LATTICE_DATA;
2967 return ICON_SPEAKER;
3049 return ICON_CURVES_DATA;
3130 return ICON_POINTCLOUD_DATA;
3177 if (pointcloud->
adt) {
3189 "PointCloud Expander",
3211 return ICON_VOLUME_DATA;
3292 return ICON_OUTLINER_DATA_GREASEPENCIL;
3351 "GPencil DS Expander",
3374 return ICON_SEQUENCE;
3421 if (clip->adt !=
nullptr) {
3433 "Movieclip Expander",
3476 if (kb && kb->
name[0]) {
3480 return (*r_prop !=
nullptr);
3579 return ICON_OUTLINER_DATA_GREASEPENCIL;
3632 "GPencil Datablock",
3669 return (*r_prop !=
nullptr);
3810 offset += node->wrap().depth() * short(0.7f *
U.widget_unit);
3820 if (layer && name) {
3830 if (ale->
data ==
nullptr) {
3837 return (*r_prop !=
nullptr);
3896 using namespace bke::greasepencil;
3897 const LayerGroup &group = *
static_cast<LayerGroup *
>(ale->
data);
3898 int icon = ICON_GREASEPENCIL_LAYER_GROUP;
3900 icon = ICON_LAYERGROUP_COLOR_01 + group.color_tag;
3915 if (layer_group && name) {
3952 "Grease Pencil Datablock",
3972 "Grease Pencil Layer",
3992 "Grease Pencil Layer Group",
4022 return ICON_MOD_MASK;
4098 if (masklay && name) {
4110 return (*r_prop !=
nullptr);
4195 bool nonSolo =
false;
4226 return (*r_prop !=
nullptr);
4338 return ICON_ACTION_TWEAK;
4428 return (*r_prop !=
nullptr);
4493 "NLA Active Action",
4545#ifdef WITH_ANIM_BAKLAVA
4592#ifdef WITH_ANIM_BAKLAVA
4594 "ANIMTYPE_FILLACT_LAYERED does not match ACF_FILLANIM");
4596 "ANIMTYPE_ACTION_SLOT does not match ACF_ACTION_SLOT");
4604 if (ale ==
nullptr) {
4626 for (; indent_level > 0; indent_level--) {
4636 acf->
name(ale, name);
4646 printf(
"ChanType: <Unknown - %d>\n", ale->
type);
4649 printf(
"<Invalid channel - nullptr>\n");
4692 const int *val = (
int *)
ptr;
4695 return ((*val) &
flag) == 0;
4697 return ((*val) &
flag) != 0;
4701 const short *val = (
short *)
ptr;
4704 return ((*val) &
flag) == 0;
4706 return ((*val) &
flag) != 0;
4710 const char *val = (
char *)
ptr;
4713 return ((*val) &
flag) == 0;
4715 return ((*val) &
flag) != 0;
4727#define ACF_SETTING_SET(sval, sflag, smode) \
4730 if (smode == ACHANNEL_SETFLAG_INVERT) { \
4731 (sval) ^= (sflag); \
4733 else if (smode == ACHANNEL_SETFLAG_ADD) { \
4734 (sval) &= ~(sflag); \
4737 (sval) |= (sflag); \
4741 if (smode == ACHANNEL_SETFLAG_INVERT) { \
4742 (sval) ^= (sflag); \
4744 else if (smode == ACHANNEL_SETFLAG_ADD) { \
4745 (sval) |= (sflag); \
4748 (sval) &= ~(sflag); \
4777 int *val = (
int *)
ptr;
4783 short *val = (
short *)
ptr;
4789 char *val = (
char *)
ptr;
4801#define ICON_WIDTH (0.85f * U.widget_unit)
4803#define SLIDER_WIDTH (4 * U.widget_unit)
4805#define RENAME_TEXT_MIN_WIDTH (U.widget_unit)
4807#define GRAPH_COLOR_BAND_WIDTH (0.3f * U.widget_unit)
4809#define GRAPH_ICON_VISIBILITY_OFFSET (GRAPH_COLOR_BAND_WIDTH * 1.5f)
4811#define CHANNEL_COLOR_RECT_WIDTH (0.5f * ICON_WIDTH)
4812#define CHANNEL_COLOR_RECT_MARGIN (2.0f * UI_SCALE_FAC)
4817 size_t channel_index)
4837 if (ale->
bmain ==
nullptr) {
4841 switch (ale->
type) {
4861 if (slot ==
nullptr) {
4877 switch (ale->
type) {
4897 if (yscale_fac < 0.1f) {
4910 return 0.1f *
U.widget_unit;
4930 return 10 *
U.widget_unit;
4935 return 0.8f *
U.widget_unit;
4943 short selected, offset;
4944 float y, ymid, ytext;
4947 if (
ELEM(
nullptr, acf, ale)) {
4960 y = (ymaxc - yminc) / 2 + yminc;
4963 ytext = y - 0.2f *
U.widget_unit;
4988 offset += short(0.2f *
U.widget_unit);
5073 acf->
name(ale, name);
5115 short draw_sliders = 0;
5116 float ymin_ofs = 0.0f;
5206 if ((draw_sliders) &&
ELEM(ale->
type,
5223 v2d->
cur.
xmax -
float(offset),
5245 ListBase anim_data = {
nullptr,
nullptr};
5273 if (ale_setting->
id) {
5337 ID *
id = (
ID *)id_poin;
5345 ListBase nla_cache = {
nullptr,
nullptr};
5359 &nla_cache, &id_ptr, adt, &anim_eval_context);
5385 if (adt->
action !=
nullptr) {
5405 Key *key = (
Key *)key_poin;
5449 cfra =
float(scene->r.cfra);
5492 bool usetoggle =
true;
5494 const char *tooltip;
5513 icon = ICON_HIDE_ON;
5516 tooltip =
TIP_(
"F-Curve visibility in Graph Editor");
5519 tooltip =
TIP_(
"Grease Pencil layer is visible in the viewport");
5522 tooltip =
TIP_(
"Toggle visibility of Channels in Graph Editor for editing");
5527 icon = ICON_UNPINNED;
5528 tooltip =
TIP_(
"Display channel regardless of object selection");
5532 icon = ICON_MODIFIER_OFF;
5533 tooltip =
TIP_(
"Enable F-Curve modifiers");
5538 icon = ICON_RIGHTARROW;
5539 tooltip =
TIP_(
"Make channels grouped under this channel visible");
5544 icon = ICON_SOLO_OFF;
5546 "NLA Track is the only one evaluated in this animation data-block, with all others "
5555 icon = ICON_UNLOCKED;
5558 tooltip =
TIP_(
"Editability of keyframes for this channel");
5561 tooltip =
TIP_(
"Editability of NLA Strips in this track");
5566 icon = (enabled ? ICON_CHECKBOX_DEHLT : ICON_CHECKBOX_HLT);
5570 tooltip =
TIP_(
"Does F-Curve contribute to result");
5574 "Temporarily disable NLA stack evaluation (i.e. only the active action is evaluated)");
5578 "Show all keyframes during animation playback and enable all frames for editing "
5579 "(uncheck to use only the current keyframe during animation playback and editing)");
5582 tooltip =
TIP_(
"Do channels contribute to result (toggle channel muting)");
5588 icon = ICON_UNPINNED;
5591 tooltip =
TIP_(
"Display action without any time remapping (when unpinned)");
5625 uiBut *but =
nullptr;
5637 static_cast<int *
>(
ptr),
5653 static_cast<short *
>(
ptr),
5669 static_cast<char *
>(
ptr),
5710 UI_but_disable(but,
"Can't edit this property from a linked data-block");
5735 const short channel_height,
5736 const int array_index)
5741 if (layer ==
nullptr) {
5758 &
ptr, onion_skinning_prop);
5760 &id_ptr, onion_skinning_rna_path->c_str(), &
ptr, &onion_skinning_prop))
5764 onion_skinning_prop,
5780 &
ptr, layer_mask_prop);
5820 size_t channel_index)
5829 if (
ELEM(
nullptr, acf, ale, block)) {
5834 short offset = rect->
xmin;
5889 if (is_being_renamed) {
5899 const short width = ac->
region->
winx - offset - (margin_x * 2);
5943 if (v2d && !is_being_renamed) {
5944 short draw_sliders = 0;
5972 if (show_group_colors) {
5984 rect->
ymin + rect_margin,
5985 rect->
xmax - rect_margin,
5986 rect->
ymax - rect_margin);
6057 "NLA_OT_action_pushdown",
6067 RNA_int_set(opptr_b,
"track_index", channel_index);
6072#ifdef WITH_ANIM_BAKLAVA
6076 UI_icon_draw(offset, ymid, acf_action_slot_idtype_icon(ale));
6093 if (((draw_sliders) &&
ELEM(ale->
type,
6143 std::optional<std::string> rna_path;
6144 int array_index = 0;
6205 icon = ICON_MOD_MASK;
6208 icon = ICON_LAYER_ACTIVE;
6257 &id_ptr, rna_path ? rna_path->c_str() :
nullptr, &
ptr, &prop))
Functions and classes to work with Actions.
Functions to work with AnimData.
Functions to insert, delete or modify keyframes.
AnimData * BKE_animdata_from_id(const ID *id)
void BKE_animsys_free_nla_keyframing_context_cache(struct ListBase *cache)
AnimationEvalContext BKE_animsys_eval_context_construct(struct Depsgraph *depsgraph, float eval_time) ATTR_WARN_UNUSED_RESULT
struct NlaKeyframingContext * BKE_animsys_get_nla_keyframing_context(struct ListBase *cache, struct PointerRNA *ptr, struct AnimData *adt, const struct AnimationEvalContext *anim_eval_context)
ReportList * CTX_wm_reports(const bContext *C)
Depsgraph * CTX_data_depsgraph_pointer(const bContext *C)
Scene * CTX_data_scene(const bContext *C)
Main * CTX_data_main(const bContext *C)
short BKE_curve_type_get(const Curve *cu)
Low-level operations for grease pencil.
std::optional< std::string > BKE_keyblock_curval_rnapath_get(const Key *key, const KeyBlock *kb)
bool BKE_id_is_editable(const Main *bmain, const ID *id)
float BKE_nla_tweakedit_remap(AnimData *adt, float cframe, short mode)
void BKE_nlatrack_solo_toggle(AnimData *adt, NlaTrack *nlt)
#define BLI_assert_unreachable()
#define BLI_assert_msg(a, msg)
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
MINLINE int round_fl_to_int(float a)
void rgb_float_to_uchar(unsigned char r_col[3], const float col_f[3])
MINLINE void copy_v3_v3(float r[3], const float a[3])
BLI_INLINE float BLI_rctf_cent_y(const struct rctf *rct)
BLI_INLINE int BLI_rcti_size_x(const struct rcti *rct)
BLI_INLINE float BLI_rctf_size_y(const struct rctf *rct)
#define STRNCPY(dst, src)
size_t BLI_snprintf(char *__restrict dst, size_t dst_maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
char * BLI_strncpy_utf8(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
#define POINTER_FROM_INT(i)
#define POINTER_AS_INT(i)
int rect_width(int rect[2][2])
void DEG_id_tag_update(ID *id, unsigned int flags)
@ ID_RECALC_ANIMATION_NO_FLUSH
@ ADS_FLAG_SUMMARY_COLLAPSED
@ ADT_CURVES_ALWAYS_VISIBLE
@ ADT_NLA_SKEYS_COLLAPSED
@ GP_LAYER_TREE_NODE_EXPANDED
@ GP_LAYER_TREE_NODE_LOCKED
@ GP_LAYER_TREE_NODE_MUTE
@ GP_LAYER_TREE_NODE_HIDE
@ GP_LAYER_TREE_NODE_SELECT
@ GREASE_PENCIL_ANIM_CHANNEL_EXPANDED
Object is a sort of wrapper for general info.
#define BASE_SELECTED(v3d, base)
@ USER_ANIM_SHOW_CHANNEL_GROUP_COLORS
@ ANIMTYPE_GREASE_PENCIL_LAYER
@ ANIMTYPE_FILLACT_LAYERED
@ ANIMTYPE_GREASE_PENCIL_LAYER_GROUP
@ ACHANNEL_SETTING_ALWAYS_VISIBLE
@ ACHANNEL_SETTING_PINNED
@ ACHANNEL_SETTING_PROTECT
@ ACHANNEL_SETTING_VISIBLE
@ ACHANNEL_SETTING_EXPAND
@ ACHANNEL_SETTING_MOD_OFF
@ ACHANNEL_SETTING_SELECT
void nla_action_get_color(AnimData *adt, bAction *act, float color[4])
@ ANIMFILTER_DATA_VISIBLE
@ ANIMFILTER_LIST_CHANNELS
@ GPU_SHADER_3D_UNIFORM_COLOR
void GPU_blend(eGPUBlend blend)
void GPU_line_width(float width)
Read Guarded memory(de)allocation.
void UI_but_func_set(uiBut *but, std::function< void(bContext &)> func)
void UI_but_disable(uiBut *but, const char *disabled_hint)
void UI_draw_roundbox_4fv(const rctf *rect, bool filled, float rad, const float col[4])
void UI_fontstyle_draw_simple(const uiFontStyle *fs, float x, float y, const char *str, const uchar col[4])
void UI_draw_roundbox_corner_set(int type)
uiBut * uiDefIconButO(uiBlock *block, int type, const char *opname, wmOperatorCallContext opcontext, int icon, int x, int y, short width, short height, const char *tip)
void UI_draw_roundbox_3fv_alpha(const rctf *rect, bool filled, float rad, const float col[3], float alpha)
void UI_block_emboss_set(uiBlock *block, eUIEmbossType emboss)
uiBut * UI_context_active_but_prop_get(const bContext *C, PointerRNA *r_ptr, PropertyRNA **r_prop, int *r_index)
PointerRNA * UI_but_operator_ptr_ensure(uiBut *but)
uiBut * uiDefIconButBitC(uiBlock *block, int type, int bit, int retval, int icon, int x, int y, short width, short height, char *poin, float min, float max, const char *tip)
uiBut * uiDefIconButBitS(uiBlock *block, int type, int bit, int retval, int icon, int x, int y, short width, short height, short *poin, float min, float max, const char *tip)
bool UI_but_active_only(const bContext *C, ARegion *region, uiBlock *block, uiBut *but)
uiBut * uiDefIconButBitI(uiBlock *block, int type, int bit, int retval, int icon, int x, int y, short width, short height, int *poin, float min, float max, const char *tip)
uiBut * uiDefButR(uiBlock *block, int type, int retval, const char *str, int x, int y, short width, short height, PointerRNA *ptr, const char *propname, int index, float min, float max, const char *tip)
void UI_but_funcN_set(uiBut *but, uiButHandleNFunc funcN, void *argN, void *arg2, uiButArgNFree func_argN_free_fn=MEM_freeN, uiButArgNCopy func_argN_copy_fn=MEM_dupallocN)
void UI_but_flag_enable(uiBut *but, int flag)
uiBut * uiDefAutoButR(uiBlock *block, PointerRNA *ptr, PropertyRNA *prop, int index, const char *name, int icon, int x, int y, int width, int height)
void UI_icon_draw(float x, float y, int icon_id)
int UI_icon_from_idcode(int idcode)
void UI_GetThemeColor3fv(int colorid, float col[3])
@ TH_DOPESHEET_CHANNELSUBOB
void UI_GetThemeColorShade3fv(int colorid, int offset, float col[3])
void UI_GetThemeColor4ubv(int colorid, unsigned char col[4])
#define UI_TIME_SCRUB_MARGIN_Y
float UI_view2d_scale_get_y(const View2D *v2d)
static void ANIM_init_channel_typeinfo_data()
static int acf_dsvolume_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static bAnimChannelType ACF_DSWOR
static void acf_nla_controls_backdrop(bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc)
static bAnimChannelType ACF_DSPART
static bAnimChannelType ACF_DSNTREE
static int acf_dsgpencil_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static short acf_generic_group_offset(bAnimContext *ac, bAnimListElem *ale)
static int acf_dscachefile_setting_flag(bAnimContext *ac, eAnimChannel_Settings setting, bool *r_neg)
float ANIM_UI_get_channels_total_height(View2D *v2d, const int item_count)
static bAnimChannelType ACF_GPL_LEGACY
static void * acf_dslat_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static int acf_object_icon(bAnimListElem *ale)
static bool acf_scene_setting_valid(bAnimContext *ac, bAnimListElem *, eAnimChannel_Settings setting)
static void * acf_dsmball_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static int acf_dspointcloud_icon(bAnimListElem *)
static void acf_object_name(bAnimListElem *ale, char *name)
static bAnimChannelType ACF_SCENE
static void acf_nlaaction_backdrop(bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc)
static void acf_summary_name(bAnimListElem *, char *name)
static short acf_generic_basic_offset(bAnimContext *ac, bAnimListElem *ale)
static int acf_fillactd_icon(bAnimListElem *)
static bAnimChannelType ACF_MASKLAYER
#define GRAPH_ICON_VISIBILITY_OFFSET
#define GET_ACF_FLAG_PTR(ptr, type)
static int acf_group_setting_flag(bAnimContext *ac, eAnimChannel_Settings setting, bool *r_neg)
static bAnimChannelType ACF_NLACURVE
static int acf_dsarm_icon(bAnimListElem *)
static int acf_dsmclip_icon(bAnimListElem *)
static void * acf_filldrivers_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static int acf_dstex_icon(bAnimListElem *)
static int acf_dscur_icon(bAnimListElem *ale)
static bAnimChannelType ACF_GPD
static bAnimChannelType ACF_DSLAT
void ANIM_channel_setting_set(bAnimContext *ac, bAnimListElem *ale, eAnimChannel_Settings setting, eAnimChannels_SetFlag mode)
static bool acf_masklay_setting_valid(bAnimContext *, bAnimListElem *, eAnimChannel_Settings setting)
static int acf_dsspk_icon(bAnimListElem *)
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)
static int acf_dscurves_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static bool acf_nlatrack_name_prop(bAnimListElem *ale, PointerRNA *r_ptr, PropertyRNA **r_prop)
static void acf_nla_curve_name(bAnimListElem *ale, char *name)
static bAnimChannelType ACF_DSVOLUME
static int acf_filldrivers_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
float ANIM_UI_get_keyframe_scale_factor()
static int acf_nlaaction_icon(bAnimListElem *ale)
float ANIM_UI_get_channel_name_width()
static bAnimChannelType ACF_DSMCLIP
static void * acf_dsmat_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static int acf_dslinestyle_icon(bAnimListElem *)
static bAnimChannelType ACF_NLATRACK
static int acf_dsgpencil_icon(bAnimListElem *)
static void * acf_nlaaction_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings, short *r_type)
static bAnimChannelType ACF_DSPOINTCLOUD
static bool acf_summary_setting_valid(bAnimContext *, bAnimListElem *, eAnimChannel_Settings setting)
static bAnimChannelType ACF_SUMMARY
static void acf_summary_backdrop(bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc)
static bool acf_fillactd_setting_valid(bAnimContext *, bAnimListElem *, eAnimChannel_Settings setting)
static int acf_gpl_setting_flag_legacy(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static int acf_dscachefile_icon(bAnimListElem *ale)
static int acf_dsmball_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static bool acf_fcurve_setting_valid(bAnimContext *ac, bAnimListElem *, eAnimChannel_Settings setting)
static bAnimChannelType ACF_DSMBALL
static int acf_dslat_icon(bAnimListElem *)
void ANIM_channel_draw(bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc, size_t channel_index)
static bAnimChannelType ACF_DSLINESTYLE
static int acf_fcurve_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static void * acf_dscurves_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static void acf_generic_idblock_name(bAnimListElem *ale, char *name)
static int acf_dsntree_icon(bAnimListElem *)
static short acf_generic_indentation_flexible(bAnimContext *, bAnimListElem *ale)
static void achannel_setting_widget_cb(bContext *C, void *, void *)
static int acf_dscam_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static int acf_dscur_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static bool acf_masklay_name_prop(bAnimListElem *ale, PointerRNA *r_ptr, PropertyRNA **r_prop)
static int acf_dsmclip_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static void achannel_nlatrack_solo_widget_cb(bContext *C, void *ale_poin, void *)
static bool acf_generic_idfill_name_prop(bAnimListElem *ale, PointerRNA *r_ptr, PropertyRNA **r_prop)
static int acf_dsmesh_icon(bAnimListElem *)
const bAnimChannelType * ANIM_channel_get_typeinfo(bAnimListElem *ale)
static bool acf_generic_dataexpand_setting_valid(bAnimContext *ac, bAnimListElem *, eAnimChannel_Settings setting)
static bool acf_nlaaction_setting_valid(bAnimContext *, bAnimListElem *ale, eAnimChannel_Settings setting)
static void * acf_shapekey_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static bool acf_dsskey_setting_valid(bAnimContext *ac, bAnimListElem *, eAnimChannel_Settings setting)
static void acf_filldrivers_name(bAnimListElem *, char *name)
static bool achannel_is_being_renamed(const bAnimContext *ac, const bAnimChannelType *acf, size_t channel_index)
static void * acf_dsmclip_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static void acf_group_name(bAnimListElem *ale, char *name)
static int acf_dslinestyle_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
#define CHANNEL_COLOR_RECT_WIDTH
#define RENAME_TEXT_MIN_WIDTH
static void acf_nla_controls_name(bAnimListElem *, char *name)
static bool acf_fcurve_channel_color(const bAnimListElem *ale, uint8_t r_color[3])
static bool acf_gpl_setting_valid_legacy(bAnimContext *, bAnimListElem *, eAnimChannel_Settings setting)
static int acf_dspart_icon(bAnimListElem *)
static bAnimChannelType ACF_FCURVE
static bAnimChannelType ACF_DSSPK
static void acf_generic_root_color(bAnimContext *, bAnimListElem *, float r_color[3])
static int acf_dsarm_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
float ANIM_UI_get_channel_step()
static void * acf_gpl_setting_ptr_legacy(bAnimListElem *ale, eAnimChannel_Settings, short *r_type)
static void acf_gpd_color(bAnimContext *, bAnimListElem *, float r_color[3])
static void acf_nlatrack_name(bAnimListElem *ale, char *name)
static bool acf_mask_setting_valid(bAnimContext *, bAnimListElem *, eAnimChannel_Settings setting)
static bAnimChannelType ACF_DSTEX
static void achannel_setting_slider_cb(bContext *C, void *id_poin, void *fcu_poin)
static void * acf_nlatrack_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings, short *r_type)
static void * acf_dspointcloud_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static int acf_dsmat_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static short acf_dsntree_offset(bAnimContext *ac, bAnimListElem *ale)
static int acf_dsvolume_icon(bAnimListElem *)
static int acf_shapekey_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static void acf_nlatrack_color(bAnimContext *, bAnimListElem *ale, float r_color[3])
static void * acf_dstex_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static void * acf_dsvolume_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static void acf_summary_color(bAnimContext *, bAnimListElem *, float r_color[3])
static bAnimChannelType ACF_FILLACTD
static int acf_dslight_icon(bAnimListElem *)
static bool acf_filldrivers_setting_valid(bAnimContext *, bAnimListElem *, eAnimChannel_Settings setting)
static void acf_group_backdrop(bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc)
float ANIM_UI_get_first_channel_top(View2D *v2d)
static bool acf_nla_controls_setting_valid(bAnimContext *, bAnimListElem *, eAnimChannel_Settings setting)
static int acf_dswor_icon(bAnimListElem *)
static void * acf_dsarm_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static bAnimChannelType ACF_GPLGROUP
static int acf_filldrivers_icon(bAnimListElem *)
static bAnimChannelType ACF_DSCURVES
static short acf_nodetree_rootType_offset(bNodeTree *ntree)
static void * acf_dsspk_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
void ANIM_channel_debug_print_info(bAnimListElem *ale, short indent_level)
#define ACF_SETTING_SET(sval, sflag, smode)
static bool acf_shapekey_name_prop(bAnimListElem *ale, PointerRNA *r_ptr, PropertyRNA **r_prop)
static int acf_dsmat_icon(bAnimListElem *)
static int acf_mask_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static void acf_generic_dataexpand_color(bAnimContext *, bAnimListElem *, float r_color[3])
float ANIM_UI_get_channel_height()
static int acf_gpd_setting_flag_legacy(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static int acf_scene_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static void acf_nlaaction_name(bAnimListElem *ale, char *name)
static bool acf_object_name_prop(bAnimListElem *ale, PointerRNA *r_ptr, PropertyRNA **r_prop)
static bAnimChannelType ACF_DSGPENCIL
static bool acf_gpl_name_prop_legacy(bAnimListElem *ale, PointerRNA *r_ptr, PropertyRNA **r_prop)
static bAnimChannelType ACF_MASKDATA
static int acf_nla_controls_icon(bAnimListElem *)
static bool acf_shapekey_setting_valid(bAnimContext *, bAnimListElem *, eAnimChannel_Settings setting)
static int acf_gpd_icon(bAnimListElem *)
static bool acf_generic_idblock_name_prop(bAnimListElem *ale, PointerRNA *r_ptr, PropertyRNA **r_prop)
static void * acf_gpd_setting_ptr_legacy(bAnimListElem *ale, eAnimChannel_Settings, short *r_type)
static int acf_dsmball_icon(bAnimListElem *)
#define GRAPH_COLOR_BAND_WIDTH
static void * acf_dsntree_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static int acf_nlaaction_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static bAnimChannelType ACF_GROUP
static bAnimChannelType ACF_OBJECT
static void * acf_dscur_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static int acf_fillactd_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static bAnimChannelType ACF_GPD_LEGACY
static int acf_dsskey_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static bAnimChannelType ACF_FILLDRIVERS
static short acf_dstex_offset(bAnimContext *, bAnimListElem *)
static int acf_masklay_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static bool acf_nlatrack_setting_valid(bAnimContext *, bAnimListElem *ale, eAnimChannel_Settings setting)
static int acf_dspart_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static bool get_actiongroup_color(const bActionGroup *agrp, uint8_t r_color[3])
bAction * ANIM_channel_action_get(const bAnimListElem *ale)
static void * acf_group_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings, short *r_type)
static void acf_generic_channel_backdrop(bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc)
static void * acf_fillactd_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static bool acf_group_name_prop(bAnimListElem *ale, PointerRNA *r_ptr, PropertyRNA **r_prop)
static void acf_mask_color(bAnimContext *, bAnimListElem *, float r_color[3])
static int acf_summary_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static bAnimChannelType ACF_NLAACTION
static int acf_dscam_icon(bAnimListElem *)
static bAnimChannelType ACF_DSMAT
static bAnimChannelType ACF_DSCUR
static void * acf_dspart_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static void draw_setting_widget(bAnimContext *ac, bAnimListElem *ale, const bAnimChannelType *acf, uiBlock *block, const int xpos, const int ypos, const eAnimChannel_Settings setting)
static void * acf_mask_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings, short *r_type)
static void * acf_masklay_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings, short *r_type)
static int acf_object_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static void acf_gpl_name_legacy(bAnimListElem *ale, char *name)
short ANIM_channel_setting_get(bAnimContext *ac, bAnimListElem *ale, eAnimChannel_Settings setting)
static short acf_generic_indentation_0(bAnimContext *, bAnimListElem *)
static void achannel_setting_slider_nla_curve_cb(bContext *C, void *, void *fcu_poin)
static bool acf_group_channel_color(const bAnimListElem *ale, uint8_t r_color[3])
static bool acf_show_channel_colors()
static bAnimChannelType ACF_DSLIGHT
static bAnimChannelType ACF_DSCACHEFILE
static int acf_dsntree_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static bAnimChannelType ACF_DSARM
static bool achannel_is_part_of_disconnected_slot(const bAnimListElem *ale)
static void acf_nlaaction_color(bAnimContext *, bAnimListElem *ale, float r_color[3])
static int acf_dslat_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static void * acf_summary_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static bAnimChannelType ACF_GPL
static void acf_generic_root_backdrop(bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc)
static bool acf_gpl_channel_color(const bAnimListElem *ale, uint8_t r_color[3])
static int acf_dscurves_icon(bAnimListElem *)
static bAnimChannelType ACF_DSCAM
static bAnimChannelType ACF_DSMESH
static void * acf_scene_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static int acf_dsspk_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static bool acf_object_setting_valid(bAnimContext *ac, bAnimListElem *ale, eAnimChannel_Settings setting)
static void * acf_dslinestyle_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static void * acf_dsskey_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static int acf_scene_icon(bAnimListElem *)
static int acf_dsmesh_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static void achannel_setting_slider_shapekey_cb(bContext *C, void *key_poin, void *kb_poin)
float ANIM_UI_get_channel_button_width()
static void acf_fcurve_name(bAnimListElem *ale, char *name)
static int acf_mask_icon(bAnimListElem *)
static bool acf_fcurve_name_prop(bAnimListElem *ale, PointerRNA *r_ptr, PropertyRNA **r_prop)
static void * acf_dscachefile_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static void draw_grease_pencil_layer_widgets(bAnimListElem *ale, uiBlock *block, const rctf *rect, short &offset, const short channel_height, const int array_index)
static void acf_generic_channel_color(bAnimContext *ac, bAnimListElem *ale, float r_color[3])
static bool acf_gpd_setting_valid(bAnimContext *, bAnimListElem *, eAnimChannel_Settings setting)
static void acf_group_color(bAnimContext *, bAnimListElem *ale, float r_color[3])
static void * acf_dslight_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static bool acf_group_setting_valid(bAnimContext *ac, bAnimListElem *, eAnimChannel_Settings setting)
static bAnimChannelType ACF_SHAPEKEY
static int acf_dslight_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static void * acf_nla_controls_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings, short *r_type)
static void * acf_fcurve_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings, short *r_type)
static bAnimChannelType * animchannelTypeInfo[ANIMTYPE_NUM_TYPES]
static void * acf_object_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static bool achannel_is_broken(const bAnimListElem *ale)
static short acf_generic_indentation_1(bAnimContext *, bAnimListElem *)
static int acf_dsskey_icon(bAnimListElem *)
static int acf_dswor_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static void acf_generic_dataexpand_backdrop(bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc)
static int acf_nla_controls_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static void achannel_setting_flush_widget_cb(bContext *C, void *ale_npoin, void *setting_wrap)
static int acf_dspointcloud_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static int acf_nlatrack_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *neg)
static bAnimChannelType ACF_NLACONTROLS
static bool acf_nlaaction_name_prop(bAnimListElem *ale, PointerRNA *r_ptr, PropertyRNA **r_prop)
static void acf_nla_controls_color(bAnimContext *, bAnimListElem *, float r_color[3])
static void * acf_dscam_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static int acf_dstex_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static void acf_shapekey_name(bAnimListElem *ale, char *name)
static bAnimChannelType ACF_DSSKEY
#define CHANNEL_COLOR_RECT_MARGIN
static void acf_masklay_name(bAnimListElem *ale, char *name)
static void * acf_dswor_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static void * acf_dsgpencil_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
static void * acf_dsmesh_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
void ANIM_flush_setting_anim_channels(bAnimContext *ac, ListBase *anim_data, bAnimListElem *ale_setting, eAnimChannel_Settings setting, eAnimChannels_SetFlag mode)
void ANIM_animdata_freelist(ListBase *anim_data)
bool ANIM_animdata_get_context(const bContext *C, bAnimContext *ac)
size_t ANIM_animdata_filter(bAnimContext *ac, ListBase *anim_data, const eAnimFilter_Flags filter_mode, void *data, const eAnimCont_Types datatype)
#define ANIM_CHAN_NAME_SIZE
std::string getname_anim_fcurve_for_slot(Main &bmain, const blender::animrig::Slot &slot, FCurve &fcurve)
std::optional< int > getname_anim_fcurve(char *name, ID *id, FCurve *fcu)
constexpr int64_t size() const
constexpr bool is_empty() const
constexpr const char * c_str() const
bool is_action_legacy() const
Slot * slot_for_handle(slot_handle_t handle)
StringRefNull name_without_prefix() const
Span< ID * > users(Main &bmain) const
FreestyleLineStyle linestyle
const Depsgraph * depsgraph
bool fcurve_frame_has_keyframe(const FCurve *fcu, float frame)
Lesser Keyframe Checking API call.
draw_view in_light_buf[] float
draw_view push_constant(Type::INT, "radiance_src") .push_constant(Type capture_info_buf storage_buf(1, Qualifier::READ, "ObjectBounds", "bounds_buf[]") .push_constant(Type draw_view int
DO_INLINE void filter(lfVector *V, fmatrix3x3 *S)
void *(* MEM_dupallocN)(const void *vmemh)
CombinedKeyingResult insert_keyframes(Main *bmain, PointerRNA *struct_pointer, std::optional< StringRefNull > channel_group, const blender::Span< RNAPath > rna_paths, std::optional< float > scene_frame, const AnimationEvalContext &anim_eval_context, eBezTriple_KeyframeType key_type, eInsertKeyFlags insert_key_flags)
Main key-frame insertion API.
bool insert_keyframe_direct(ReportList *reports, PointerRNA ptr, PropertyRNA *prop, FCurve *fcu, const AnimationEvalContext *anim_eval_context, eBezTriple_KeyframeType keytype, NlaKeyframingContext *nla_context, eInsertKeyFlags flag)
Secondary Insert Key-framing API call.
eInsertKeyFlags get_keyframing_flags(Scene *scene)
static short layer_offset(bAnimContext *ac, bAnimListElem *ale)
static void layer_name(bAnimListElem *ale, char *name)
static bool layer_name_prop(bAnimListElem *ale, PointerRNA *r_ptr, PropertyRNA **r_prop)
static int layer_group_icon(bAnimListElem *ale)
static void * data_block_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings, short *r_type)
static bool layer_setting_valid(bAnimContext *, bAnimListElem *, eAnimChannel_Settings setting)
static bool layer_group_setting_valid(bAnimContext *, bAnimListElem *, eAnimChannel_Settings setting)
static int layer_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static void * layer_group_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings, short *r_type)
static void * layer_setting_ptr(bAnimListElem *ale, eAnimChannel_Settings, short *r_type)
static int data_block_setting_flag(bAnimContext *, eAnimChannel_Settings setting, bool *r_neg)
static void layer_group_color(bAnimContext *, bAnimListElem *, float r_color[3])
static void layer_group_name(bAnimListElem *ale, char *name)
static void datablock_color(bAnimContext *ac, bAnimListElem *, float r_color[3])
float wrap(float value, float max, float min)
PropertyRNA * RNA_struct_type_find_property(StructRNA *srna, const char *identifier)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
PropertyType RNA_property_type(PropertyRNA *prop)
void RNA_int_set(PointerRNA *ptr, const char *name, int value)
const char * RNA_property_ui_name(const PropertyRNA *prop)
PropertyRNA * RNA_struct_name_property(const StructRNA *type)
PointerRNA RNA_pointer_create(ID *id, StructRNA *type, void *data)
const char * RNA_property_identifier(const PropertyRNA *prop)
PointerRNA RNA_id_pointer_create(ID *id)
std::optional< std::string > RNA_path_from_ID_to_property(const PointerRNA *ptr, PropertyRNA *prop)
bool RNA_path_resolve_property(const PointerRNA *ptr, const char *path, PointerRNA *r_ptr, PropertyRNA **r_prop)
GreasePencilLayerTreeNode base
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)
bool(* get_channel_color)(const bAnimListElem *ale, uint8_t r_color[3])
int(* icon)(bAnimListElem *ale)
void *(* setting_ptr)(bAnimListElem *ale, eAnimChannel_Settings setting, short *r_type)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)