88 size_t channel_index = 0;
104 size_t channel_index = 0;
132 #define EXTRA_SCROLL_PAD 100.0f
144 uchar col1[4], col2[4];
145 uchar col1a[4], col2a[4];
146 uchar col1b[4], col2b[4];
213 if (show_group_colors && agrp->
customCol) {
250 gpl_col[3] = col1[3];
252 color = sel ? col1 : gpl_col;
255 color = sel ? col1 : col2;
268 uchar *color = sel ? col1 : col2;
297 int action_flag = saction->
flag;
307 float ycenter = (ymin + ymax) / 2.0f;
459 int search_start_frame,
460 int *r_segment_start,
464 int current = search_start_frame;
472 *r_segment_start = current;
481 *r_segment_end = current - 1;
485 *r_segment_end = current - 1;
501 current = segment_end + 1;
510 if (segments_count == 0) {
520 immRectf_fast(pos_id, segment_start - 0.5f, 0, segment_end + 0.5f, 1.0f);
521 current = segment_end + 1;
564 float y_offset = 0.0f;
565 const float cache_draw_height = 4.0f *
UI_DPI_FAC *
U.pixelsize;
571 if (pid->cache->cached_frames ==
NULL) {
577 y_offset += cache_draw_height;
Blender kernel action and pose functionality.
#define PTCACHE_TYPE_SMOKE_HIGHRES
void BKE_ptcache_ids_from_object(struct ListBase *lb, struct Object *ob, struct Scene *scene, int duplis)
#define PTCACHE_TYPE_CLOTH
#define PTCACHE_TYPE_DYNAMICPAINT
#define PTCACHE_TYPE_PARTICLES
#define PTCACHE_TYPE_SOFTBODY
#define PTCACHE_TYPE_SMOKE_DOMAIN
#define PTCACHE_TYPE_SIM_PARTICLES
#define PTCACHE_TYPE_RIGIDBODY
#define LISTBASE_FOREACH(type, var, list)
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
void rgb_float_to_uchar(unsigned char r_col[3], const float col_f[3])
void BLI_rctf_init(struct rctf *rect, float xmin, float xmax, float ymin, float ymax)
#define IN_RANGE(a, b, c)
@ TIME_CACHE_DYNAMICPAINT
@ SACTION_SHOW_INTERPOLATION
Object is a sort of wrapper for general info.
@ USER_ANIM_SHOW_CHANNEL_GROUP_COLORS
#define ACHANNEL_HEIGHT(ac)
#define ACHANNEL_FIRST_TOP(ac)
@ ACHANNEL_SETTING_SELECT
#define ACHANNEL_STEP(ac)
#define ACHANNEL_TOT_HEIGHT(ac, item_amount)
@ ANIMFILTER_DATA_VISIBLE
@ ANIMFILTER_LIST_VISIBLE
@ ANIMFILTER_LIST_CHANNELS
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei height
void GPU_matrix_pop(void)
void GPU_matrix_scale_2f(float x, float y)
void GPU_matrix_push(void)
void GPU_matrix_translate_2f(float x, float y)
@ GPU_SHADER_2D_UNIFORM_COLOR
void GPU_blend(eGPUBlend blend)
void UI_block_end(const struct bContext *C, uiBlock *block)
void UI_block_draw(const struct bContext *C, struct uiBlock *block)
uiBlock * UI_block_begin(const struct bContext *C, struct ARegion *region, const char *name, eUIEmbossType emboss)
@ TH_DOPESHEET_CHANNELSUBOB
void UI_GetThemeColor4ubv(int colorid, unsigned char col[4])
#define V2D_SCROLL_HANDLE_HEIGHT
void UI_view2d_sync(struct bScreen *screen, struct ScrArea *area, struct View2D *v2dcur, int flag)
void draw_channel_names(bContext *C, bAnimContext *ac, ARegion *region)
void timeline_draw_cache(SpaceAction *saction, Object *ob, Scene *scene)
void draw_channel_strips(bAnimContext *ac, SpaceAction *saction, ARegion *region)
static uint timeline_cache_segments_count(PointCache *cache)
static void timeline_cache_draw_cached_segments(PointCache *cache, uint pos_id)
static void timeline_cache_draw_single(PTCacheID *pid, float y_offset, float height, uint pos_id)
static bool timeline_cache_is_hidden_by_setting(SpaceAction *saction, PTCacheID *pid)
static void timeline_cache_modify_color_based_on_state(PointCache *cache, float color[4])
static void timeline_cache_color_get(PTCacheID *pid, float color[4])
static bool timeline_cache_find_next_cached_segment(PointCache *cache, int search_start_frame, int *r_segment_start, int *r_segment_end)
void ANIM_channel_draw_widgets(const bContext *C, bAnimContext *ac, bAnimListElem *ale, uiBlock *block, rctf *rect, size_t channel_index)
void ANIM_channel_draw(bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc, size_t channel_index)
short ANIM_channel_setting_get(bAnimContext *ac, bAnimListElem *ale, eAnimChannel_Settings setting)
const bAnimChannelType * ANIM_channel_get_typeinfo(bAnimListElem *ale)
void ANIM_animdata_freelist(ListBase *anim_data)
AnimData * ANIM_nla_mapping_get(bAnimContext *ac, bAnimListElem *ale)
size_t ANIM_animdata_filter(bAnimContext *ac, ListBase *anim_data, eAnimFilter_Flags filter_mode, void *data, eAnimCont_Types datatype)
DO_INLINE void filter(lfVector *V, fmatrix3x3 *S)
void draw_action_channel(View2D *v2d, AnimData *adt, bAction *act, float ypos, float yscale_fac, int saction_flag)
void draw_scene_channel(View2D *v2d, bDopeSheet *ads, Scene *sce, float ypos, float yscale_fac, int saction_flag)
void draw_masklay_channel(View2D *v2d, bDopeSheet *ads, MaskLayer *masklay, float ypos, float yscale_fac, int saction_flag)
void draw_fcurve_channel(View2D *v2d, AnimData *adt, FCurve *fcu, float ypos, float yscale_fac, int saction_flag)
void draw_gpl_channel(View2D *v2d, bDopeSheet *ads, bGPDlayer *gpl, float ypos, float yscale_fac, int saction_flag)
void draw_object_channel(View2D *v2d, bDopeSheet *ads, Object *ob, float ypos, float yscale_fac, int saction_flag)
void draw_summary_channel(View2D *v2d, bAnimContext *ac, float ypos, float yscale_fac, int saction_flag)
void draw_agroup_channel(View2D *v2d, AnimData *adt, bActionGroup *agrp, float ypos, float yscale_fac, int saction_flag)
struct PointCache * cache
bool(* has_setting)(bAnimContext *ac, bAnimListElem *ale, eAnimChannel_Settings setting)
struct bAnimListElem * next