Blender  V3.3
Classes | Typedefs | Functions | Variables
keyframes_keylist.cc File Reference
#include <algorithm>
#include <cfloat>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <functional>
#include <optional>
#include "MEM_guardedalloc.h"
#include "BLI_array.hh"
#include "BLI_dlrbTree.h"
#include "BLI_listbase.h"
#include "BLI_math.h"
#include "BLI_range.h"
#include "BLI_utildefines.h"
#include "DNA_anim_types.h"
#include "DNA_cachefile_types.h"
#include "DNA_gpencil_types.h"
#include "DNA_mask_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "BKE_fcurve.h"
#include "ED_anim_api.h"
#include "ED_keyframes_keylist.h"

Go to the source code of this file.

Classes

struct  AnimKeylist
 
struct  BezTripleChain
 

Typedefs

using KeylistCreateColumnFunction = std::function< ActKeyColumn *(void *userdata)>
 
using KeylistUpdateColumnFunction = std::function< void(ActKeyColumn *, void *)>
 

Functions

BLI_INLINE bool is_cfra_eq (const float a, const float b)
 
BLI_INLINE bool is_cfra_lt (const float a, const float b)
 
AnimKeylistED_keylist_create ()
 
void ED_keylist_free (AnimKeylist *keylist)
 
static void ED_keylist_convert_key_columns_to_array (AnimKeylist *keylist)
 
static void ED_keylist_runtime_update_key_column_next_prev (AnimKeylist *keylist)
 
static void ED_keylist_runtime_init_listbase (AnimKeylist *keylist)
 
static void ED_keylist_runtime_init (AnimKeylist *keylist)
 
static void ED_keylist_reset_last_accessed (AnimKeylist *keylist)
 
void ED_keylist_prepare_for_direct_access (AnimKeylist *keylist)
 
static const ActKeyColumnED_keylist_find_lower_bound (const AnimKeylist *keylist, const float cfra)
 
static const ActKeyColumnED_keylist_find_upper_bound (const AnimKeylist *keylist, const float cfra)
 
const ActKeyColumnED_keylist_find_exact (const AnimKeylist *keylist, const float cfra)
 
const ActKeyColumnED_keylist_find_next (const AnimKeylist *keylist, const float cfra)
 
const ActKeyColumnED_keylist_find_prev (const AnimKeylist *keylist, const float cfra)
 
const ActKeyColumnED_keylist_find_any_between (const AnimKeylist *keylist, const Range2f frame_range)
 
const ActKeyColumnED_keylist_array (const struct AnimKeylist *keylist)
 
int64_t ED_keylist_array_len (const struct AnimKeylist *keylist)
 
bool ED_keylist_is_empty (const struct AnimKeylist *keylist)
 
const struct ListBaseED_keylist_listbase (const AnimKeylist *keylist)
 
static void keylist_first_last (const struct AnimKeylist *keylist, const struct ActKeyColumn **first_column, const struct ActKeyColumn **last_column)
 
bool ED_keylist_all_keys_frame_range (const struct AnimKeylist *keylist, Range2f *r_frame_range)
 
bool ED_keylist_selected_keys_frame_range (const struct AnimKeylist *keylist, Range2f *r_frame_range)
 
static eKeyframeHandleDrawOpts bezt_handle_type (const BezTriple *bezt)
 
static eKeyframeExtremeDrawOpts bezt_extreme_type (const BezTripleChain *chain)
 
static ActKeyColumnnalloc_ak_bezt (void *data)
 
static void nupdate_ak_bezt (ActKeyColumn *ak, void *data)
 
static ActKeyColumnnalloc_ak_gpframe (void *data)
 
static void nupdate_ak_gpframe (ActKeyColumn *ak, void *data)
 
static ActKeyColumnnalloc_ak_masklayshape (void *data)
 
static void nupdate_ak_masklayshape (ActKeyColumn *ak, void *data)
 
static ActKeyColumnED_keylist_find_neighbor_front_to_back (ActKeyColumn *cursor, float cfra)
 
static ActKeyColumnED_keylist_find_neighbor_back_to_front (ActKeyColumn *cursor, float cfra)
 
static ActKeyColumnED_keylist_find_exact_or_neighbor_column (AnimKeylist *keylist, float cfra)
 
static void ED_keylist_add_or_update_column (AnimKeylist *keylist, float cfra, KeylistCreateColumnFunction create_func, KeylistUpdateColumnFunction update_func, void *userdata)
 
static void add_bezt_to_keycolumns_list (AnimKeylist *keylist, BezTripleChain *bezt)
 
static void add_gpframe_to_keycolumns_list (AnimKeylist *keylist, bGPDframe *gpf)
 
static void add_masklay_to_keycolumns_list (AnimKeylist *keylist, MaskLayerShape *masklay_shape)
 
static void compute_keyblock_data (ActKeyBlockInfo *info, const BezTriple *prev, const BezTriple *beztn)
 
static void add_keyblock_info (ActKeyColumn *col, const ActKeyBlockInfo *block)
 
static void add_bezt_to_keyblocks_list (AnimKeylist *keylist, BezTriple *bezt, const int bezt_len)
 
static void update_keyblocks (AnimKeylist *keylist, BezTriple *bezt, const int bezt_len)
 
bool actkeyblock_is_valid (const ActKeyColumn *ac)
 
int actkeyblock_get_valid_hold (const ActKeyColumn *ac)
 
void summary_to_keylist (bAnimContext *ac, AnimKeylist *keylist, const int saction_flag)
 
void scene_to_keylist (bDopeSheet *ads, Scene *sce, AnimKeylist *keylist, const int saction_flag)
 
void ob_to_keylist (bDopeSheet *ads, Object *ob, AnimKeylist *keylist, const int saction_flag)
 
void cachefile_to_keylist (bDopeSheet *ads, CacheFile *cache_file, AnimKeylist *keylist, const int saction_flag)
 
void fcurve_to_keylist (AnimData *adt, FCurve *fcu, AnimKeylist *keylist, const int saction_flag)
 
void agroup_to_keylist (AnimData *adt, bActionGroup *agrp, AnimKeylist *keylist, const int saction_flag)
 
void action_to_keylist (AnimData *adt, bAction *act, AnimKeylist *keylist, const int saction_flag)
 
void gpencil_to_keylist (bDopeSheet *ads, bGPdata *gpd, AnimKeylist *keylist, const bool active)
 
void gpl_to_keylist (bDopeSheet *UNUSED(ads), bGPDlayer *gpl, AnimKeylist *keylist)
 
void mask_to_keylist (bDopeSheet *UNUSED(ads), MaskLayer *masklay, AnimKeylist *keylist)
 

Variables

static const ActKeyBlockInfo dummy_keyblock = {0}
 

Typedef Documentation

◆ KeylistCreateColumnFunction

using KeylistCreateColumnFunction = std::function<ActKeyColumn *(void *userdata)>

Definition at line 582 of file keyframes_keylist.cc.

◆ KeylistUpdateColumnFunction

using KeylistUpdateColumnFunction = std::function<void(ActKeyColumn *, void *)>

Definition at line 583 of file keyframes_keylist.cc.

Function Documentation

◆ action_to_keylist()

void action_to_keylist ( AnimData adt,
bAction act,
AnimKeylist keylist,
const int  saction_flag 
)

◆ actkeyblock_get_valid_hold()

int actkeyblock_get_valid_hold ( const ActKeyColumn ac)

◆ actkeyblock_is_valid()

bool actkeyblock_is_valid ( const ActKeyColumn ac)

Checks if ActKeyColumn has any block data.

Definition at line 869 of file keyframes_keylist.cc.

References ActKeyColumn::next, and ActKeyColumn::totblock.

Referenced by actkeyblock_get_valid_hold(), and draw_keylist_block().

◆ add_bezt_to_keyblocks_list()

static void add_bezt_to_keyblocks_list ( AnimKeylist keylist,
BezTriple bezt,
const int  bezt_len 
)
static

◆ add_bezt_to_keycolumns_list()

static void add_bezt_to_keycolumns_list ( AnimKeylist keylist,
BezTripleChain bezt 
)
static

◆ add_gpframe_to_keycolumns_list()

static void add_gpframe_to_keycolumns_list ( AnimKeylist keylist,
bGPDframe gpf 
)
static

◆ add_keyblock_info()

static void add_keyblock_info ( ActKeyColumn col,
const ActKeyBlockInfo block 
)
static

Definition at line 757 of file keyframes_keylist.cc.

References col, ActKeyBlockInfo::flag, and ActKeyBlockInfo::sel.

Referenced by add_bezt_to_keyblocks_list().

◆ add_masklay_to_keycolumns_list()

static void add_masklay_to_keycolumns_list ( AnimKeylist keylist,
MaskLayerShape masklay_shape 
)
static

◆ agroup_to_keylist()

void agroup_to_keylist ( AnimData adt,
bActionGroup agrp,
AnimKeylist keylist,
const int  saction_flag 
)

◆ bezt_extreme_type()

static eKeyframeExtremeDrawOpts bezt_extreme_type ( const BezTripleChain chain)
static

◆ bezt_handle_type()

static eKeyframeHandleDrawOpts bezt_handle_type ( const BezTriple bezt)
static

◆ cachefile_to_keylist()

void cachefile_to_keylist ( bDopeSheet ads,
CacheFile cache_file,
AnimKeylist keylist,
const int  saction_flag 
)

◆ compute_keyblock_data()

static void compute_keyblock_data ( ActKeyBlockInfo info,
const BezTriple prev,
const BezTriple beztn 
)
static

◆ ED_keylist_add_or_update_column()

static void ED_keylist_add_or_update_column ( AnimKeylist keylist,
float  cfra,
KeylistCreateColumnFunction  create_func,
KeylistUpdateColumnFunction  update_func,
void userdata 
)
static

◆ ED_keylist_all_keys_frame_range()

bool ED_keylist_all_keys_frame_range ( const struct AnimKeylist keylist,
Range2f r_frame_range 
)

◆ ED_keylist_array()

const ActKeyColumn* ED_keylist_array ( const struct AnimKeylist keylist)

◆ ED_keylist_array_len()

int64_t ED_keylist_array_len ( const struct AnimKeylist keylist)

◆ ED_keylist_convert_key_columns_to_array()

static void ED_keylist_convert_key_columns_to_array ( AnimKeylist keylist)
static

◆ ED_keylist_create()

AnimKeylist* ED_keylist_create ( void  )

◆ ED_keylist_find_any_between()

const ActKeyColumn* ED_keylist_find_any_between ( const AnimKeylist keylist,
const Range2f  frame_range 
)

◆ ED_keylist_find_exact()

const ActKeyColumn* ED_keylist_find_exact ( const AnimKeylist keylist,
const float  cfra 
)

◆ ED_keylist_find_exact_or_neighbor_column()

static ActKeyColumn* ED_keylist_find_exact_or_neighbor_column ( AnimKeylist keylist,
float  cfra 
)
static

◆ ED_keylist_find_lower_bound()

static const ActKeyColumn* ED_keylist_find_lower_bound ( const AnimKeylist keylist,
const float  cfra 
)
static

◆ ED_keylist_find_neighbor_back_to_front()

static ActKeyColumn* ED_keylist_find_neighbor_back_to_front ( ActKeyColumn cursor,
float  cfra 
)
static

◆ ED_keylist_find_neighbor_front_to_back()

static ActKeyColumn* ED_keylist_find_neighbor_front_to_back ( ActKeyColumn cursor,
float  cfra 
)
static

◆ ED_keylist_find_next()

const ActKeyColumn* ED_keylist_find_next ( const AnimKeylist keylist,
const float  cfra 
)

◆ ED_keylist_find_prev()

const ActKeyColumn* ED_keylist_find_prev ( const AnimKeylist keylist,
const float  cfra 
)

◆ ED_keylist_find_upper_bound()

static const ActKeyColumn* ED_keylist_find_upper_bound ( const AnimKeylist keylist,
const float  cfra 
)
static

◆ ED_keylist_free()

void ED_keylist_free ( AnimKeylist keylist)

◆ ED_keylist_is_empty()

bool ED_keylist_is_empty ( const struct AnimKeylist keylist)

◆ ED_keylist_listbase()

const struct ListBase* ED_keylist_listbase ( const AnimKeylist keylist)

◆ ED_keylist_prepare_for_direct_access()

void ED_keylist_prepare_for_direct_access ( AnimKeylist keylist)

◆ ED_keylist_reset_last_accessed()

static void ED_keylist_reset_last_accessed ( AnimKeylist keylist)
static

◆ ED_keylist_runtime_init()

static void ED_keylist_runtime_init ( AnimKeylist keylist)
static

◆ ED_keylist_runtime_init_listbase()

static void ED_keylist_runtime_init_listbase ( AnimKeylist keylist)
static

◆ ED_keylist_runtime_update_key_column_next_prev()

static void ED_keylist_runtime_update_key_column_next_prev ( AnimKeylist keylist)
static

◆ ED_keylist_selected_keys_frame_range()

bool ED_keylist_selected_keys_frame_range ( const struct AnimKeylist keylist,
Range2f r_frame_range 
)

◆ fcurve_to_keylist()

void fcurve_to_keylist ( AnimData adt,
FCurve fcu,
AnimKeylist keylist,
const int  saction_flag 
)

◆ gpencil_to_keylist()

void gpencil_to_keylist ( bDopeSheet ads,
bGPdata gpd,
AnimKeylist keylist,
const bool  active 
)

◆ gpl_to_keylist()

void gpl_to_keylist ( bDopeSheet UNUSEDads,
bGPDlayer gpl,
AnimKeylist keylist 
)

◆ is_cfra_eq()

BLI_INLINE bool is_cfra_eq ( const float  a,
const float  b 
)

◆ is_cfra_lt()

BLI_INLINE bool is_cfra_lt ( const float  a,
const float  b 
)

◆ keylist_first_last()

static void keylist_first_last ( const struct AnimKeylist keylist,
const struct ActKeyColumn **  first_column,
const struct ActKeyColumn **  last_column 
)
static

◆ mask_to_keylist()

void mask_to_keylist ( bDopeSheet UNUSEDads,
MaskLayer masklay,
AnimKeylist keylist 
)

◆ nalloc_ak_bezt()

static ActKeyColumn* nalloc_ak_bezt ( void data)
static

◆ nalloc_ak_gpframe()

static ActKeyColumn* nalloc_ak_gpframe ( void data)
static

◆ nalloc_ak_masklayshape()

static ActKeyColumn* nalloc_ak_masklayshape ( void data)
static

◆ nupdate_ak_bezt()

static void nupdate_ak_bezt ( ActKeyColumn ak,
void data 
)
static

◆ nupdate_ak_gpframe()

static void nupdate_ak_gpframe ( ActKeyColumn ak,
void data 
)
static

◆ nupdate_ak_masklayshape()

static void nupdate_ak_masklayshape ( ActKeyColumn ak,
void data 
)
static

◆ ob_to_keylist()

void ob_to_keylist ( bDopeSheet ads,
Object ob,
AnimKeylist keylist,
const int  saction_flag 
)

◆ scene_to_keylist()

void scene_to_keylist ( bDopeSheet ads,
Scene sce,
AnimKeylist keylist,
const int  saction_flag 
)

◆ summary_to_keylist()

void summary_to_keylist ( bAnimContext ac,
AnimKeylist keylist,
const int  saction_flag 
)

◆ update_keyblocks()

static void update_keyblocks ( AnimKeylist keylist,
BezTriple bezt,
const int  bezt_len 
)
static

Variable Documentation

◆ dummy_keyblock

const ActKeyBlockInfo dummy_keyblock = {0}
static

Definition at line 708 of file keyframes_keylist.cc.

Referenced by add_bezt_to_keyblocks_list().