Blender  V3.3
Classes | Macros | Typedefs | Functions
anim_filter.c File Reference
#include <string.h>
#include "DNA_anim_types.h"
#include "DNA_armature_types.h"
#include "DNA_brush_types.h"
#include "DNA_cachefile_types.h"
#include "DNA_camera_types.h"
#include "DNA_curves_types.h"
#include "DNA_gpencil_types.h"
#include "DNA_key_types.h"
#include "DNA_lattice_types.h"
#include "DNA_layer_types.h"
#include "DNA_light_types.h"
#include "DNA_linestyle_types.h"
#include "DNA_mask_types.h"
#include "DNA_material_types.h"
#include "DNA_mesh_types.h"
#include "DNA_meta_types.h"
#include "DNA_movieclip_types.h"
#include "DNA_node_types.h"
#include "DNA_object_force_types.h"
#include "DNA_object_types.h"
#include "DNA_particle_types.h"
#include "DNA_pointcloud_types.h"
#include "DNA_scene_types.h"
#include "DNA_screen_types.h"
#include "DNA_sequence_types.h"
#include "DNA_simulation_types.h"
#include "DNA_space_types.h"
#include "DNA_speaker_types.h"
#include "DNA_userdef_types.h"
#include "DNA_volume_types.h"
#include "DNA_world_types.h"
#include "MEM_guardedalloc.h"
#include "BLI_alloca.h"
#include "BLI_blenlib.h"
#include "BLI_ghash.h"
#include "BLI_string.h"
#include "BLI_utildefines.h"
#include "BKE_action.h"
#include "BKE_anim_data.h"
#include "BKE_collection.h"
#include "BKE_context.h"
#include "BKE_fcurve.h"
#include "BKE_fcurve_driver.h"
#include "BKE_global.h"
#include "BKE_key.h"
#include "BKE_layer.h"
#include "BKE_main.h"
#include "BKE_mask.h"
#include "BKE_material.h"
#include "BKE_modifier.h"
#include "BKE_node.h"
#include "ED_anim_api.h"
#include "ED_markers.h"
#include "SEQ_sequencer.h"
#include "SEQ_utils.h"
#include "UI_resources.h"

Go to the source code of this file.

Classes

struct  tAnimFilterModifiersContext
 

Macros

#define BEGIN_ANIMFILTER_SUBCHANNELS(expanded_check)
 
#define END_ANIMFILTER_SUBCHANNELS
 
#define ANIMDATA_HAS_KEYS(id)   ((id)->adt && (id)->adt->action)
 
#define ANIMDATA_HAS_DRIVERS(id)   ((id)->adt && (id)->adt->drivers.first)
 
#define ANIMDATA_HAS_NLA(id)   ((id)->adt && (id)->adt->nla_tracks.first)
 
#define ANIMDATA_FILTER_CASES(id, adtOk, nlaOk, driversOk, nlaKeysOk, keysOk)
 
#define ANIMCHANNEL_NEW_CHANNEL_FULL(channel_data, channel_type, owner_id, fcurve_owner_id, ale_statement)
 
#define ANIMCHANNEL_NEW_CHANNEL(channel_data, channel_type, owner_id, fcurve_owner_id)    ANIMCHANNEL_NEW_CHANNEL_FULL(channel_data, channel_type, owner_id, fcurve_owner_id, {})
 
#define ANIMCHANNEL_ACTIVEOK(ale)    (!(filter_mode & ANIMFILTER_ACTIVE) || !(ale->adt) || (ale->adt->flag & ADT_UI_ACTIVE))
 
#define ANIMCHANNEL_SELOK(test_func)
 
#define ANIMCHANNEL_SELEDITOK(test_func)    (!(filter_mode & ANIMFILTER_SELEDIT) || !(filter_mode & ANIMFILTER_FOREDIT) || (test_func))
 

Typedefs

typedef struct tAnimFilterModifiersContext tAnimFilterModifiersContext
 

Functions

static void animedit_get_yscale_factor (bAnimContext *ac)
 
static Key * actedit_get_shapekeys (bAnimContext *ac)
 
static bool actedit_get_context (bAnimContext *ac, SpaceAction *saction)
 
static bool graphedit_get_context (bAnimContext *ac, SpaceGraph *sipo)
 
static bool nlaedit_get_context (bAnimContext *ac, SpaceNla *snla)
 
bool ANIM_animdata_context_getdata (bAnimContext *ac)
 
bool ANIM_animdata_get_context (const bContext *C, bAnimContext *ac)
 
bool ANIM_animdata_can_have_greasepencil (const eAnimCont_Types type)
 
static bAnimListElem * make_new_animlistelem (void *data, short datatype, ID *owner_id, ID *fcurve_owner_id)
 
static bool skip_fcurve_selected_data (bDopeSheet *ads, FCurve *fcu, ID *owner_id, int filter_mode)
 
static bool name_matches_dopesheet_filter (bDopeSheet *ads, char *name)
 
static bool skip_fcurve_with_name (bDopeSheet *ads, FCurve *fcu, eAnim_ChannelType channel_type, void *owner, ID *owner_id)
 
static bool fcurve_has_errors (const FCurve *fcu)
 
static FCurve * animfilter_fcurve_next (bDopeSheet *ads, FCurve *first, eAnim_ChannelType channel_type, int filter_mode, void *owner, ID *owner_id)
 
static size_t animfilter_fcurves (ListBase *anim_data, bDopeSheet *ads, FCurve *first, eAnim_ChannelType fcurve_type, int filter_mode, void *owner, ID *owner_id, ID *fcurve_owner_id)
 
static size_t animfilter_act_group (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, bAction *act, bActionGroup *agrp, int filter_mode, ID *owner_id)
 
static size_t animfilter_action (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, bAction *act, int filter_mode, ID *owner_id)
 
static size_t animfilter_nla (bAnimContext *UNUSED(ac), ListBase *anim_data, bDopeSheet *ads, AnimData *adt, int filter_mode, ID *owner_id)
 
static size_t animfilter_nla_controls (ListBase *anim_data, bDopeSheet *ads, AnimData *adt, int filter_mode, ID *owner_id)
 
static size_t animfilter_block_data (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, ID *id, int filter_mode)
 
static size_t animdata_filter_shapekey (bAnimContext *ac, ListBase *anim_data, Key *key, int filter_mode)
 
static size_t animdata_filter_gpencil_layers_data (ListBase *anim_data, bDopeSheet *ads, bGPdata *gpd, int filter_mode)
 
static size_t animdata_filter_gpencil_data (ListBase *anim_data, bDopeSheet *ads, bGPdata *gpd, int filter_mode)
 
static size_t animdata_filter_gpencil (bAnimContext *ac, ListBase *anim_data, void *UNUSED(data), int filter_mode)
 
static size_t animdata_filter_ds_gpencil (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, bGPdata *gpd, int filter_mode)
 
static size_t animdata_filter_ds_cachefile (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, CacheFile *cache_file, int filter_mode)
 
static size_t animdata_filter_mask_data (ListBase *anim_data, Mask *mask, const int filter_mode)
 
static size_t animdata_filter_mask (Main *bmain, ListBase *anim_data, void *UNUSED(data), int filter_mode)
 
static size_t animdata_filter_ds_nodetree_group (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, ID *owner_id, bNodeTree *ntree, int filter_mode)
 
static size_t animdata_filter_ds_nodetree (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, ID *owner_id, bNodeTree *ntree, int filter_mode)
 
static size_t animdata_filter_ds_linestyle (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, Scene *sce, int filter_mode)
 
static size_t animdata_filter_ds_texture (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, Tex *tex, ID *owner_id, int filter_mode)
 
static size_t animdata_filter_ds_textures (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, ID *owner_id, int filter_mode)
 
static size_t animdata_filter_ds_material (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, Material *ma, int filter_mode)
 
static size_t animdata_filter_ds_materials (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, Object *ob, int filter_mode)
 
static void animfilter_modifier_idpoin_cb (void *afm_ptr, Object *ob, ID **idpoin, int UNUSED(cb_flag))
 
static size_t animdata_filter_ds_modifiers (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, Object *ob, int filter_mode)
 
static size_t animdata_filter_ds_particles (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, Object *ob, int filter_mode)
 
static size_t animdata_filter_ds_obdata (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, Object *ob, int filter_mode)
 
static size_t animdata_filter_ds_keyanim (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, Object *ob, Key *key, int filter_mode)
 
static size_t animdata_filter_ds_obanim (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, Object *ob, int filter_mode)
 
static size_t animdata_filter_dopesheet_ob (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, Base *base, int filter_mode)
 
static size_t animdata_filter_ds_world (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, Scene *sce, World *wo, int filter_mode)
 
static size_t animdata_filter_ds_scene (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, Scene *sce, int filter_mode)
 
static size_t animdata_filter_dopesheet_scene (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, Scene *sce, int filter_mode)
 
static size_t animdata_filter_ds_movieclip (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, MovieClip *clip, int filter_mode)
 
static size_t animdata_filter_dopesheet_movieclips (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, int filter_mode)
 
static bool animdata_filter_base_is_ok (bDopeSheet *ads, Base *base, const eObjectMode object_mode, int filter_mode)
 
static int ds_base_sorting_cmp (const void *base1_ptr, const void *base2_ptr)
 
static Base ** animdata_filter_ds_sorted_bases (bDopeSheet *ads, ViewLayer *view_layer, int filter_mode, size_t *r_usable_bases)
 
static size_t animdata_filter_dopesheet (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, int filter_mode)
 
static short animdata_filter_dopesheet_summary (bAnimContext *ac, ListBase *anim_data, int filter_mode, size_t *items)
 
static size_t animdata_filter_animchan (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, bAnimListElem *channel, int filter_mode)
 
static size_t animdata_filter_remove_invalid (ListBase *anim_data)
 
static size_t animdata_filter_remove_duplis (ListBase *anim_data)
 
size_t ANIM_animdata_filter (bAnimContext *ac, ListBase *anim_data, eAnimFilter_Flags filter_mode, void *data, eAnimCont_Types datatype)
 

Macro Definition Documentation

◆ ANIMCHANNEL_ACTIVEOK

#define ANIMCHANNEL_ACTIVEOK (   ale)     (!(filter_mode & ANIMFILTER_ACTIVE) || !(ale->adt) || (ale->adt->flag & ADT_UI_ACTIVE))

Definition at line 578 of file anim_filter.c.

◆ ANIMCHANNEL_NEW_CHANNEL

#define ANIMCHANNEL_NEW_CHANNEL (   channel_data,
  channel_type,
  owner_id,
  fcurve_owner_id 
)     ANIMCHANNEL_NEW_CHANNEL_FULL(channel_data, channel_type, owner_id, fcurve_owner_id, {})

Definition at line 572 of file anim_filter.c.

◆ ANIMCHANNEL_NEW_CHANNEL_FULL

#define ANIMCHANNEL_NEW_CHANNEL_FULL (   channel_data,
  channel_type,
  owner_id,
  fcurve_owner_id,
  ale_statement 
)
Value:
if (filter_mode & ANIMFILTER_TMP_PEEK) { \
return 1; \
} \
{ \
bAnimListElem *ale = make_new_animlistelem( \
channel_data, channel_type, (ID *)owner_id, fcurve_owner_id); \
if (ale) { \
BLI_addtail(anim_data, ale); \
items++; \
ale_statement \
} \
} \
(void)0
@ ANIMFILTER_TMP_PEEK
Definition: ED_anim_api.h:331
static bAnimListElem * make_new_animlistelem(void *data, short datatype, ID *owner_id, ID *fcurve_owner_id)
Definition: anim_filter.c:604
SyclQueue void void size_t num_bytes void
Definition: DNA_ID.h:368

Add a new animation channel, taking into account the "peek" flag, which is used to just check whether any channels will be added (but without needing them to actually get created).

Warning
This causes the calling function to return early if we're only "peeking" for channels.

XXX: ale_statement stuff is really a hack for one special case. It shouldn't really be needed.

Definition at line 556 of file anim_filter.c.

◆ ANIMCHANNEL_SELEDITOK

#define ANIMCHANNEL_SELEDITOK (   test_func)     (!(filter_mode & ANIMFILTER_SELEDIT) || !(filter_mode & ANIMFILTER_FOREDIT) || (test_func))

Definition at line 596 of file anim_filter.c.

◆ ANIMCHANNEL_SELOK

#define ANIMCHANNEL_SELOK (   test_func)
Value:
(!(filter_mode & (ANIMFILTER_SEL | ANIMFILTER_UNSEL)) || \
((filter_mode & ANIMFILTER_SEL) && test_func) || \
((filter_mode & ANIMFILTER_UNSEL) && test_func == 0))
@ ANIMFILTER_UNSEL
Definition: ED_anim_api.h:309
@ ANIMFILTER_SEL
Definition: ED_anim_api.h:308

Definition at line 583 of file anim_filter.c.

◆ ANIMDATA_FILTER_CASES

#define ANIMDATA_FILTER_CASES (   id,
  adtOk,
  nlaOk,
  driversOk,
  nlaKeysOk,
  keysOk 
)

Quick macro to test for all three above usability tests, performing the appropriate provided action for each when the AnimData context is appropriate.

Priority order for this goes (most important, to least): AnimData blocks, NLA, Drivers, Keyframes.

For this to work correctly, a standard set of data needs to be available within the scope that this

Gets called in:

  • ListBase anim_data;
  • bDopeSheet *ads;
  • bAnimListElem *ale;
  • size_t items;
  • id: ID block which should have an AnimData pointer following it immediately, to use
  • adtOk: line or block of code to execute for AnimData-blocks case (usually #ANIMDATA_ADD_ANIMDATA).
  • nlaOk: line or block of code to execute for NLA tracks+strips case
  • driversOk: line or block of code to execute for Drivers case
  • nlaKeysOk: line or block of code for NLA Strip Keyframes case
  • keysOk: line or block of code for Keyframes case

The checks for the various cases are as follows: 0) top level: checks for animdata and also that all the F-Curves for the block will be visible 1) animdata check: for filtering animdata blocks only 2A) nla tracks: include animdata block's data as there are NLA tracks+strips there 2B) actions to convert to nla: include animdata block's data as there is an action that can be converted to a new NLA strip, and the filtering options allow this 2C) allow non-animated data-blocks to be included so that data-blocks can be added 3) drivers: include drivers from animdata block (for Drivers mode in Graph Editor) 4A) nla strip keyframes: these are the per-strip controls for time and influence 4B) normal keyframes: only when there is an active action

Definition at line 512 of file anim_filter.c.

◆ ANIMDATA_HAS_DRIVERS

#define ANIMDATA_HAS_DRIVERS (   id)    ((id)->adt && (id)->adt->drivers.first)

Definition at line 472 of file anim_filter.c.

◆ ANIMDATA_HAS_KEYS

#define ANIMDATA_HAS_KEYS (   id)    ((id)->adt && (id)->adt->action)

Definition at line 469 of file anim_filter.c.

◆ ANIMDATA_HAS_NLA

#define ANIMDATA_HAS_NLA (   id)    ((id)->adt && (id)->adt->nla_tracks.first)

Definition at line 475 of file anim_filter.c.

◆ BEGIN_ANIMFILTER_SUBCHANNELS

#define BEGIN_ANIMFILTER_SUBCHANNELS (   expanded_check)
Value:
{ \
int _filter = filter_mode; \
short _doSubChannels = 0; \
if (!(filter_mode & ANIMFILTER_LIST_VISIBLE) || (expanded_check)) { \
_doSubChannels = 1; \
} \
else if (!(filter_mode & ANIMFILTER_LIST_CHANNELS)) { \
_doSubChannels = 2; \
} \
else { \
filter_mode |= ANIMFILTER_TMP_PEEK; \
} \
\
{ \
(void)_doSubChannels; \
}
@ ANIMFILTER_LIST_VISIBLE
Definition: ED_anim_api.h:295
@ ANIMFILTER_LIST_CHANNELS
Definition: ED_anim_api.h:300

Definition at line 443 of file anim_filter.c.

◆ END_ANIMFILTER_SUBCHANNELS

#define END_ANIMFILTER_SUBCHANNELS
Value:
filter_mode = _filter; \
} \
(void)0

Definition at line 461 of file anim_filter.c.

Typedef Documentation

◆ tAnimFilterModifiersContext

Function Documentation

◆ actedit_get_context()

static bool actedit_get_context ( bAnimContext *  ac,
SpaceAction *  saction 
)
static

◆ actedit_get_shapekeys()

static Key* actedit_get_shapekeys ( bAnimContext *  ac)
static

◆ ANIM_animdata_can_have_greasepencil()

bool ANIM_animdata_can_have_greasepencil ( const eAnimCont_Types  type)

◆ ANIM_animdata_context_getdata()

bool ANIM_animdata_context_getdata ( bAnimContext *  ac)

Obtain current anim-data context, given that context info from Blender context has already been set:

  • AnimContext to write to is provided as pointer to var on stack so that we don't have allocation/freeing costs (which are not that avoidable with channels).
    Returns
    whether the operation was successful.

Definition at line 349 of file anim_filter.c.

References actedit_get_context(), bAnimContext::data, graphedit_get_context(), nlaedit_get_context(), bAnimContext::sl, SPACE_ACTION, SPACE_GRAPH, SPACE_NLA, and bAnimContext::spacetype.

Referenced by ANIM_animdata_get_context().

◆ ANIM_animdata_filter()

size_t ANIM_animdata_filter ( bAnimContext *  ac,
ListBase *  anim_data,
eAnimFilter_Flags  filter_mode,
void *  data,
eAnimCont_Types  datatype 
)

This function filters the active data source to leave only animation channels suitable for usage by the caller. It will return the length of the list

Parameters
anim_dataIs a pointer to a ListBase, to which the filtered animation channels will be placed for use.
filter_modehow should the data be filtered - bit-mapping accessed flags.

Definition at line 3447 of file anim_filter.c.

References bAnimContext::ads, SpaceAction::ads, Key::adt, Object::adt, ANIMCHANNEL_NEW_CHANNEL, ANIMCONT_ACTION, ANIMCONT_CHANNEL, ANIMCONT_DOPESHEET, ANIMCONT_DRIVERS, ANIMCONT_FCURVES, ANIMCONT_GPENCIL, ANIMCONT_MASK, ANIMCONT_NLA, ANIMCONT_SHAPEKEY, ANIMCONT_TIMELINE, animdata_filter_animchan(), animdata_filter_dopesheet(), animdata_filter_dopesheet_summary(), animdata_filter_gpencil(), animdata_filter_mask(), animdata_filter_remove_duplis(), animdata_filter_remove_invalid(), animdata_filter_shapekey(), animfilter_action(), ANIMFILTER_ANIMDATA, ANIMFILTER_NODUPLIS, ANIMTYPE_ANIMDATA, bAnimContext::bmain, data, LIKELY, NULL, bAnimContext::obact, bAnimContext::sl, and UNLIKELY.

Referenced by achannel_setting_flush_widget_cb(), actkeys_channels_get_selected_extents(), actkeys_find_list_element_at_position(), actkeys_framejump_exec(), actkeys_mselect_channel_only(), actkeys_mselect_column(), actkeys_mselect_single(), actkeys_select_leftright(), actkeys_select_linked_exec(), ANIM_animdata_keyframe_callback(), anim_channels_for_selection(), ANIM_editkeyframes_refresh(), ANIM_set_active_channel(), ANIM_sync_animchannels_to_data(), animchannels_clean_empty_exec(), animchannels_delete_exec(), animchannels_enable_exec(), animchannels_group_channels(), animchannels_group_exec(), animchannels_rearrange_exec(), animchannels_ungroup_exec(), bake_graph_curves(), blend_to_default_graph_keys(), blend_to_neighbor_graph_keys(), box_select_action(), box_select_anim_channels(), box_select_elem(), box_select_nla_strips(), breakdown_graph_keys(), cachefile_to_keylist(), clean_action_keys(), clean_graph_keys(), columnselect_action_keys(), columnselect_graph_keys(), copy_action_keys(), copy_graph_keys(), createTransActionData(), createTransNlaData(), decimate_graph_keys(), delete_action_keys(), delete_graph_keys(), deselect_action_keys(), deselect_nla_strips(), draw_channel_names(), draw_channel_strips(), draw_nla_channel_list(), draw_nla_main_data(), duplicate_action_keys(), duplicate_graph_keys(), ED_gpencil_anim_copybuf_copy(), ED_gpencil_anim_copybuf_paste(), ED_nla_postop_refresh(), equalize_graph_keys(), get_active_fcurve_channel(), get_keyframe_extents(), get_nearest_fcurve_verts_list(), get_nlastrip_extents(), graph_draw_channel_names(), graph_draw_curves(), graph_driver_delete_invalid_exec(), graph_fmodifier_add_exec(), graph_fmodifier_paste_exec(), graph_refresh_fcurve_colors(), graphkeys_euler_filter_exec(), graphkeys_mselect_column(), graphkeys_select_leftright(), graphkeys_select_linked_exec(), graphkeys_smooth_exec(), graphop_editable_keyframes_poll(), graphop_selected_fcurve_poll(), graphop_visible_keyframes_poll(), graphview_curves_hide_exec(), graphview_curves_reveal_exec(), initialize_box_select_anim_data(), insert_action_keys(), insert_graph_keys(), markers_selectkeys_between(), mirror_action_keys(), mirror_graph_keys(), mouse_anim_channels(), mouse_nla_channels(), nla_channels_get_selected_extents(), nla_fmodifier_add_exec(), nla_fmodifier_copy_exec(), nla_fmodifier_paste_exec(), nla_panel_context(), nlachannels_pushdown_exec(), nlaedit_add_actionclip_exec(), nlaedit_add_meta_exec(), nlaedit_add_sound_exec(), nlaedit_add_tracks_empty(), nlaedit_add_tracks_existing(), nlaedit_add_transition_exec(), nlaedit_apply_scale_exec(), nlaedit_clear_scale_exec(), nlaedit_delete_exec(), nlaedit_delete_tracks_exec(), nlaedit_disable_tweakmode(), nlaedit_duplicate_exec(), nlaedit_enable_tweakmode_exec(), nlaedit_make_single_user_exec(), nlaedit_move_down_exec(), nlaedit_move_up_exec(), nlaedit_remove_meta_exec(), nlaedit_select_leftright(), nlaedit_snap_exec(), nlaedit_split_exec(), nlaedit_strip_at_region_position(), nlaedit_swap_exec(), nlaedit_sync_actlen_exec(), nlaedit_toggle_mute_exec(), ob_keyframes_loop(), ob_to_keylist(), paste_action_keys(), paste_graph_keys(), posttrans_action_clean(), rearrange_animchannels_filter_visible(), rearrange_gpencil_channels(), region_select_action_keys(), region_select_elem(), rename_anim_channels(), reset_bezts(), sample_action_keys(), sample_graph_keys(), scene_keyframes_loop(), scene_to_keylist(), screen_ctx_active_editable_fcurve(), screen_ctx_sel_actions_impl(), screen_ctx_sel_edit_fcurves_(), screen_ctx_selected_editable_keyframes(), screen_ctx_selected_nla_strips(), select_anim_channel_keys(), select_moreless_action_keys(), select_moreless_graph_keys(), seteasing_graph_keys(), setexpo_action_keys(), setexpo_graph_keys(), setflag_anim_channels(), sethandles_action_keys(), sethandles_graph_keys(), setipo_graph_keys(), setkeytype_action_keys(), snap_action_keys(), snap_graph_keys(), special_aftertrans_update__actedit(), special_aftertrans_update__graph(), special_aftertrans_update__nla(), store_original_bezt_arrays(), sum_selected_keyframes(), summary_keyframes_loop(), summary_to_keylist(), and unbake_graph_curves().

◆ ANIM_animdata_get_context()

bool ANIM_animdata_get_context ( const bContext *  C,
bAnimContext *  ac 
)

Definition at line 379 of file anim_filter.c.

References ANIM_animdata_context_getdata(), animedit_get_yscale_factor(), blender::compositor::area(), bAnimContext::area, ViewLayer::basact, bAnimContext::bmain, C, CTX_data_depsgraph_pointer(), CTX_data_main(), CTX_data_scene(), CTX_data_view_layer(), CTX_wm_area(), CTX_wm_region(), CTX_wm_space_data(), bAnimContext::depsgraph, ED_context_get_markers(), bAnimContext::markers, NULL, bAnimContext::obact, Base::object, bAnimContext::region, bAnimContext::regiontype, ARegion::regiontype, scene, bAnimContext::scene, bAnimContext::sl, bAnimContext::spacetype, and bAnimContext::view_layer.

Referenced by achannel_setting_flush_widget_cb(), action_channel_region_draw(), action_circle_select_exec(), action_header_region_draw(), action_main_region_draw(), actkeys_box_select_exec(), actkeys_box_select_invoke(), actkeys_clean_exec(), actkeys_clickselect_exec(), actkeys_columnselect_exec(), actkeys_copy_exec(), actkeys_delete_exec(), actkeys_deselectall_exec(), actkeys_duplicate_exec(), actkeys_easing_exec(), actkeys_expo_exec(), actkeys_framejump_exec(), actkeys_handletype_exec(), actkeys_insertkey_exec(), actkeys_ipo_exec(), actkeys_keytype_exec(), actkeys_lassoselect_exec(), actkeys_mirror_exec(), actkeys_paste_exec(), actkeys_previewrange_exec(), actkeys_sample_exec(), actkeys_select_leftright_exec(), actkeys_select_leftright_invoke(), actkeys_select_less_exec(), actkeys_select_linked_exec(), actkeys_select_more_exec(), actkeys_snap_exec(), actkeys_viewall(), ANIM_sync_animchannels_to_data(), animchannels_box_select_exec(), animchannels_channel_select_keys_invoke(), animchannels_clean_empty_exec(), animchannels_collapse_exec(), animchannels_delete_exec(), animchannels_enable_exec(), animchannels_expand_exec(), animchannels_group_exec(), animchannels_mouseclick_invoke(), animchannels_rearrange_exec(), animchannels_rename_invoke(), animchannels_select_filter_modal(), animchannels_selectall_exec(), animchannels_setflag_exec(), animchannels_ungroup_exec(), blend_to_default_exec(), blend_to_neighbor_exec(), breakdown_exec(), createTransActionData(), createTransNlaData(), decimate_exec(), drivers_editor_show_exec(), ed_marker_select_leftright_exec(), graph_channel_region_draw(), graph_circle_select_exec(), graph_driver_delete_invalid_exec(), graph_driver_delete_invalid_poll(), graph_fmodifier_add_exec(), graph_fmodifier_copy_exec(), graph_fmodifier_paste_exec(), graph_main_region_draw(), graph_panel_context(), graph_refresh_fcurve_colors(), graph_slider_invoke(), graphkeys_bake_exec(), graphkeys_box_select_exec(), graphkeys_box_select_invoke(), graphkeys_clean_exec(), graphkeys_clear_ghostcurves_exec(), graphkeys_click_insert_exec(), graphkeys_click_insert_invoke(), graphkeys_clickselect_exec(), graphkeys_columnselect_exec(), graphkeys_copy_exec(), graphkeys_create_ghostcurves_exec(), graphkeys_delete_exec(), graphkeys_deselectall_exec(), graphkeys_duplicate_exec(), graphkeys_easing_exec(), graphkeys_equalize_handles_exec(), graphkeys_euler_filter_exec(), graphkeys_expo_exec(), graphkeys_framejump_exec(), graphkeys_handletype_exec(), graphkeys_insertkey_exec(), graphkeys_ipo_exec(), graphkeys_lassoselect_exec(), graphkeys_mirror_exec(), graphkeys_paste_exec(), graphkeys_previewrange_exec(), graphkeys_sample_exec(), graphkeys_select_leftright_exec(), graphkeys_select_leftright_invoke(), graphkeys_select_less_exec(), graphkeys_select_linked_exec(), graphkeys_select_more_exec(), graphkeys_smooth_exec(), graphkeys_snap_cursor_value_exec(), graphkeys_snap_exec(), graphkeys_sound_bake_invoke(), graphkeys_unbake_exec(), graphkeys_viewall(), graphop_active_fcurve_poll(), graphop_editable_keyframes_poll(), graphop_selected_fcurve_poll(), graphop_visible_keyframes_poll(), graphview_curves_hide_exec(), graphview_curves_reveal_exec(), nla_channel_region_draw(), nla_fmodifier_add_exec(), nla_fmodifier_copy_exec(), nla_fmodifier_paste_exec(), nla_main_region_draw(), nla_panel_context(), nlachannels_mouseclick_invoke(), nlachannels_pushdown_exec(), nlaedit_add_actionclip_exec(), nlaedit_add_meta_exec(), nlaedit_add_sound_exec(), nlaedit_add_tracks_exec(), nlaedit_add_transition_exec(), nlaedit_apply_scale_exec(), nlaedit_box_select_exec(), nlaedit_box_select_invoke(), nlaedit_clear_scale_exec(), nlaedit_clickselect_exec(), nlaedit_delete_exec(), nlaedit_delete_tracks_exec(), nlaedit_deselectall_exec(), nlaedit_disable_tweakmode_exec(), nlaedit_duplicate_exec(), nlaedit_enable_tweakmode_exec(), nlaedit_make_single_user_exec(), nlaedit_move_down_exec(), nlaedit_move_up_exec(), nlaedit_objects_add_exec(), nlaedit_previewrange_exec(), nlaedit_remove_meta_exec(), nlaedit_select_leftright_exec(), nlaedit_select_leftright_invoke(), nlaedit_snap_exec(), nlaedit_split_exec(), nlaedit_swap_exec(), nlaedit_sync_actlen_exec(), nlaedit_toggle_mute_exec(), nlaedit_viewall(), screen_animation_region_tag_redraw(), screen_ctx_active_editable_fcurve(), screen_ctx_sel_actions_impl(), screen_ctx_sel_edit_fcurves_(), screen_ctx_selected_editable_keyframes(), screen_ctx_selected_nla_strips(), special_aftertrans_update__actedit(), special_aftertrans_update__graph(), and special_aftertrans_update__nla().

◆ animdata_filter_animchan()

static size_t animdata_filter_animchan ( bAnimContext *  ac,
ListBase *  anim_data,
bDopeSheet *  ads,
bAnimListElem *  channel,
int  filter_mode 
)
static

◆ animdata_filter_base_is_ok()

static bool animdata_filter_base_is_ok ( bDopeSheet *  ads,
Base *  base,
const eObjectMode  object_mode,
int  filter_mode 
)
static

◆ animdata_filter_dopesheet()

static size_t animdata_filter_dopesheet ( bAnimContext *  ac,
ListBase *  anim_data,
bDopeSheet *  ads,
int  filter_mode 
)
static

◆ animdata_filter_dopesheet_movieclips()

static size_t animdata_filter_dopesheet_movieclips ( bAnimContext *  ac,
ListBase *  anim_data,
bDopeSheet *  ads,
int  filter_mode 
)
static

◆ animdata_filter_dopesheet_ob()

static size_t animdata_filter_dopesheet_ob ( bAnimContext *  ac,
ListBase *  anim_data,
bDopeSheet *  ads,
Base *  base,
int  filter_mode 
)
static

◆ animdata_filter_dopesheet_scene()

static size_t animdata_filter_dopesheet_scene ( bAnimContext *  ac,
ListBase *  anim_data,
bDopeSheet *  ads,
Scene *  sce,
int  filter_mode 
)
static

◆ animdata_filter_dopesheet_summary()

static short animdata_filter_dopesheet_summary ( bAnimContext *  ac,
ListBase *  anim_data,
int  filter_mode,
size_t *  items 
)
static

◆ animdata_filter_ds_cachefile()

static size_t animdata_filter_ds_cachefile ( bAnimContext *  ac,
ListBase *  anim_data,
bDopeSheet *  ads,
CacheFile *  cache_file,
int  filter_mode 
)
static

◆ animdata_filter_ds_gpencil()

static size_t animdata_filter_ds_gpencil ( bAnimContext *  ac,
ListBase *  anim_data,
bDopeSheet *  ads,
bGPdata *  gpd,
int  filter_mode 
)
static

◆ animdata_filter_ds_keyanim()

static size_t animdata_filter_ds_keyanim ( bAnimContext *  ac,
ListBase *  anim_data,
bDopeSheet *  ads,
Object *  ob,
Key *  key,
int  filter_mode 
)
static

◆ animdata_filter_ds_linestyle()

static size_t animdata_filter_ds_linestyle ( bAnimContext *  ac,
ListBase *  anim_data,
bDopeSheet *  ads,
Scene *  sce,
int  filter_mode 
)
static

◆ animdata_filter_ds_material()

static size_t animdata_filter_ds_material ( bAnimContext *  ac,
ListBase *  anim_data,
bDopeSheet *  ads,
Material *  ma,
int  filter_mode 
)
static

◆ animdata_filter_ds_materials()

static size_t animdata_filter_ds_materials ( bAnimContext *  ac,
ListBase *  anim_data,
bDopeSheet *  ads,
Object *  ob,
int  filter_mode 
)
static

◆ animdata_filter_ds_modifiers()

static size_t animdata_filter_ds_modifiers ( bAnimContext *  ac,
ListBase *  anim_data,
bDopeSheet *  ads,
Object *  ob,
int  filter_mode 
)
static

◆ animdata_filter_ds_movieclip()

static size_t animdata_filter_ds_movieclip ( bAnimContext *  ac,
ListBase *  anim_data,
bDopeSheet *  ads,
MovieClip *  clip,
int  filter_mode 
)
static

◆ animdata_filter_ds_nodetree()

static size_t animdata_filter_ds_nodetree ( bAnimContext *  ac,
ListBase *  anim_data,
bDopeSheet *  ads,
ID *  owner_id,
bNodeTree *  ntree,
int  filter_mode 
)
static

◆ animdata_filter_ds_nodetree_group()

static size_t animdata_filter_ds_nodetree_group ( bAnimContext *  ac,
ListBase *  anim_data,
bDopeSheet *  ads,
ID *  owner_id,
bNodeTree *  ntree,
int  filter_mode 
)
static

◆ animdata_filter_ds_obanim()

static size_t animdata_filter_ds_obanim ( bAnimContext *  ac,
ListBase *  anim_data,
bDopeSheet *  ads,
Object *  ob,
int  filter_mode 
)
static

◆ animdata_filter_ds_obdata()

static size_t animdata_filter_ds_obdata ( bAnimContext *  ac,
ListBase *  anim_data,
bDopeSheet *  ads,
Object *  ob,
int  filter_mode 
)
static

◆ animdata_filter_ds_particles()

static size_t animdata_filter_ds_particles ( bAnimContext *  ac,
ListBase *  anim_data,
bDopeSheet *  ads,
Object *  ob,
int  filter_mode 
)
static

◆ animdata_filter_ds_scene()

static size_t animdata_filter_ds_scene ( bAnimContext *  ac,
ListBase *  anim_data,
bDopeSheet *  ads,
Scene *  sce,
int  filter_mode 
)
static

◆ animdata_filter_ds_sorted_bases()

static Base** animdata_filter_ds_sorted_bases ( bDopeSheet *  ads,
ViewLayer *  view_layer,
int  filter_mode,
size_t *  r_usable_bases 
)
static

◆ animdata_filter_ds_texture()

static size_t animdata_filter_ds_texture ( bAnimContext *  ac,
ListBase *  anim_data,
bDopeSheet *  ads,
Tex *  tex,
ID *  owner_id,
int  filter_mode 
)
static

◆ animdata_filter_ds_textures()

static size_t animdata_filter_ds_textures ( bAnimContext *  ac,
ListBase *  anim_data,
bDopeSheet *  ads,
ID *  owner_id,
int  filter_mode 
)
static

◆ animdata_filter_ds_world()

static size_t animdata_filter_ds_world ( bAnimContext *  ac,
ListBase *  anim_data,
bDopeSheet *  ads,
Scene *  sce,
World *  wo,
int  filter_mode 
)
static

◆ animdata_filter_gpencil()

static size_t animdata_filter_gpencil ( bAnimContext *  ac,
ListBase *  anim_data,
void *  UNUSEDdata,
int  filter_mode 
)
static

◆ animdata_filter_gpencil_data()

static size_t animdata_filter_gpencil_data ( ListBase *  anim_data,
bDopeSheet *  ads,
bGPdata *  gpd,
int  filter_mode 
)
static

◆ animdata_filter_gpencil_layers_data()

static size_t animdata_filter_gpencil_layers_data ( ListBase *  anim_data,
bDopeSheet *  ads,
bGPdata *  gpd,
int  filter_mode 
)
static

◆ animdata_filter_mask()

static size_t animdata_filter_mask ( Main *  bmain,
ListBase *  anim_data,
void *  UNUSEDdata,
int  filter_mode 
)
static

◆ animdata_filter_mask_data()

static size_t animdata_filter_mask_data ( ListBase *  anim_data,
Mask *  mask,
const int  filter_mode 
)
static

◆ animdata_filter_remove_duplis()

static size_t animdata_filter_remove_duplis ( ListBase *  anim_data)
static

◆ animdata_filter_remove_invalid()

static size_t animdata_filter_remove_invalid ( ListBase *  anim_data)
static

◆ animdata_filter_shapekey()

static size_t animdata_filter_shapekey ( bAnimContext *  ac,
ListBase *  anim_data,
Key *  key,
int  filter_mode 
)
static

◆ animedit_get_yscale_factor()

static void animedit_get_yscale_factor ( bAnimContext *  ac)
static

◆ animfilter_act_group()

static size_t animfilter_act_group ( bAnimContext *  ac,
ListBase *  anim_data,
bDopeSheet *  ads,
bAction *  act,
bActionGroup *  agrp,
int  filter_mode,
ID *  owner_id 
)
static

◆ animfilter_action()

static size_t animfilter_action ( bAnimContext *  ac,
ListBase *  anim_data,
bDopeSheet *  ads,
bAction *  act,
int  filter_mode,
ID *  owner_id 
)
static

◆ animfilter_block_data()

static size_t animfilter_block_data ( bAnimContext *  ac,
ListBase *  anim_data,
bDopeSheet *  ads,
ID *  id,
int  filter_mode 
)
static

◆ animfilter_fcurve_next()

static FCurve* animfilter_fcurve_next ( bDopeSheet *  ads,
FCurve *  first,
eAnim_ChannelType  channel_type,
int  filter_mode,
void *  owner,
ID *  owner_id 
)
static

◆ animfilter_fcurves()

static size_t animfilter_fcurves ( ListBase *  anim_data,
bDopeSheet *  ads,
FCurve *  first,
eAnim_ChannelType  fcurve_type,
int  filter_mode,
void *  owner,
ID *  owner_id,
ID *  fcurve_owner_id 
)
static

◆ animfilter_modifier_idpoin_cb()

static void animfilter_modifier_idpoin_cb ( void *  afm_ptr,
Object *  ob,
ID **  idpoin,
int   UNUSEDcb_flag 
)
static

◆ animfilter_nla()

static size_t animfilter_nla ( bAnimContext *  UNUSEDac,
ListBase *  anim_data,
bDopeSheet *  ads,
AnimData *  adt,
int  filter_mode,
ID *  owner_id 
)
static

◆ animfilter_nla_controls()

static size_t animfilter_nla_controls ( ListBase *  anim_data,
bDopeSheet *  ads,
AnimData *  adt,
int  filter_mode,
ID *  owner_id 
)
static

◆ ds_base_sorting_cmp()

static int ds_base_sorting_cmp ( const void *  base1_ptr,
const void *  base2_ptr 
)
static

Definition at line 3167 of file anim_filter.c.

References Object::id, ID::name, and Base::object.

Referenced by animdata_filter_ds_sorted_bases().

◆ fcurve_has_errors()

static bool fcurve_has_errors ( const FCurve *  fcu)
static

Check if F-Curve has errors and/or is disabled

Returns
true if F-Curve has errors/is disabled

Definition at line 1212 of file anim_filter.c.

References FCurve::driver, DRIVER_FLAG_INVALID, DRIVER_TARGETS_LOOPER_END, DRIVER_TARGETS_USED_LOOPER_BEGIN, DTAR_FLAG_INVALID, FCURVE_DISABLED, ListBase::first, ChannelDriver::flag, FCurve::flag, DriverVar::next, and ChannelDriver::variables.

Referenced by animfilter_fcurve_next().

◆ graphedit_get_context()

static bool graphedit_get_context ( bAnimContext *  ac,
SpaceGraph *  sipo 
)
static

◆ make_new_animlistelem()

static bAnimListElem* make_new_animlistelem ( void *  data,
short  datatype,
ID *  owner_id,
ID *  fcurve_owner_id 
)
static

Definition at line 604 of file anim_filter.c.

References AnimData::action, bAnimListElem::adt, bArmature::adt, CacheFile::adt, Camera::adt, Curve::adt, bGPdata::adt, Key::adt, Lattice::adt, Light::adt, FreestyleLineStyle::adt, Mask::adt, Material::adt, Mesh::adt, MovieClip::adt, bNodeTree::adt, ParticleSettings::adt, PointCloud::adt, Simulation::adt, Speaker::adt, Tex::adt, Volume::adt, World::adt, ALE_ACT, ALE_ALL, ALE_FCURVE, ALE_GPFRAME, ALE_GROUP, ALE_MASKLAY, ALE_NLASTRIP, ALE_NONE, ALE_OB, ALE_SCE, ANIMTYPE_DSARM, ANIMTYPE_DSCACHEFILE, ANIMTYPE_DSCAM, ANIMTYPE_DSCUR, ANIMTYPE_DSGPENCIL, ANIMTYPE_DSHAIR, ANIMTYPE_DSLAM, ANIMTYPE_DSLAT, ANIMTYPE_DSLINESTYLE, ANIMTYPE_DSMAT, ANIMTYPE_DSMCLIP, ANIMTYPE_DSMESH, ANIMTYPE_DSNTREE, ANIMTYPE_DSPART, ANIMTYPE_DSPOINTCLOUD, ANIMTYPE_DSSIMULATION, ANIMTYPE_DSSKEY, ANIMTYPE_DSSPK, ANIMTYPE_DSTEX, ANIMTYPE_DSVOLUME, ANIMTYPE_DSWOR, ANIMTYPE_FCURVE, ANIMTYPE_FILLACTD, ANIMTYPE_FILLDRIVERS, ANIMTYPE_GPLAYER, ANIMTYPE_GROUP, ANIMTYPE_MASKLAYER, ANIMTYPE_NLAACTION, ANIMTYPE_NLACONTROLS, ANIMTYPE_NLACURVE, ANIMTYPE_NLATRACK, ANIMTYPE_OBJECT, ANIMTYPE_SCENE, ANIMTYPE_SHAPEKEY, ANIMTYPE_SUMMARY, BKE_animdata_from_id(), BKE_fcurve_find(), BKE_keyblock_curval_rnapath_get(), BLI_findindex(), Key::block, bAction::curves, curves, data, bAnimListElem::data, bAnimListElem::datatype, EXPANDED_GPD, EXPANDED_MCLIP, bAnimListElem::fcurve_owner_id, FILTER_ARM_OBJD, FILTER_CACHEFILE_OBJD, FILTER_CAM_OBJD, FILTER_CUR_OBJD, FILTER_CURVES_OBJD, FILTER_LAM_OBJD, FILTER_LATTICE_OBJD, FILTER_LS_SCED, FILTER_MAT_OBJD, FILTER_MESH_OBJD, FILTER_NTREE_DATA, FILTER_PART_OBJD, FILTER_POINTS_OBJD, FILTER_SIMULATION_OBJD, FILTER_SKE_OBJD, FILTER_SPK_OBJD, FILTER_TEX_DATA, FILTER_VOLUME_OBJD, FILTER_WOR_SCED, bAnimListElem::flag, bActionGroup::flag, bAction::flag, FCurve::flag, NlaTrack::flag, AnimData::flag, bGPDlayer::flag, KeyBlock::flag, MaskLayer::flag, Object::flag, Scene::flag, bAnimListElem::id, Object::id, if(), bAnimListElem::index, bAnimListElem::key_data, linestyle, MEM_callocN, MEM_freeN, ntree, NULL, Base::object, simulation, NlaTrack::strips, tex, and bAnimListElem::type.

Referenced by animdata_filter_dopesheet_summary().

◆ name_matches_dopesheet_filter()

static bool name_matches_dopesheet_filter ( bDopeSheet *  ads,
char *  name 
)
static

◆ nlaedit_get_context()

static bool nlaedit_get_context ( bAnimContext *  ac,
SpaceNla *  snla 
)
static

◆ skip_fcurve_selected_data()

static bool skip_fcurve_selected_data ( bDopeSheet *  ads,
FCurve *  fcu,
ID *  owner_id,
int  filter_mode 
)
static

◆ skip_fcurve_with_name()

static bool skip_fcurve_with_name ( bDopeSheet *  ads,
FCurve *  fcu,
eAnim_ChannelType  channel_type,
void *  owner,
ID *  owner_id 
)
static