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 Keyactedit_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 bAnimListElemmake_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 FCurveanimfilter_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