53 const Mask *mask_src = (
const Mask *)id_src;
78 for (
int i = 0; i < mask_spline->tot_point; i++) {
99 for (masklay =
mask->masklayers.first; masklay; masklay = masklay->
next) {
116 for (i = 0; i < spline->
tot_point; i++) {
126 masklay_shape = masklay_shape->
next) {
152 for (
int i = 0; i < spline->tot_point; i++) {
161 if ((act_point_search ==
NULL) && (masklay->act_point >= points_old) &&
162 (masklay->act_point < points_old + spline->tot_point)) {
163 act_point_search = &spline->points[masklay->act_point - points_old];
172 if (masklay_shape->tot_vert) {
175 masklay_shape->tot_vert *
sizeof(
float) *
182 masklay->act_point = act_point_search;
197 spline = masklay->splines.first;
199 for (
int i = 0; i < spline->
tot_point; i++) {
207 spline = spline->
next;
224 for (
int i = 0; i < spline->tot_point; i++) {
238 .struct_size =
sizeof(
Mask),
240 .name_plural =
"masks",
243 .asset_type_info =
NULL,
250 .foreach_cache =
NULL,
251 .foreach_path =
NULL,
259 .blend_read_undo_preserve =
NULL,
261 .lib_override_apply_post =
NULL,
275 return &points_array[0];
288 if (
point == points_array) {
290 return &points_array[spline->
tot_point - 1];
305 return &(points_array[0].
bezt);
311 return &((
point + 1))->bezt;
322 if ((point_ref >= spline->
points) && (point_ref < &spline->points[spline->
tot_point])) {
327 (point_ref < &spline->points_deform[spline->
tot_point])) {
341 if (name && name[0]) {
345 strcpy(masklay->
name,
"MaskLayer");
355 masklay->
alpha = 1.0f;
378 if (
mask->masklay_act >=
mask->masklay_tot) {
379 mask->masklay_act =
mask->masklay_tot - 1;
390 sizeof(masklay->
name));
441 masklay_shape = masklay_shape->
next) {
446 masklay_shape_new->
flag = masklay_shape->
flag;
447 masklay_shape_new->
frame = masklay_shape->
frame;
460 for (layer = masklayers->
first; layer; layer = layer->
next) {
506 const int tot_uw =
point->tot_uw;
507 const int tot_uw_half = tot_uw / 2;
522 for (
int i = 0; i < tot_uw_half; i++) {
529 for (
int i = 0; i < tot_uw; i++) {
531 uw->
u = 1.0f - uw->
u;
538 const int tot_point_half = tot_point / 2;
546 for (i = 0; i < tot_point_half; i++) {
553 i_prev = tot_point - 1;
554 for (i = 0; i < tot_point; i++) {
571 masklay_shape = masklay_shape->
next) {
574 for (i = 0; i < tot_point_half; i++) {
589 const float proj_eps = 1
e-3;
590 const float proj_eps_sq = proj_eps * proj_eps;
592 float u = -1.0f, du = 1.0f /
N,
u1 = start_u,
u2 = start_u;
597 while (
u1 > 0.0f ||
u2 < 1.0f) {
598 float n1[2], n2[2], co1[2], co2[2];
612 if (ang1 > (
float)
M_PI_2) {
616 if (ang < 0.0f || ang1 < ang) {
638 if (ang2 > (
float)
M_PI_2) {
685 r_handle[0] = (bezt->
vec[1][0] + vec[1]);
686 r_handle[1] = (bezt->
vec[1][1] - vec[0]);
695 BLI_assert_msg(0,
"Unknown handle passed to BKE_mask_point_handle");
703 float orig_handle[2],
704 float orig_vec[3][3])
709 float v1[2],
v2[2], vec[2];
710 if (keep_direction) {
748 BLI_assert_msg(0,
"unknown handle passed to BKE_mask_point_set_handle");
766 co, bezt->
vec[1], bezt->
vec[2], bezt_next->vec[0], bezt_next->vec[1], u);
785 const float du = 0.05f;
789 if (u - du < 0.0f && point_prev ==
NULL) {
795 else if (u + du > 1.0f && point_next ==
NULL) {
802 float prev_co[2], next_co[2], co[2];
803 float dir1[2], dir2[2], dir[2];
834 return (bezt->
weight * (1.0f - u)) + (bezt_next->
weight * u);
851 return bezt_next->weight;
871 return bezt_next->weight;
874 float cur_u = 0.0f, cur_w = 0.0f, next_u = 0.0f, next_w = 0.0f, fac;
876 for (
int i = 0; i <=
point->tot_uw; i++) {
882 cur_u =
point->uw[i - 1].u;
883 cur_w =
point->uw[i - 1].w;
886 if (i ==
point->tot_uw) {
891 next_u =
point->uw[i].u;
892 next_w =
point->uw[i].w;
895 if (u >= cur_u && u <= next_u) {
900 fac = (u - cur_u) / (next_u - cur_u);
906 return cur_w + (next_w - cur_w) * (3.0f * fac * fac - 2.0f * fac * fac * fac);
909 return (1.0f - fac) * cur_w + fac * next_w;
914 if (
point->tot_uw > 1) {
915 int idx = uw -
point->uw;
917 if (idx > 0 &&
point->uw[idx - 1].u > uw->
u) {
918 while (idx > 0 &&
point->uw[idx - 1].u >
point->uw[idx].u) {
924 if (idx < point->tot_uw - 1 &&
point->uw[idx + 1].u < uw->
u) {
925 while (idx < point->tot_uw - 1 &&
point->uw[idx + 1].u <
point->uw[idx].u) {
931 return &
point->uw[idx];
964 for (
int i = 0; i <
point->tot_uw; i++) {
976 const bool do_select)
990 BLI_assert_msg(0,
"Wrong which_handle passed to BKE_mask_point_select_set_handle");
1005 BLI_assert_msg(0,
"Wrong which_handle passed to BKE_mask_point_select_set_handle");
1027 if (name && name[0]) {
1031 strcpy(mask_name,
"Mask");
1056 for (i = 0; i < spline->
tot_point; i++) {
1085 spline = next_spline;
1093 for (
int i = 0; i < tot_point; i++) {
1126 masklay_shape->
frame = frame;
1127 masklay_shape->
tot_vert = tot_vert;
1131 return masklay_shape;
1136 if (masklay_shape->
data) {
1149 while (masklay_shape) {
1155 masklay_shape = next_masklay_shape;
1180 masklay = masklay_next;
1186 if (frame_size[0] == frame_size[1]) {
1190 else if (frame_size[0] < frame_size[1]) {
1191 r_co[0] = ((co[0] - 0.5f) * (frame_size[0] / frame_size[1])) + 0.5f;
1196 r_co[1] = ((co[1] - 0.5f) * (frame_size[1] / frame_size[0])) + 0.5f;
1206 float frame_size[2];
1212 frame_size[1] *= (aspy / aspx);
1220 float frame_size[2];
1225 frame_size[1] *= (aspy / aspx);
1232 if (frame_size[0] == frame_size[1]) {
1236 else if (frame_size[0] < frame_size[1]) {
1237 r_co[0] = ((co[0] - 0.5f) / (frame_size[0] / frame_size[1])) + 0.5f;
1242 r_co[1] = ((co[1] - 0.5f) / (frame_size[1] / frame_size[0])) + 0.5f;
1252 float frame_size[2];
1258 frame_size[1] *= (aspy / aspx);
1266 float frame_size[2];
1272 frame_size[1] *= (aspy / aspx);
1279 float parent_matrix[3][3])
1305 float marker_position[2], parent_co[2];
1316 float corners[4][2];
1318 float frame_size[2],
H[3][3], mask_from_clip_matrix[3][3], mask_to_clip_matrix[3][3];
1323 unit_m3(mask_from_clip_matrix);
1328 frame_size[1] *= (aspy / aspx);
1329 if (frame_size[0] == frame_size[1]) {
1332 else if (frame_size[0] < frame_size[1]) {
1333 mask_from_clip_matrix[0][0] = frame_size[1] / frame_size[0];
1334 mask_from_clip_matrix[2][0] = -0.5f * (frame_size[1] / frame_size[0]) + 0.5f;
1337 mask_from_clip_matrix[1][1] = frame_size[1] / frame_size[0];
1338 mask_from_clip_matrix[2][1] = -0.5f * (frame_size[1] / frame_size[0]) + 0.5f;
1341 invert_m3_m3(mask_to_clip_matrix, mask_from_clip_matrix);
1342 mul_m3_series(parent_matrix, mask_from_clip_matrix,
H, mask_to_clip_matrix);
1359 bezt_prev = &point_prev->
bezt;
1363 bezt_next = &point_next->
bezt;
1367 if (bezt_prev || bezt_next) {
1374 else if (handle_type ==
HD_AUTO) {
1414 float tvec_a[2], tvec_b[2];
1455 float length_average = 0.0f;
1456 float weight_average = 0.0f;
1464 if (point_prev && point_next) {
1486 length_average /= (
float)length_tot;
1487 weight_average /= (
float)length_tot;
1491 point->bezt.weight = weight_average;
1497 const bool do_recalc_length)
1500 const char h_back[2] = {
point->bezt.h1,
point->bezt.h2};
1501 const float length_average = (do_recalc_length) ?
1513 point->bezt.h1 = h_back[0];
1514 point->bezt.h2 = h_back[1];
1517 if (do_recalc_length ==
false) {
1527 for (
int i = 0; i < spline->
tot_point; i++) {
1542 for (
int i = 0; i < allocated_points; i++) {
1572 for (masklay =
mask->masklayers.first; masklay; masklay = masklay->
next) {
1621 if (masklay_shape->
tot_vert == tot) {
1622 float *fp = masklay_shape->
data;
1626 for (
int i = 0; i < spline->
tot_point; i++) {
1634 "vert mismatch %d != %d (frame %d)",
1637 masklay_shape->
frame);
1645 if (masklay_shape->
tot_vert == tot) {
1646 float *fp = masklay_shape->
data;
1650 for (
int i = 0; i < spline->
tot_point; i++) {
1658 "vert mismatch %d != %d (frame %d)",
1661 masklay_shape->
frame);
1666 float target[2],
const float a[2],
const float b[2],
const float t,
const float s)
1668 target[0] = s *
a[0] +
t *
b[0];
1669 target[1] = s *
a[1] +
t *
b[1];
1678 if (masklay_shape_a->
tot_vert == tot && masklay_shape_b->
tot_vert == tot) {
1679 const float *fp_a = masklay_shape_a->
data;
1680 const float *fp_b = masklay_shape_b->
data;
1681 const float ifac = 1.0f - fac;
1685 for (
int i = 0; i < spline->
tot_point; i++) {
1697 bezt->
weight = (fp_a[0] * ifac) + (fp_b[0] * fac);
1698 bezt->
radius = (fp_a[1] * ifac) + (fp_b[1] * fac);
1706 "vert mismatch %d != %d != %d (frame %d - %d)",
1710 masklay_shape_a->
frame,
1711 masklay_shape_b->
frame);
1720 masklay_shape = masklay_shape->
next) {
1721 if (frame == masklay_shape->
frame) {
1722 return masklay_shape;
1724 if (frame < masklay_shape->frame) {
1740 masklay_shape = masklay_shape->
next) {
1741 if (frame == masklay_shape->
frame) {
1742 *r_masklay_shape_a = masklay_shape;
1743 *r_masklay_shape_b =
NULL;
1746 if (frame < masklay_shape->frame) {
1747 if (masklay_shape->
prev) {
1748 *r_masklay_shape_a = masklay_shape->
prev;
1749 *r_masklay_shape_b = masklay_shape;
1753 *r_masklay_shape_a = masklay_shape;
1754 *r_masklay_shape_b =
NULL;
1760 *r_masklay_shape_a = masklay_shape;
1761 *r_masklay_shape_b =
NULL;
1765 *r_masklay_shape_a =
NULL;
1766 *r_masklay_shape_b =
NULL;
1777 if (masklay_shape ==
NULL) {
1783 return masklay_shape;
1796 return masklay_shape_copy;
1807 const void *masklay_shape_b_ptr)
1812 if (masklay_shape_a->
frame < masklay_shape_b->
frame) {
1815 if (masklay_shape_a->
frame > masklay_shape_b->
frame) {
1835 if (index < spline->tot_point) {
1836 *r_masklay_shape = spline;
1850 for (spline_iter = masklay->
splines.
first; spline_iter && spline_iter != spline;
1851 i_abs += spline_iter->
tot_point, spline_iter = spline_iter->
next) {
1861 const float pt_a[2],
1862 const float pt_b[2])
1864 const float segment_len =
len_v2v2(pt_a, pt_b);
1865 if (segment_len == 0.0f) {
1871 float pt_on_line[2];
1874 r_uv[1] = (
len_v2v2(pt_on_line, pt) / segment_len) *
1881 const float pt_a[2],
1882 const float pt_b[2])
1884 const float dvec[2] = {pt_b[0] - pt_a[0], pt_b[1] - pt_a[1]};
1890 r_pt[0] += -dvec[1] * uv[1];
1891 r_pt[1] += dvec[0] * uv[1];
1897 bool do_init_interpolate)
1903 int spline_point_index;
1914 const int pi_curr = spline_point_index;
1915 const int pi_prev = ((spline_point_index - 1) + spline->
tot_point) % spline->
tot_point;
1916 const int pi_next = (spline_point_index + 1) % spline->
tot_point;
1918 const int index_offset = index - spline_point_index;
1920 const int pi_prev_abs = pi_prev + index_offset;
1921 const int pi_next_abs = pi_next + index_offset;
1923 if (do_init_interpolate) {
1924 for (
int i = 0; i < 3; i++) {
1933 masklay_shape = masklay_shape->
next) {
1934 if (tot == masklay_shape->
tot_vert) {
1935 float *data_resized;
1941 memcpy(data_resized,
1942 masklay_shape->
data,
1946 if (index != masklay_shape->
tot_vert - 1) {
1949 (masklay_shape->
tot_vert - (index + 1)) *
sizeof(
float) *
1958 if (do_init_interpolate && spline->
tot_point > 2) {
1959 for (
int i = 0; i < 3; i++) {
1975 masklay_shape->
data = data_resized;
1979 "vert mismatch %d != %d (frame %d)",
1982 masklay_shape->
frame);
1996 masklay_shape = masklay_shape->
next) {
1998 float *data_resized;
2004 memcpy(data_resized,
2005 masklay_shape->
data,
2009 if (index != masklay_shape->
tot_vert) {
2016 masklay_shape->
data = data_resized;
2020 "vert mismatch %d != %d (frame %d)",
2023 masklay_shape->
frame);
2071 for (
int i = 0; i < spline_new->
tot_point; i++) {
2073 if (
point->parent.id) {
2075 int len = strlen(
point->parent.id->name);
2076 char *name_copy =
MEM_mallocN(
len + 1,
"mask clipboard ID name");
2077 strcpy(name_copy,
point->parent.id->name);
2100 for (
int i = 0; i < spline_new->
tot_point; i++) {
2102 if (
point->parent.id) {
typedef float(TangentPoint)[2]
void BKE_animdata_blend_write(struct BlendWriter *writer, struct AnimData *adt)
void BKE_animdata_fix_paths_rename_all(struct ID *ref_id, const char *prefix, const char *oldName, const char *newName)
void BKE_nurb_handle_calc(struct BezTriple *bezt, struct BezTriple *prev, struct BezTriple *next, bool is_fcurve, char smoothing)
@ IDTYPE_FLAGS_APPEND_IS_REUSABLE
void BKE_image_get_size_fl(struct Image *image, struct ImageUser *iuser, float r_size[2])
void BKE_image_get_aspect(struct Image *image, float *r_aspx, float *r_aspy)
void * BKE_libblock_alloc(struct Main *bmain, short type, const char *name, int flag) ATTR_WARN_UNUSED_RESULT
void id_fake_user_set(struct ID *id)
void BKE_id_blend_write(struct BlendWriter *writer, struct ID *id)
#define BKE_LIB_FOREACHID_PROCESS_ID(_data, _id, _cb_flag)
struct ListBase * which_libbase(struct Main *bmain, short type)
@ MASK_HANDLE_MODE_INDIVIDUAL_HANDLES
void BKE_mask_layer_evaluate_deform(struct MaskLayer *masklay, float ctime)
@ MASK_WHICH_HANDLE_RIGHT
@ MASK_WHICH_HANDLE_STICK
#define MASKPOINT_SEL_ALL(p)
#define MASKPOINT_DESEL_ALL(p)
void BKE_mask_layer_evaluate_animation(struct MaskLayer *masklay, float ctime)
void BKE_movieclip_get_aspect(struct MovieClip *clip, float *aspx, float *aspy)
float BKE_movieclip_remap_scene_to_clip_frame(const struct MovieClip *clip, float framenr)
void BKE_movieclip_user_set_frame(struct MovieClipUser *user, int framenr)
void BKE_movieclip_get_size_fl(struct MovieClip *clip, struct MovieClipUser *user, float size[2])
struct MovieTrackingTrack * BKE_tracking_track_get_named(struct MovieTracking *tracking, struct MovieTrackingObject *object, const char *name)
struct MovieTrackingPlaneTrack * BKE_tracking_plane_track_get_named(struct MovieTracking *tracking, struct MovieTrackingObject *object, const char *name)
struct MovieTrackingObject * BKE_tracking_object_get_named(struct MovieTracking *tracking, const char *name)
void BKE_tracking_plane_marker_get_subframe_corners(struct MovieTrackingPlaneTrack *plane_track, float framenr, float corners[4][2])
void BKE_tracking_marker_get_subframe_position(struct MovieTrackingTrack *track, float framenr, float pos[2])
void BKE_tracking_homography_between_two_quads(float reference_corners[4][2], float corners[4][2], float H[3][3])
#define BLI_assert_msg(a, msg)
void BLI_endian_switch_float_array(float *val, int size) ATTR_NONNULL(1)
void BLI_ghash_clear(GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp)
void * BLI_ghash_lookup(const GHash *gh, const void *key) ATTR_WARN_UNUSED_RESULT
void BLI_ghash_insert(GHash *gh, void *key, void *val)
void BLI_ghash_free(GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp)
GHash * BLI_ghash_ptr_new(const char *info) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
#define LISTBASE_FOREACH(type, var, list)
BLI_INLINE void BLI_listbase_clear(struct ListBase *lb)
bool BLI_remlink_safe(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void void BLI_listbase_sort(struct ListBase *listbase, int(*cmp)(const void *, const void *)) ATTR_NONNULL(1
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_remlink(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void * BLI_findlink(const struct ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void * BLI_findstring(const struct ListBase *listbase, const char *id, int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE int max_ii(int a, int b)
float closest_to_line_v2(float r_close[2], const float p[2], const float l1[2], const float l2[2])
void unit_m3(float m[3][3])
bool invert_m3_m3(float R[3][3], const float A[3][3])
#define mul_m3_series(...)
MINLINE float len_squared_v2(const float v[2]) ATTR_WARN_UNUSED_RESULT
MINLINE float len_squared_v3(const float v[3]) ATTR_WARN_UNUSED_RESULT
MINLINE float len_v3v3(const float a[3], const float b[3]) ATTR_WARN_UNUSED_RESULT
MINLINE void madd_v2_v2v2fl(float r[2], const float a[2], const float b[2], float f)
float angle_v2v2(const float a[2], const float b[2]) ATTR_WARN_UNUSED_RESULT
void interp_v2_v2v2v2v2_cubic(float p[2], const float v1[2], const float v2[2], const float v3[2], const float v4[2], float u)
MINLINE void sub_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void mul_v2_fl(float r[2], float f)
MINLINE void copy_v2_v2(float r[2], const float a[2])
void dist_ensure_v2_v2fl(float v1[2], const float v2[2], float dist)
MINLINE void copy_v3_v3(float r[3], const float a[3])
MINLINE void add_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void add_v2_v2v2(float r[2], const float a[2], const float b[2])
MINLINE void sub_v2_v2v2(float r[2], const float a[2], const float b[2])
MINLINE float line_point_side_v2(const float l1[2], const float l2[2], const float pt[2]) ATTR_WARN_UNUSED_RESULT
MINLINE void zero_v2(float r[2])
MINLINE float dot_v2v2(const float a[2], const float b[2]) ATTR_WARN_UNUSED_RESULT
MINLINE float len_v2v2(const float a[2], const float b[2]) ATTR_WARN_UNUSED_RESULT
MINLINE float len_v2(const float a[2]) ATTR_WARN_UNUSED_RESULT
MINLINE float normalize_v2(float r[2])
void project_v2_v2v2(float out[2], const float p[2], const float v_proj[2])
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL()
bool BLI_uniquename(struct ListBase *list, void *vlink, const char *defname, char delim, int name_offset, size_t name_len)
#define BLO_read_data_address(reader, ptr_p)
#define BLO_write_id_struct(writer, struct_name, id_address, id)
#define BLO_write_struct(writer, struct_name, data_ptr)
void BLO_read_list(BlendDataReader *reader, struct ListBase *list)
void BLO_write_float_array(BlendWriter *writer, uint num, const float *data_ptr)
#define BLO_read_id_address(reader, lib, id_ptr_p)
#define BLO_write_struct_array(writer, struct_name, array_size, data_ptr)
#define BLO_expand(expander, id)
bool BLO_read_requires_endian_switch(BlendDataReader *reader)
#define BLT_I18NCONTEXT_ID_MASK
#define CLOG_ERROR(clg_ref,...)
void DEG_relations_tag_update(struct Main *bmain)
#define DNA_struct_default_get(struct_name)
#define MASK_OBJECT_SHAPE_ELEM_SIZE
@ MASK_SPLINE_INTERP_EASE
@ MASK_LAYERFLAG_FILL_OVERLAP
@ MASK_LAYERFLAG_FILL_DISCRETE
@ MASK_PARENT_POINT_TRACK
_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 u2
_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 u1
_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 GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble t
_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
Read Guarded memory(de)allocation.
#define MEM_reallocN(vmemh, len)
static void init_data(ModifierData *md)
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Sky Generate a procedural sky texture Noise Generate fractal Perlin noise Wave Generate procedural bands or rings with noise Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes Vector Convert a point
ATTR_WARN_UNUSED_RESULT const BMVert * v2
ATTR_WARN_UNUSED_RESULT const BMVert const BMEdge * e
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
std::string id_name(void *id)
depth_tx normal_tx diffuse_light_tx specular_light_tx volume_light_tx environment_tx ambient_occlusion_tx aov_value_tx in_weight_img image(1, GPU_R32F, Qualifier::WRITE, ImageType::FLOAT_2D_ARRAY, "out_weight_img") .image(3
void(* MEM_freeN)(void *vmemh)
void *(* MEM_dupallocN)(const void *vmemh)
size_t(* MEM_allocN_len)(const void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
static void mask_blend_write(BlendWriter *writer, ID *id, const void *id_address)
void BKE_mask_layer_shape_unlink(MaskLayer *masklay, MaskLayerShape *masklay_shape)
void BKE_mask_coord_from_movieclip(MovieClip *clip, MovieClipUser *user, float r_co[2], const float co[2])
void BKE_mask_calc_handle_point(MaskSpline *spline, MaskSplinePoint *point)
static MaskSplinePoint * mask_spline_point_next(MaskSpline *spline, MaskSplinePoint *points_array, MaskSplinePoint *point)
void BKE_mask_layer_calc_handles(MaskLayer *masklay)
void BKE_mask_layer_shape_from_mask(MaskLayer *masklay, MaskLayerShape *masklay_shape)
MaskLayer * BKE_mask_layer_active(Mask *mask)
float BKE_mask_point_weight(MaskSpline *spline, MaskSplinePoint *point, const float u)
static void expand_mask_parent(BlendExpander *expander, MaskParent *parent)
static void mask_layer_shape_to_mask_point(BezTriple *bezt, const float fp[MASK_OBJECT_SHAPE_ELEM_SIZE])
static int mask_layer_shape_sort_cb(const void *masklay_shape_a_ptr, const void *masklay_shape_b_ptr)
MaskSpline * BKE_mask_spline_copy(const MaskSpline *spline)
static void mask_copy_data(Main *UNUSED(bmain), ID *id_dst, const ID *id_src, const int UNUSED(flag))
void BKE_mask_calc_handle_adjacent_interp(MaskSpline *spline, MaskSplinePoint *point, const float u)
Mask * BKE_mask_new(Main *bmain, const char *name)
static void lib_link_mask_parent(BlendLibReader *reader, Mask *mask, MaskParent *parent)
BezTriple * BKE_mask_spline_point_next_bezt(MaskSpline *spline, MaskSplinePoint *points_array, MaskSplinePoint *point)
static void mask_foreach_id(ID *id, LibraryForeachIDData *data)
void BKE_mask_get_handle_point_adjacent(MaskSpline *spline, MaskSplinePoint *point, MaskSplinePoint **r_point_prev, MaskSplinePoint **r_point_next)
void BKE_mask_layer_unique_name(Mask *mask, MaskLayer *masklay)
MaskSplinePoint * BKE_mask_spline_point_array(MaskSpline *spline)
static MaskSplinePoint * mask_spline_point_prev(MaskSpline *spline, MaskSplinePoint *points_array, MaskSplinePoint *point)
MaskLayerShape * BKE_mask_layer_shape_alloc(MaskLayer *masklay, const int frame)
void BKE_mask_layer_rename(Mask *mask, MaskLayer *masklay, char *oldname, char *newname)
void BKE_mask_point_add_uw(MaskSplinePoint *point, float u, float w)
void BKE_mask_clipboard_paste_to_layer(Main *bmain, MaskLayer *mask_layer)
BLI_INLINE void interp_v2_v2v2_flfl(float target[2], const float a[2], const float b[2], const float t, const float s)
void BKE_mask_point_normal(MaskSpline *spline, MaskSplinePoint *point, float u, float n[2])
void BKE_mask_layer_shape_changed_remove(MaskLayer *masklay, int index, int count)
void BKE_mask_layer_free_list(ListBase *masklayers)
void BKE_mask_spline_direction_switch(MaskLayer *masklay, MaskSpline *spline)
bool BKE_mask_spline_remove(MaskLayer *mask_layer, MaskSpline *spline)
static void interp_weights_uv_v2_apply(const float uv[2], float r_pt[2], const float pt_a[2], const float pt_b[2])
void BKE_mask_point_select_set_handle(MaskSplinePoint *point, const eMaskWhichHandle which_handle, const bool do_select)
int BKE_mask_layer_shape_find_frame_range(MaskLayer *masklay, const float frame, MaskLayerShape **r_masklay_shape_a, MaskLayerShape **r_masklay_shape_b)
MaskSpline * BKE_mask_spline_add(MaskLayer *masklay)
void BKE_mask_layer_shape_sort(MaskLayer *masklay)
void BKE_mask_point_select_set(MaskSplinePoint *point, const bool do_select)
void BKE_mask_parent_init(MaskParent *parent)
eMaskhandleMode BKE_mask_point_handles_mode_get(const MaskSplinePoint *point)
void BKE_mask_point_handle(const MaskSplinePoint *point, eMaskWhichHandle which_handle, float r_handle[2])
MaskSplinePointUW * BKE_mask_point_sort_uw(MaskSplinePoint *point, MaskSplinePointUW *uw)
static void mask_blend_read_data(BlendDataReader *reader, ID *id)
MaskLayerShape * BKE_mask_layer_shape_verify_frame(MaskLayer *masklay, const int frame)
void BKE_mask_layer_copy_list(ListBase *masklayers_new, const ListBase *masklayers)
void BKE_mask_layer_shape_to_mask_interp(MaskLayer *masklay, MaskLayerShape *masklay_shape_a, MaskLayerShape *masklay_shape_b, const float fac)
void BKE_mask_point_segment_co(MaskSpline *spline, MaskSplinePoint *point, float u, float co[2])
void BKE_mask_coord_to_image(Image *image, ImageUser *iuser, float r_co[2], const float co[2])
bool BKE_mask_layer_shape_spline_from_index(MaskLayer *masklay, int index, MaskSpline **r_masklay_shape, int *r_index)
void BKE_mask_point_set_handle(MaskSplinePoint *point, eMaskWhichHandle which_handle, float loc[2], bool keep_direction, float orig_handle[2], float orig_vec[3][3])
void BKE_mask_point_parent_matrix_get(MaskSplinePoint *point, float ctime, float parent_matrix[3][3])
static void mask_layer_shape_from_mask_point(BezTriple *bezt, float fp[MASK_OBJECT_SHAPE_ELEM_SIZE])
float BKE_mask_point_weight_scalar(MaskSpline *spline, MaskSplinePoint *point, const float u)
void BKE_mask_coord_to_frame(float r_co[2], const float co[2], const float frame_size[2])
MaskLayerShape * BKE_mask_layer_shape_duplicate(MaskLayerShape *masklay_shape)
void BKE_mask_layer_free(MaskLayer *masklay)
void BKE_mask_coord_to_movieclip(MovieClip *clip, MovieClipUser *user, float r_co[2], const float co[2])
MaskSplinePoint * BKE_mask_spline_point_array_from_point(MaskSpline *spline, const MaskSplinePoint *point_ref)
void BKE_mask_layer_shape_to_mask(MaskLayer *masklay, MaskLayerShape *masklay_shape)
float BKE_mask_spline_project_co(MaskSpline *spline, MaskSplinePoint *point, float start_u, const float co[2], const eMaskSign sign)
static float mask_point_interp_weight(BezTriple *bezt, BezTriple *bezt_next, const float u)
void BKE_mask_coord_from_image(Image *image, ImageUser *iuser, float r_co[2], const float co[2])
void BKE_mask_layer_remove(Mask *mask, MaskLayer *masklay)
int BKE_mask_layer_shape_totvert(MaskLayer *masklay)
static void mask_free_data(ID *id)
BLI_INLINE void orthogonal_direction_get(const float vec[2], float result[2])
void BKE_mask_layer_shape_free(MaskLayerShape *masklay_shape)
static void mask_blend_read_expand(BlendExpander *expander, ID *id)
void BKE_mask_spline_ensure_deform(MaskSpline *spline)
void BKE_mask_spline_free(MaskSpline *spline)
void BKE_mask_layer_free_shapes(MaskLayer *masklay)
Free all animation keys for a mask layer.
int BKE_mask_layer_shape_spline_to_index(MaskLayer *masklay, MaskSpline *spline)
static void mask_calc_point_handle(MaskSplinePoint *point, MaskSplinePoint *point_prev, MaskSplinePoint *point_next)
int BKE_mask_get_duration(Mask *mask)
static void mask_clipboard_free_ex(bool final_free)
void BKE_mask_point_free(MaskSplinePoint *point)
void BKE_mask_layer_evaluate(MaskLayer *masklay, const float ctime, const bool do_newframe)
void BKE_mask_clipboard_free(void)
void BKE_mask_layer_active_set(Mask *mask, MaskLayer *masklay)
static void mask_blend_read_lib(BlendLibReader *reader, ID *id)
void BKE_mask_point_direction_switch(MaskSplinePoint *point)
void BKE_mask_clipboard_copy_from_layer(MaskLayer *mask_layer)
static struct @94 mask_clipboard
void BKE_mask_spline_free_list(ListBase *splines)
bool BKE_mask_clipboard_is_empty(void)
static MaskSplinePoint * mask_spline_points_copy(const MaskSplinePoint *points, int tot_point)
static Mask * mask_alloc(Main *bmain, const char *name)
MaskLayer * BKE_mask_layer_copy(const MaskLayer *masklay)
static void interp_weights_uv_v2_calc(float r_uv[2], const float pt[2], const float pt_a[2], const float pt_b[2])
MaskLayerShape * BKE_mask_layer_shape_find_frame(MaskLayer *masklay, const int frame)
void BKE_mask_coord_from_frame(float r_co[2], const float co[2], const float frame_size[2])
void BKE_mask_calc_tangent_polyline(MaskSpline *spline, MaskSplinePoint *point, float t[2])
void BKE_mask_layer_shape_changed_add(MaskLayer *masklay, int index, bool do_init, bool do_init_interpolate)
void BKE_mask_evaluate(Mask *mask, const float ctime, const bool do_newframe)
void BKE_mask_calc_handle_point_auto(MaskSpline *spline, MaskSplinePoint *point, const bool do_recalc_length)
Resets auto handles even for non-auto bezier points.
MaskLayer * BKE_mask_layer_new(Mask *mask, const char *name)
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
struct MaskLayerShape * prev
struct MaskLayerShape * next
struct MaskSplinePoint * act_point
struct MaskSpline * act_spline
float parent_corners_orig[4][2]
MaskSplinePoint * points_deform
struct MovieTracking tracking