Refactor: Anim: use enum type for filter_mode parameter

Use `enum` type for the `filter_mode` parameter of many functions. This
makes debugging easier and just makes the code slightly easier to
understand.

Also make the function parameter `const` wherever possible. Unfortunately,
due to the `BEGIN_ANIMFILTER_SUBCHANNELS` and `END_ANIMFILTER_SUBCHANNELS`
macros (which modify `filter_mode`), this is possible less often than I'd
like.

No functional changes.

Pull Request: https://projects.blender.org/blender/blender/pulls/122882
This commit is contained in:
Sybren A. Stüvel
2024-06-07 15:22:31 +02:00
parent f49181d6fc
commit 22d30bc7da

View File

@@ -417,7 +417,7 @@ bool ANIM_animdata_can_have_greasepencil(const eAnimCont_Types type)
*/
#define BEGIN_ANIMFILTER_SUBCHANNELS(expanded_check) \
{ \
int _filter = filter_mode; \
const eAnimFilter_Flags _filter = filter_mode; \
short _doSubChannels = 0; \
if (!(filter_mode & ANIMFILTER_LIST_VISIBLE) || (expanded_check)) { \
_doSubChannels = 1; \
@@ -949,7 +949,10 @@ static bAnimListElem *make_new_animlistelem(void *data,
/* 'Only Selected' selected data and/or 'Include Hidden' filtering
* NOTE: when this function returns true, the F-Curve is to be skipped
*/
static bool skip_fcurve_selected_data(bDopeSheet *ads, FCurve *fcu, ID *owner_id, int filter_mode)
static bool skip_fcurve_selected_data(bDopeSheet *ads,
FCurve *fcu,
ID *owner_id,
const eAnimFilter_Flags filter_mode)
{
if (fcu->grp != nullptr && fcu->grp->flag & ADT_CURVES_ALWAYS_VISIBLE) {
return false;
@@ -1178,7 +1181,7 @@ static bool fcurve_has_errors(const FCurve *fcu, bDopeSheet *ads)
static FCurve *animfilter_fcurve_next(bDopeSheet *ads,
FCurve *first,
eAnim_ChannelType channel_type,
int filter_mode,
const eAnimFilter_Flags filter_mode,
void *owner,
ID *owner_id)
{
@@ -1253,7 +1256,7 @@ static size_t animfilter_fcurves(ListBase *anim_data,
bDopeSheet *ads,
FCurve *first,
eAnim_ChannelType fcurve_type,
int filter_mode,
const eAnimFilter_Flags filter_mode,
void *owner,
ID *owner_id,
ID *fcurve_owner_id)
@@ -1298,7 +1301,7 @@ static size_t animfilter_fcurves(ListBase *anim_data,
static size_t animfilter_fcurves_span(ListBase * /*bAnimListElem*/ anim_data,
bDopeSheet * /*ads*/,
Span<FCurve *> fcurves,
const int filter_mode,
const eAnimFilter_Flags filter_mode,
ID *owner_id,
ID *fcurve_owner_id)
{
@@ -1331,7 +1334,7 @@ static size_t animfilter_act_group(bAnimContext *ac,
bDopeSheet *ads,
bAction *act,
bActionGroup *agrp,
int filter_mode,
eAnimFilter_Flags filter_mode,
ID *owner_id)
{
ListBase tmp_data = {nullptr, nullptr};
@@ -1426,7 +1429,7 @@ static size_t animfilter_action(bAnimContext *ac,
bDopeSheet *ads,
animrig::Action &action,
const animrig::binding_handle_t binding_handle,
const int filter_mode,
const eAnimFilter_Flags filter_mode,
ID *owner_id)
{
FCurve *lastchan = nullptr;
@@ -1485,7 +1488,7 @@ static size_t animfilter_nla(bAnimContext * /*ac*/,
ListBase *anim_data,
bDopeSheet *ads,
AnimData *adt,
int filter_mode,
const eAnimFilter_Flags filter_mode,
ID *owner_id)
{
NlaTrack *nlt;
@@ -1573,8 +1576,11 @@ static size_t animfilter_nla(bAnimContext * /*ac*/,
/* Include the control FCurves per NLA Strip in the channel list
* NOTE: This is includes the expander too...
*/
static size_t animfilter_nla_controls(
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,
eAnimFilter_Flags filter_mode,
ID *owner_id)
{
ListBase tmp_data = {nullptr, nullptr};
size_t tmp_items = 0;
@@ -1624,8 +1630,11 @@ static size_t animfilter_nla_controls(
}
/* determine what animation data from AnimData block should get displayed */
static size_t animfilter_block_data(
bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, ID *id, int filter_mode)
static size_t animfilter_block_data(bAnimContext *ac,
ListBase *anim_data,
bDopeSheet *ads,
ID *id,
const eAnimFilter_Flags filter_mode)
{
AnimData *adt = BKE_animdata_from_id(id);
size_t items = 0;
@@ -1680,7 +1689,7 @@ static size_t animfilter_block_data(
static size_t animdata_filter_shapekey(bAnimContext *ac,
ListBase *anim_data,
Key *key,
int filter_mode)
const eAnimFilter_Flags filter_mode)
{
size_t items = 0;
@@ -1770,7 +1779,7 @@ static size_t animdata_filter_grease_pencil_layer(ListBase *anim_data,
bDopeSheet * /*ads*/,
GreasePencil *grease_pencil,
blender::bke::greasepencil::Layer &layer,
int filter_mode)
const eAnimFilter_Flags filter_mode)
{
size_t items = 0;
@@ -1807,7 +1816,7 @@ static size_t animdata_filter_grease_pencil_layer_node_recursive(
bDopeSheet *ads,
GreasePencil *grease_pencil,
blender::bke::greasepencil::TreeNode &node,
int filter_mode)
eAnimFilter_Flags filter_mode)
{
using namespace blender::bke::greasepencil;
size_t items = 0;
@@ -1859,7 +1868,7 @@ static size_t animdata_filter_grease_pencil_layer_node_recursive(
static size_t animdata_filter_grease_pencil_layers_data(ListBase *anim_data,
bDopeSheet *ads,
GreasePencil *grease_pencil,
int filter_mode)
const eAnimFilter_Flags filter_mode)
{
size_t items = 0;
@@ -1877,7 +1886,7 @@ static size_t animdata_filter_grease_pencil_layers_data(ListBase *anim_data,
static size_t animdata_filter_gpencil_layers_data_legacy(ListBase *anim_data,
bDopeSheet *ads,
bGPdata *gpd,
int filter_mode)
const eAnimFilter_Flags filter_mode)
{
size_t items = 0;
@@ -1920,7 +1929,7 @@ static size_t animdata_filter_gpencil_layers_data_legacy(ListBase *anim_data,
static size_t animdata_filter_grease_pencil_data(ListBase *anim_data,
bDopeSheet *ads,
GreasePencil *grease_pencil,
int filter_mode)
eAnimFilter_Flags filter_mode)
{
using namespace blender;
@@ -1972,7 +1981,7 @@ static size_t animdata_filter_grease_pencil_data(ListBase *anim_data,
static size_t animdata_filter_gpencil_legacy_data(ListBase *anim_data,
bDopeSheet *ads,
bGPdata *gpd,
int filter_mode)
eAnimFilter_Flags filter_mode)
{
size_t items = 0;
@@ -2014,7 +2023,9 @@ static size_t animdata_filter_gpencil_legacy_data(ListBase *anim_data,
return items;
}
static size_t animdata_filter_grease_pencil(bAnimContext *ac, ListBase *anim_data, int filter_mode)
static size_t animdata_filter_grease_pencil(bAnimContext *ac,
ListBase *anim_data,
const eAnimFilter_Flags filter_mode)
{
size_t items = 0;
Scene *scene = ac->scene;
@@ -2071,7 +2082,7 @@ static size_t animdata_filter_grease_pencil(bAnimContext *ac, ListBase *anim_dat
static size_t animdata_filter_gpencil_legacy(bAnimContext *ac,
ListBase *anim_data,
void * /*data*/,
int filter_mode)
const eAnimFilter_Flags filter_mode)
{
bDopeSheet *ads = ac->ads;
size_t items = 0;
@@ -2147,8 +2158,11 @@ static size_t animdata_filter_gpencil_legacy(bAnimContext *ac,
}
/* Helper for Grease Pencil data integrated with main DopeSheet */
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_gpencil(bAnimContext *ac,
ListBase *anim_data,
bDopeSheet *ads,
bGPdata *gpd,
eAnimFilter_Flags filter_mode)
{
ListBase tmp_data = {nullptr, nullptr};
size_t tmp_items = 0;
@@ -2191,8 +2205,11 @@ static size_t animdata_filter_ds_gpencil(
}
/* Helper for Cache File data integrated with main DopeSheet */
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_ds_cachefile(bAnimContext *ac,
ListBase *anim_data,
bDopeSheet *ads,
CacheFile *cache_file,
eAnimFilter_Flags filter_mode)
{
ListBase tmp_data = {nullptr, nullptr};
size_t tmp_items = 0;
@@ -2227,7 +2244,9 @@ static size_t animdata_filter_ds_cachefile(
}
/* Helper for Mask Editing - mask layers */
static size_t animdata_filter_mask_data(ListBase *anim_data, Mask *mask, const int filter_mode)
static size_t animdata_filter_mask_data(ListBase *anim_data,
Mask *mask,
const eAnimFilter_Flags filter_mode)
{
const MaskLayer *masklay_act = BKE_mask_layer_active(mask);
size_t items = 0;
@@ -2255,7 +2274,7 @@ static size_t animdata_filter_mask_data(ListBase *anim_data, Mask *mask, const i
static size_t animdata_filter_mask(Main *bmain,
ListBase *anim_data,
void * /*data*/,
int filter_mode)
eAnimFilter_Flags filter_mode)
{
size_t items = 0;
@@ -2306,7 +2325,7 @@ static size_t animdata_filter_ds_nodetree_group(bAnimContext *ac,
bDopeSheet *ads,
ID *owner_id,
bNodeTree *ntree,
int filter_mode)
eAnimFilter_Flags filter_mode)
{
ListBase tmp_data = {nullptr, nullptr};
size_t tmp_items = 0;
@@ -2344,7 +2363,7 @@ static size_t animdata_filter_ds_nodetree(bAnimContext *ac,
bDopeSheet *ads,
ID *owner_id,
bNodeTree *ntree,
int filter_mode)
const eAnimFilter_Flags filter_mode)
{
size_t items = 0;
@@ -2370,8 +2389,11 @@ static size_t animdata_filter_ds_nodetree(bAnimContext *ac,
return items;
}
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_linestyle(bAnimContext *ac,
ListBase *anim_data,
bDopeSheet *ads,
Scene *sce,
eAnimFilter_Flags filter_mode)
{
size_t items = 0;
@@ -2434,7 +2456,7 @@ static size_t animdata_filter_ds_texture(bAnimContext *ac,
bDopeSheet *ads,
Tex *tex,
ID *owner_id,
int filter_mode)
eAnimFilter_Flags filter_mode)
{
ListBase tmp_data = {nullptr, nullptr};
size_t tmp_items = 0;
@@ -2482,8 +2504,11 @@ static size_t animdata_filter_ds_texture(bAnimContext *ac,
/* NOTE: owner_id is the direct owner of the texture stack in question
* It used to be Material/Light/World before the Blender Internal removal for 2.8
*/
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_textures(bAnimContext *ac,
ListBase *anim_data,
bDopeSheet *ads,
ID *owner_id,
const eAnimFilter_Flags filter_mode)
{
MTex **mtex = nullptr;
size_t items = 0;
@@ -2528,8 +2553,11 @@ static size_t animdata_filter_ds_textures(
return items;
}
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_material(bAnimContext *ac,
ListBase *anim_data,
bDopeSheet *ads,
Material *ma,
eAnimFilter_Flags filter_mode)
{
ListBase tmp_data = {nullptr, nullptr};
size_t tmp_items = 0;
@@ -2567,8 +2595,11 @@ static size_t animdata_filter_ds_material(
return items;
}
static size_t animdata_filter_ds_materials(
bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, Object *ob, int filter_mode)
static size_t animdata_filter_ds_materials(bAnimContext *ac,
ListBase *anim_data,
bDopeSheet *ads,
Object *ob,
const eAnimFilter_Flags filter_mode)
{
size_t items = 0;
int a = 0;
@@ -2598,7 +2629,7 @@ struct tAnimFilterModifiersContext {
ListBase tmp_data; /* list of channels created (but not yet added to the main list) */
size_t items; /* number of channels created */
int filter_mode; /* flags for stuff we want to filter */
eAnimFilter_Flags filter_mode; /* flags for stuff we want to filter */
};
/* dependency walker callback for modifier dependencies */
@@ -2647,8 +2678,11 @@ static void animfilter_modifier_idpoin_cb(void *afm_ptr, Object *ob, ID **idpoin
* attached to any other objects/materials/etc. in the scene
*/
/* TODO: do we want an expander for this? */
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_modifiers(bAnimContext *ac,
ListBase *anim_data,
bDopeSheet *ads,
Object *ob,
const eAnimFilter_Flags filter_mode)
{
tAnimFilterModifiersContext afm = {nullptr};
size_t items = 0;
@@ -2679,8 +2713,11 @@ static size_t animdata_filter_ds_modifiers(
/* ............ */
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_particles(bAnimContext *ac,
ListBase *anim_data,
bDopeSheet *ads,
Object *ob,
eAnimFilter_Flags filter_mode)
{
size_t items = 0;
@@ -2728,8 +2765,11 @@ static size_t animdata_filter_ds_particles(
return items;
}
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_obdata(bAnimContext *ac,
ListBase *anim_data,
bDopeSheet *ads,
Object *ob,
eAnimFilter_Flags filter_mode)
{
ListBase tmp_data = {nullptr, nullptr};
size_t tmp_items = 0;
@@ -2917,8 +2957,12 @@ static size_t animdata_filter_ds_obdata(
}
/* shapekey-level animation */
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_keyanim(bAnimContext *ac,
ListBase *anim_data,
bDopeSheet *ads,
Object *ob,
Key *key,
eAnimFilter_Flags filter_mode)
{
ListBase tmp_data = {nullptr, nullptr};
size_t tmp_items = 0;
@@ -2951,8 +2995,11 @@ static size_t animdata_filter_ds_keyanim(
}
/* object-level animation */
static size_t animdata_filter_ds_obanim(
bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, Object *ob, int filter_mode)
static size_t animdata_filter_ds_obanim(bAnimContext *ac,
ListBase *anim_data,
bDopeSheet *ads,
Object *ob,
eAnimFilter_Flags filter_mode)
{
ListBase tmp_data = {nullptr, nullptr};
size_t tmp_items = 0;
@@ -3014,8 +3061,11 @@ static size_t animdata_filter_ds_obanim(
}
/* get animation channels from object2 */
static size_t animdata_filter_dopesheet_ob(
bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, Base *base, int filter_mode)
static size_t animdata_filter_dopesheet_ob(bAnimContext *ac,
ListBase *anim_data,
bDopeSheet *ads,
Base *base,
eAnimFilter_Flags filter_mode)
{
ListBase tmp_data = {nullptr, nullptr};
Object *ob = base->object;
@@ -3103,8 +3153,12 @@ static size_t animdata_filter_dopesheet_ob(
return items;
}
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_world(bAnimContext *ac,
ListBase *anim_data,
bDopeSheet *ads,
Scene *sce,
World *wo,
eAnimFilter_Flags filter_mode)
{
ListBase tmp_data = {nullptr, nullptr};
size_t tmp_items = 0;
@@ -3143,8 +3197,11 @@ static size_t animdata_filter_ds_world(
return items;
}
static size_t animdata_filter_ds_scene(
bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, Scene *sce, int filter_mode)
static size_t animdata_filter_ds_scene(bAnimContext *ac,
ListBase *anim_data,
bDopeSheet *ads,
Scene *sce,
eAnimFilter_Flags filter_mode)
{
ListBase tmp_data = {nullptr, nullptr};
size_t tmp_items = 0;
@@ -3205,8 +3262,11 @@ static size_t animdata_filter_ds_scene(
return items;
}
static size_t animdata_filter_dopesheet_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,
eAnimFilter_Flags filter_mode)
{
ListBase tmp_data = {nullptr, nullptr};
size_t tmp_items = 0;
@@ -3269,8 +3329,11 @@ static size_t animdata_filter_dopesheet_scene(
return items;
}
static size_t animdata_filter_ds_movieclip(
bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, MovieClip *clip, int filter_mode)
static size_t animdata_filter_ds_movieclip(bAnimContext *ac,
ListBase *anim_data,
bDopeSheet *ads,
MovieClip *clip,
eAnimFilter_Flags filter_mode)
{
ListBase tmp_data = {nullptr, nullptr};
size_t tmp_items = 0;
@@ -3302,7 +3365,7 @@ static size_t animdata_filter_ds_movieclip(
static size_t animdata_filter_dopesheet_movieclips(bAnimContext *ac,
ListBase *anim_data,
bDopeSheet *ads,
int filter_mode)
const eAnimFilter_Flags filter_mode)
{
size_t items = 0;
LISTBASE_FOREACH (MovieClip *, clip, &ac->bmain->movieclips) {
@@ -3320,7 +3383,7 @@ static size_t animdata_filter_dopesheet_movieclips(bAnimContext *ac,
static bool animdata_filter_base_is_ok(bDopeSheet *ads,
Base *base,
const eObjectMode object_mode,
int filter_mode)
const eAnimFilter_Flags filter_mode)
{
Object *ob = base->object;
@@ -3423,7 +3486,7 @@ static int ds_base_sorting_cmp(const void *base1_ptr, const void *base2_ptr)
static Base **animdata_filter_ds_sorted_bases(bDopeSheet *ads,
const Scene *scene,
ViewLayer *view_layer,
int filter_mode,
const eAnimFilter_Flags filter_mode,
size_t *r_usable_bases)
{
/* Create an array with space for all the bases, but only containing the usable ones */
@@ -3453,7 +3516,7 @@ static Base **animdata_filter_ds_sorted_bases(bDopeSheet *ads,
static size_t animdata_filter_dopesheet(bAnimContext *ac,
ListBase *anim_data,
bDopeSheet *ads,
int filter_mode)
eAnimFilter_Flags filter_mode)
{
Scene *scene = (Scene *)ads->source;
ViewLayer *view_layer = (ViewLayer *)ac->view_layer;
@@ -3549,7 +3612,7 @@ static size_t animdata_filter_dopesheet(bAnimContext *ac,
*/
static short animdata_filter_dopesheet_summary(bAnimContext *ac,
ListBase *anim_data,
int filter_mode,
const eAnimFilter_Flags filter_mode,
size_t *items)
{
bDopeSheet *ads = nullptr;
@@ -3598,7 +3661,7 @@ static size_t animdata_filter_animchan(bAnimContext *ac,
ListBase *anim_data,
bDopeSheet *ads,
bAnimListElem *channel,
int filter_mode)
const eAnimFilter_Flags filter_mode)
{
size_t items = 0;
@@ -3695,7 +3758,7 @@ static size_t animdata_filter_remove_duplis(ListBase *anim_data)
size_t ANIM_animdata_filter(bAnimContext *ac,
ListBase *anim_data,
eAnimFilter_Flags filter_mode,
const eAnimFilter_Flags filter_mode,
void *data,
eAnimCont_Types datatype)
{
@@ -3820,11 +3883,9 @@ size_t ANIM_animdata_filter(bAnimContext *ac,
break;
}
/* unhandled */
default: {
printf("ANIM_animdata_filter() - Invalid datatype argument %i\n", datatype);
case ANIMCONT_NONE:
printf("ANIM_animdata_filter() - Invalid datatype argument ANIMCONT_NONE\n");
break;
}
}
/* remove any 'weedy' entries */