18 #include "testing/testing.h"
57 float time_epsilon = 0.00008f;
113 fcu->
bezt[0].
vec[0][0] = 0.71855f;
114 fcu->
bezt[0].
vec[0][1] = 6.22482f;
115 fcu->
bezt[0].
vec[2][0] = 1.35148f;
116 fcu->
bezt[0].
vec[2][1] = 7.96806f;
118 fcu->
bezt[1].
vec[0][0] = 1.66667f;
119 fcu->
bezt[1].
vec[0][1] = 10.4136f;
120 fcu->
bezt[1].
vec[2][0] = 2.33333f;
121 fcu->
bezt[1].
vec[2][1] = 15.5864f;
186 fcu->
bezt[0].
vec[0][0] = 0.71855f;
187 fcu->
bezt[0].
vec[0][1] = 6.22482f;
188 fcu->
bezt[0].
vec[2][0] = 1.35148f;
189 fcu->
bezt[0].
vec[2][1] = 7.96806f;
191 fcu->
bezt[1].
vec[0][0] = 1.66667f;
192 fcu->
bezt[1].
vec[0][1] = 10.4136f;
193 fcu->
bezt[1].
vec[2][0] = 2.33333f;
194 fcu->
bezt[1].
vec[2][1] = 15.5864f;
224 fcu->
bezt[0].
vec[0][0] = -5.0f;
230 fcu->
bezt[1].
vec[0][0] = 13.0f;
231 fcu->
bezt[1].
vec[0][1] = -2.0f;
232 fcu->
bezt[1].
vec[2][0] = 16.0f;
233 fcu->
bezt[1].
vec[2][1] = -3.0f;
237 const float x = 7.375f;
238 const float y = 1.000f;
239 beztr.
vec[0][0] =
x - 1.0f;
243 beztr.
vec[2][0] =
x + 1.0f;
252 EXPECT_FLOAT_EQ(y_delta, 0.0f);
254 EXPECT_FLOAT_EQ(fcu->
bezt[0].
vec[0][0], -5.0f);
255 EXPECT_FLOAT_EQ(fcu->
bezt[0].
vec[0][1], 0.0f);
256 EXPECT_FLOAT_EQ(fcu->
bezt[0].
vec[1][0], 1.0f);
257 EXPECT_FLOAT_EQ(fcu->
bezt[0].
vec[1][1], 0.0f);
258 EXPECT_FLOAT_EQ(fcu->
bezt[0].
vec[2][0], 1.5f);
259 EXPECT_FLOAT_EQ(fcu->
bezt[0].
vec[2][1], 2.0f);
261 EXPECT_FLOAT_EQ(fcu->
bezt[1].
vec[0][0], 13.0f);
262 EXPECT_FLOAT_EQ(fcu->
bezt[1].
vec[0][1], 0.0f);
263 EXPECT_FLOAT_EQ(fcu->
bezt[1].
vec[1][0], 13.0f);
264 EXPECT_FLOAT_EQ(fcu->
bezt[1].
vec[1][1], 2.0f);
265 EXPECT_FLOAT_EQ(fcu->
bezt[1].
vec[2][0], 16.0f);
266 EXPECT_FLOAT_EQ(fcu->
bezt[1].
vec[2][1], -3.0f);
268 EXPECT_FLOAT_EQ(beztr.
vec[0][0], 4.5f);
269 EXPECT_FLOAT_EQ(beztr.
vec[0][1], 1.5f);
270 EXPECT_FLOAT_EQ(beztr.
vec[1][0], 7.375f);
271 EXPECT_FLOAT_EQ(beztr.
vec[1][1], 1.0f);
272 EXPECT_FLOAT_EQ(beztr.
vec[2][0], 10.250);
273 EXPECT_FLOAT_EQ(beztr.
vec[2][1], 0.5);
278 TEST(fcurve_active_keyframe, ActiveKeyframe)
306 "active keyframe must be selected");
312 <<
"Setting out-of-bounds value via the API should result in valid active_keyframe_index";
317 <<
"Even with active_keyframe_index out of bounds, getting it via the API should produce a "
323 <<
"Setting out-of-bounds value via the API should result in valid active_keyframe_index";
328 <<
"Even with active_keyframe_index out of bounds, getting it via the API should produce a "
342 EXPECT_FLOAT_EQ(fcu->
bezt[1].
vec[0][0], 5.2671194f);
343 EXPECT_FLOAT_EQ(fcu->
bezt[1].
vec[0][1], 15.0f);
345 EXPECT_FLOAT_EQ(fcu->
bezt[1].
vec[1][0], 8.0f);
346 EXPECT_FLOAT_EQ(fcu->
bezt[1].
vec[1][1], 15.0f);
348 EXPECT_FLOAT_EQ(fcu->
bezt[1].
vec[2][0], 10.342469f);
349 EXPECT_FLOAT_EQ(fcu->
bezt[1].
vec[2][1], 15.0f);
353 EXPECT_FLOAT_EQ(fcu->
bezt[1].
vec[0][0], 5.2671194f) <<
"Left handle should not move in time";
354 EXPECT_FLOAT_EQ(fcu->
bezt[1].
vec[0][1], 47.0f) <<
"Left handle value should have been updated";
356 EXPECT_FLOAT_EQ(fcu->
bezt[1].
vec[1][0], 8.0f) <<
"Frame should not move in time";
357 EXPECT_FLOAT_EQ(fcu->
bezt[1].
vec[1][1], 47.0f) <<
"Frame value should have been updated";
359 EXPECT_FLOAT_EQ(fcu->
bezt[1].
vec[2][0], 10.342469f) <<
"Right handle should not move in time";
360 EXPECT_FLOAT_EQ(fcu->
bezt[1].
vec[2][1], 47.0f) <<
"Right handle value should have been updated";
void BKE_fcurve_active_keyframe_set(struct FCurve *fcu, const struct BezTriple *active_bezt)
float evaluate_fcurve(struct FCurve *fcu, float evaltime)
bool BKE_fcurve_bezt_subdivide_handles(struct BezTriple *bezt, struct BezTriple *prev, struct BezTriple *next, float *r_pdelta)
void BKE_fcurve_keyframe_move_value_with_handles(struct BezTriple *keyframe, float new_value)
void BKE_fcurve_free(struct FCurve *fcu)
int BKE_fcurve_active_keyframe_index(const struct FCurve *fcu)
struct FCurve * BKE_fcurve_create(void)
EXPECT_EQ(BLI_expr_pylike_eval(expr, nullptr, 0, &result), EXPR_PYLIKE_INVALID)
#define FCURVE_ACTIVE_KEYFRAME_NONE
@ FCURVE_EXTRAPOLATE_CONSTANT
@ FCURVE_EXTRAPOLATE_LINEAR
_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 y
Read Guarded memory(de)allocation.
int insert_vert_fcurve(FCurve *fcu, float x, float y, eBezTriple_KeyframeType keyframe_type, eInsertKeyFlags flag)
static const float EPSILON
TEST(mat3_vec_to_roll, UnitMatrix)
int active_keyframe_index