Blender V4.3
ED_keyframes_keylist.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2009 Blender Authors, Joshua Leung. All rights reserved.
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
9#pragma once
10
12#include "BLI_range.h"
13
14#include "DNA_curve_types.h"
15
16#include "ANIM_action.hh"
17
18struct AnimData;
19struct CacheFile;
20struct FCurve;
21struct GreasePencil;
24struct ListBase;
25struct MaskLayer;
26struct Object;
27struct Scene;
28struct bAction;
29struct bActionGroup;
30struct bAnimContext;
31struct bDopeSheet;
32struct bGPDlayer;
33struct bGPdata;
34
35namespace blender::animrig {
36class Action;
37class Slot;
38} // namespace blender::animrig
39
40/* ****************************** Base Structs ****************************** */
41
42struct AnimKeylist;
43
47 short flag;
49 short conflict;
50
52 char sel;
53};
54
57 /* ListBase linkage */
59
60 /* sorting-tree linkage */
67
68 /* keyframe info */
74 short sel;
75 float cfra;
76
77 /* key-block info */
79
80 /* number of curves and keys in this column */
82};
83
97
98/* *********************** Keyframe Drawing ****************************** */
99
102 /* only the border */
104 /* only the inside filling */
106 /* the whole thing */
108};
109
121
134
135/* ******************************* Methods ****************************** */
136
138void ED_keylist_free(AnimKeylist *keylist);
140const ActKeyColumn *ED_keylist_find_exact(const AnimKeylist *keylist, float cfra);
141const ActKeyColumn *ED_keylist_find_next(const AnimKeylist *keylist, float cfra);
142const ActKeyColumn *ED_keylist_find_prev(const AnimKeylist *keylist, float cfra);
144 const Range2f frame_range);
145bool ED_keylist_is_empty(const AnimKeylist *keylist);
146const ListBase /*ActKeyColumn*/ *ED_keylist_listbase(const AnimKeylist *keylist);
147bool ED_keylist_all_keys_frame_range(const AnimKeylist *keylist, Range2f *r_frame_range);
152bool ED_keylist_selected_keys_frame_range(const AnimKeylist *keylist, Range2f *r_frame_range);
153const ActKeyColumn *ED_keylist_array(const AnimKeylist *keylist);
155
156/* Key-data Generation --------------- */
157
165 AnimData *adt, FCurve *fcu, AnimKeylist *keylist, int saction_flag, blender::float2 range);
166/* Action Group */
168 bActionGroup *agrp,
169 AnimKeylist *keylist,
170 int saction_flag,
171 blender::float2 range);
172/* Action */
174 AnimData *adt, bAction *act, AnimKeylist *keylist, int saction_flag, blender::float2 range);
178 AnimKeylist *keylist,
179 int saction_flag,
180 blender::float2 range);
181/* Object */
182void ob_to_keylist(
183 bDopeSheet *ads, Object *ob, AnimKeylist *keylist, int saction_flag, blender::float2 range);
184/* Cache File */
186 CacheFile *cache_file,
187 AnimKeylist *keylist,
188 int saction_flag);
189/* Scene */
191 bDopeSheet *ads, Scene *sce, AnimKeylist *keylist, int saction_flag, blender::float2 range);
192/* DopeSheet Summary */
194 AnimKeylist *keylist,
195 int saction_flag,
196 blender::float2 range);
197
198/* Grease Pencil datablock summary (Legacy) */
199void gpencil_to_keylist(bDopeSheet *ads, bGPdata *gpd, AnimKeylist *keylist, bool active);
200
201/* Grease Pencil Cels. */
203 const GreasePencilLayer *layer,
204 AnimKeylist *keylist,
205 int saction_flag);
206
207/* Grease Pencil Layer Group. */
209 const GreasePencilLayerTreeGroup *layer_group,
210 AnimKeylist *keylist,
211 const int saction_flag);
212/* Grease Pencil Data-Block. */
214 const GreasePencil *grease_pencil,
215 AnimKeylist *keylist,
216 const int saction_flag,
217 bool active_layer_only);
218/* Grease Pencil Layer (Legacy) */
219void gpl_to_keylist(bDopeSheet *ads, bGPDlayer *gpl, AnimKeylist *keylist);
220
221/* Mask */
222void mask_to_keylist(bDopeSheet *ads, MaskLayer *masklay, AnimKeylist *keylist);
223
224/* ActKeyColumn API ---------------- */
225
227bool actkeyblock_is_valid(const ActKeyColumn *ac);
228
Functions and classes to work with Actions.
eBezTriple_KeyframeType
@ ACTKEYBLOCK_FLAG_ANY_HOLD
@ ACTKEYBLOCK_FLAG_MOVING_HOLD
@ ACTKEYBLOCK_FLAG_GPENCIL
@ ACTKEYBLOCK_FLAG_NON_BEZIER
@ ACTKEYBLOCK_FLAG_STATIC_HOLD
void cachefile_to_keylist(bDopeSheet *ads, CacheFile *cache_file, AnimKeylist *keylist, int saction_flag)
void gpl_to_keylist(bDopeSheet *ads, bGPDlayer *gpl, AnimKeylist *keylist)
void ob_to_keylist(bDopeSheet *ads, Object *ob, AnimKeylist *keylist, int saction_flag, blender::float2 range)
bool actkeyblock_is_valid(const ActKeyColumn *ac)
bool ED_keylist_selected_keys_frame_range(const AnimKeylist *keylist, Range2f *r_frame_range)
eKeyframeShapeDrawOpts
@ KEYFRAME_SHAPE_INSIDE
@ KEYFRAME_SHAPE_BOTH
@ KEYFRAME_SHAPE_FRAME
void summary_to_keylist(bAnimContext *ac, AnimKeylist *keylist, int saction_flag, blender::float2 range)
void action_slot_to_keylist(AnimData *adt, blender::animrig::Action &action, blender::animrig::slot_handle_t slot_handle, AnimKeylist *keylist, int saction_flag, blender::float2 range)
const ActKeyColumn * ED_keylist_find_any_between(const AnimKeylist *keylist, const Range2f frame_range)
const ActKeyColumn * ED_keylist_find_exact(const AnimKeylist *keylist, float cfra)
void grease_pencil_cels_to_keylist(AnimData *adt, const GreasePencilLayer *layer, AnimKeylist *keylist, int saction_flag)
void grease_pencil_data_block_to_keylist(AnimData *adt, const GreasePencil *grease_pencil, AnimKeylist *keylist, const int saction_flag, bool active_layer_only)
void action_to_keylist(AnimData *adt, bAction *act, AnimKeylist *keylist, int saction_flag, blender::float2 range)
eKeyframeHandleDrawOpts
@ KEYFRAME_HANDLE_VECTOR
@ KEYFRAME_HANDLE_FREE
@ KEYFRAME_HANDLE_AUTO_CLAMP
@ KEYFRAME_HANDLE_NONE
@ KEYFRAME_HANDLE_AUTO
@ KEYFRAME_HANDLE_ALIGNED
void ED_keylist_prepare_for_direct_access(AnimKeylist *keylist)
bool ED_keylist_all_keys_frame_range(const AnimKeylist *keylist, Range2f *r_frame_range)
void mask_to_keylist(bDopeSheet *ads, MaskLayer *masklay, AnimKeylist *keylist)
AnimKeylist * ED_keylist_create()
int actkeyblock_get_valid_hold(const ActKeyColumn *ac)
void action_group_to_keylist(AnimData *adt, bActionGroup *agrp, AnimKeylist *keylist, int saction_flag, blender::float2 range)
void ED_keylist_free(AnimKeylist *keylist)
void gpencil_to_keylist(bDopeSheet *ads, bGPdata *gpd, AnimKeylist *keylist, bool active)
const ActKeyColumn * ED_keylist_find_next(const AnimKeylist *keylist, float cfra)
const ActKeyColumn * ED_keylist_find_prev(const AnimKeylist *keylist, float cfra)
void fcurve_to_keylist(AnimData *adt, FCurve *fcu, AnimKeylist *keylist, int saction_flag, blender::float2 range)
int64_t ED_keylist_array_len(const AnimKeylist *keylist)
const ListBase * ED_keylist_listbase(const AnimKeylist *keylist)
bool ED_keylist_is_empty(const AnimKeylist *keylist)
void grease_pencil_layer_group_to_keylist(AnimData *adt, const GreasePencilLayerTreeGroup *layer_group, AnimKeylist *keylist, const int saction_flag)
eKeyframeExtremeDrawOpts
@ KEYFRAME_EXTREME_MAX
@ KEYFRAME_EXTREME_MIXED
@ KEYFRAME_EXTREME_NONE
@ KEYFRAME_EXTREME_FLAT
@ KEYFRAME_EXTREME_MIN
void scene_to_keylist(bDopeSheet *ads, Scene *sce, AnimKeylist *keylist, int saction_flag, blender::float2 range)
const ActKeyColumn * ED_keylist_array(const AnimKeylist *keylist)
decltype(::ActionSlot::handle) slot_handle_t
__int64 int64_t
Definition stdint.h:89
ActKeyColumn * parent
eBezTriple_KeyframeType key_type
ActKeyColumn * prev
ActKeyColumn * right
ActKeyColumn * next
ActKeyColumn * left
ActKeyBlockInfo block