224 if (
G.is_rendering) {
259 short only_keys = (
short)ked->
i1;
262 if (only_keys == 0) {
278 short only_keys = (
short)ked->
i1;
281 if (only_keys == 0) {
300 ked.
data = (
void *)adt;
301 ked.
i1 = (int)only_keys;
334 float factor = 1.0f,
offset = 0.0f;
373 float max_coord = -FLT_MAX;
374 float min_coord = FLT_MAX;
381 for (i = 0, bezt = fcu->
bezt; i < fcu->totvert; i++, bezt++) {
393 max_coord =
max_ff(max_coord, bezt->
vec[1][1]);
395 min_coord =
min_ff(min_coord, bezt->
vec[1][1]);
403 max_coord =
max_ff(max_coord, bezt->
vec[1][1]);
404 min_coord =
min_ff(min_coord, bezt->
vec[1][1]);
405 max_coord =
max_ff(max_coord, prev_bezt->
vec[1][1]);
406 min_coord =
min_ff(min_coord, prev_bezt->
vec[1][1]);
409 const int resol = fcu->
driver ?
414 max_coord =
max_ff(max_coord, prev_bezt->
vec[1][1]);
415 min_coord =
min_ff(min_coord, prev_bezt->
vec[1][1]);
421 float v1[2],
v2[2], v3[2], v4[2];
423 v1[0] = prev_bezt->
vec[1][0];
424 v1[1] = prev_bezt->
vec[1][1];
425 v2[0] = prev_bezt->
vec[2][0];
426 v2[1] = prev_bezt->
vec[2][1];
428 v3[0] = bezt->
vec[0][0];
429 v3[1] = bezt->
vec[0][1];
430 v4[0] = bezt->
vec[1][0];
431 v4[1] = bezt->
vec[1][1];
436 v1[0],
v2[0], v3[0], v4[0],
data, resol,
sizeof(
float[3]));
438 v1[1],
v2[1], v3[1], v4[1],
data + 1, resol,
sizeof(
float[3]));
440 for (
int j = 0; j <= resol; ++j) {
441 const float *fp = &
data[j * 3];
442 max_coord =
max_ff(max_coord, fp[1]);
443 min_coord =
min_ff(min_coord, fp[1]);
450 float step_size = (bezt->
vec[1][0] - prev_bezt->
vec[1][0]) / resol;
451 for (
int j = 0; j <= resol; j++) {
452 float eval_time = prev_bezt->
vec[1][0] + step_size * j;
454 max_coord =
max_ff(max_coord, eval_value);
455 min_coord =
min_ff(min_coord, eval_value);
463 if (max_coord > min_coord) {
464 range = max_coord - min_coord;
465 if (range > FLT_EPSILON) {
466 factor = 2.0f / range;
468 offset = -min_coord - range / 2.0f;
470 else if (max_coord == min_coord) {
530 float cfranext, cfraprev;
531 bool donenext =
false, doneprev =
false;
532 int nextcount = 0, prevcount = 0;
565 cfranext = aknext->
cfra;
569 if (++nextcount ==
U.view_frame_keyframes) {
573 cfranext = aknext->
cfra;
575 }
while ((aknext !=
NULL) && (donenext ==
false));
586 if (++prevcount ==
U.view_frame_keyframes) {
590 cfraprev = akprev->
cfra;
592 }
while ((akprev !=
NULL) && (doneprev ==
false));
598 if (doneprev || donenext) {
600 *r_prevfra = cfraprev;
607 *r_nextfra = cfranext;
625 int nextfra, prevfra;
627 switch (
U.view_frame_type) {
629 const float fps =
FPS;
640 newrct.
xmax = nextfra;
641 newrct.
xmin = prevfra;
typedef float(TangentPoint)[2]
struct Scene * CTX_data_scene(const bContext *C)
struct Mask * CTX_data_edit_mask(const bContext *C)
struct Object * CTX_data_active_object(const bContext *C)
struct ARegion * CTX_wm_region(const bContext *C)
void BKE_curve_forward_diff_bezier(float q0, float q1, float q2, float q3, float *p, int it, int stride)
float evaluate_fcurve_only_curve(struct FCurve *fcu, float evaltime)
void BKE_fcurve_correct_bezpart(const float v1[2], float v2[2], float v3[2], const float v4[2])
struct MaskLayer * BKE_mask_layer_active(struct Mask *mask)
float BKE_nla_tweakedit_remap(struct AnimData *adt, float cframe, short mode)
MINLINE float max_ff(float a, float b)
MINLINE int min_ii(int a, int b)
MINLINE float min_ff(float a, float b)
MINLINE float len_v2v2(const float a[2], const float b[2]) ATTR_WARN_UNUSED_RESULT
BLI_INLINE float BLI_rctf_size_x(const struct rctf *rct)
#define IN_RANGE_INCL(a, b, c)
Object is a sort of wrapper for general info.
#define SCE_KEYS_NO_SELONLY
#define USER_UNIT_ROT_RADIANS
@ ZOOM_FRAME_MODE_SECONDS
@ ZOOM_FRAME_MODE_KEYFRAMES
@ ZOOM_FRAME_MODE_KEEP_RANGE
@ ANIM_UNITCONV_NORMALIZE
@ ANIM_UNITCONV_NORMALIZE_FREEZE
short(* KeyframeEditFunc)(KeyframeEditData *ked, struct BezTriple *bezt)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble v1
@ GPU_SHADER_2D_DIAG_STRIPES
@ GPU_SHADER_2D_UNIFORM_COLOR
void GPU_blend(eGPUBlend blend)
void GPU_line_width(float width)
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Bright Control the brightness and contrast of the input color Vector Map an input vectors to used to fine tune the interpolation of the input Camera Retrieve information about the camera and how it relates to the current shading point s position Clamp a value between a minimum and a maximum Vector Perform vector math operation Invert a color
#define RNA_SUBTYPE_UNIT(subtype)
void UI_GetThemeColorShadeAlpha4fv(int colorid, int coloffset, int alphaoffset, float col[4])
void UI_view2d_smooth_view(const struct bContext *C, struct ARegion *region, const struct rctf *cur, int smooth_viewtx)
static bool find_prev_next_keyframes(struct bContext *C, int *r_nextfra, int *r_prevfra)
AnimData * ANIM_nla_mapping_get(bAnimContext *ac, bAnimListElem *ale)
static short bezt_nlamapping_apply(KeyframeEditData *ked, BezTriple *bezt)
void ANIM_draw_action_framerange(AnimData *adt, bAction *action, View2D *v2d, float ymin, float ymax)
static float normalization_factor_get(Scene *scene, FCurve *fcu, short flag, float *r_offset)
void ANIM_draw_cfra(const bContext *C, View2D *v2d, short flag)
void ANIM_nla_mapping_apply_fcurve(AnimData *adt, FCurve *fcu, bool restore, bool only_keys)
void ANIM_center_frame(struct bContext *C, int smooth_viewtx)
void ANIM_draw_previewrange(const bContext *C, View2D *v2d, int end_frame_width)
float ANIM_unit_mapping_get_factor(Scene *scene, ID *id, FCurve *fcu, short flag, float *r_offset)
static short bezt_nlamapping_restore(KeyframeEditData *ked, BezTriple *bezt)
short ANIM_get_normalization_flags(bAnimContext *ac)
void ANIM_draw_framerange(Scene *scene, View2D *v2d)
ATTR_WARN_UNUSED_RESULT const BMVert * v2
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
ccl_gpu_kernel_postfix ccl_global float int int int int float bool int offset
short ANIM_fcurve_keyframes_loop(KeyframeEditData *ked, FCurve *fcu, KeyframeEditFunc key_ok, KeyframeEditFunc key_cb, FcuEditFunc fcu_cb)
AnimKeylist * ED_keylist_create()
void scene_to_keylist(bDopeSheet *ads, Scene *sce, AnimKeylist *keylist, const int saction_flag)
void mask_to_keylist(bDopeSheet *UNUSED(ads), MaskLayer *masklay, AnimKeylist *keylist)
void gpencil_to_keylist(bDopeSheet *ads, bGPdata *gpd, AnimKeylist *keylist, const bool active)
void ob_to_keylist(bDopeSheet *ads, Object *ob, AnimKeylist *keylist, const int saction_flag)
void ED_keylist_prepare_for_direct_access(AnimKeylist *keylist)
const ActKeyColumn * ED_keylist_find_next(const AnimKeylist *keylist, const float cfra)
void ED_keylist_free(AnimKeylist *keylist)
const ActKeyColumn * ED_keylist_find_prev(const AnimKeylist *keylist, const float cfra)
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)
void RNA_id_pointer_create(ID *id, PointerRNA *r_ptr)
PropertySubType RNA_property_subtype(PropertyRNA *prop)
bool RNA_path_resolve_property(const PointerRNA *ptr, const char *path, PointerRNA *r_ptr, PropertyRNA **r_prop)