68 const Mask *mask_src = (
const Mask *)id_src;
93 for (
int i = 0; i < mask_spline->tot_point; i++) {
114 for (masklay =
mask->masklayers.first; masklay; masklay = masklay->
next) {
131 for (i = 0; i < spline->
tot_point; i++) {
141 masklay_shape = masklay_shape->
next) {
168 for (
int i = 0; i < spline->tot_point; i++) {
177 if ((act_point_search ==
NULL) && (masklay->act_point >= points_old) &&
178 (masklay->act_point < points_old + spline->tot_point)) {
179 act_point_search = &spline->points[masklay->act_point - points_old];
188 if (masklay_shape->tot_vert) {
191 masklay_shape->tot_vert *
sizeof(
float) *
198 masklay->act_point = act_point_search;
213 spline = masklay->splines.first;
215 for (
int i = 0; i < spline->
tot_point; i++) {
223 spline = spline->
next;
240 for (
int i = 0; i < spline->tot_point; i++) {
254 .struct_size =
sizeof(
Mask),
256 .name_plural =
"masks",
265 .foreach_cache =
NULL,
273 .blend_read_undo_preserve =
NULL,
275 .lib_override_apply_post =
NULL,
287 if (point == &points_array[spline->
tot_point - 1]) {
289 return &points_array[0];
302 if (point == points_array) {
304 return &points_array[spline->
tot_point - 1];
317 if (point == &points_array[spline->
tot_point - 1]) {
319 return &(points_array[0].
bezt);
325 return &((point + 1))->bezt;
336 if ((point_ref >= spline->
points) && (point_ref < &spline->points[spline->
tot_point])) {
341 (point_ref < &spline->points_deform[spline->
tot_point])) {
355 if (name && name[0]) {
359 strcpy(masklay->
name,
"MaskLayer");
369 masklay->
alpha = 1.0f;
393 if (
mask->masklay_act >=
mask->masklay_tot) {
394 mask->masklay_act =
mask->masklay_tot - 1;
405 sizeof(masklay->
name));
456 masklay_shape = masklay_shape->
next) {
461 masklay_shape_new->
flag = masklay_shape->
flag;
462 masklay_shape_new->
frame = masklay_shape->
frame;
475 for (layer = masklayers->
first; layer; layer = layer->
next) {
521 const int tot_uw = point->
tot_uw;
522 const int tot_uw_half = tot_uw / 2;
537 for (
int i = 0; i < tot_uw_half; i++) {
544 for (
int i = 0; i < tot_uw; i++) {
546 uw->
u = 1.0f - uw->
u;
553 const int tot_point_half = tot_point / 2;
561 for (i = 0; i < tot_point_half; i++) {
568 i_prev = tot_point - 1;
569 for (i = 0; i < tot_point; i++) {
586 masklay_shape = masklay_shape->
next) {
589 for (i = 0; i < tot_point_half; i++) {
604 const float proj_eps = 1
e-3;
605 const float proj_eps_sq = proj_eps * proj_eps;
607 float u = -1.0f, du = 1.0f /
N,
u1 = start_u,
u2 = start_u;
612 while (
u1 > 0.0f ||
u2 < 1.0f) {
613 float n1[2], n2[2], co1[2], co2[2];
627 if (ang1 > (
float)
M_PI / 2.0f) {
631 if (ang < 0.0f || ang1 < ang) {
653 if (ang2 > (
float)
M_PI / 2.0f) {
700 r_handle[0] = (bezt->
vec[1][0] + vec[1]);
701 r_handle[1] = (bezt->
vec[1][1] - vec[0]);
710 BLI_assert(!
"Unknown handle passed to BKE_mask_point_handle");
718 float orig_handle[2],
719 float orig_vec[3][3])
724 float v1[2],
v2[2], vec[2];
725 if (keep_direction) {
763 BLI_assert(!
"unknown handle passed to BKE_mask_point_set_handle");
781 co, bezt->
vec[1], bezt->
vec[2], bezt_next->vec[0], bezt_next->vec[1], u);
801 const float du = 0.05f;
805 if (u - du < 0.0f && point_prev ==
NULL) {
811 else if (u + du > 1.0f && point_next ==
NULL) {
818 float prev_co[2], next_co[2], co[2];
819 float dir1[2], dir2[2], dir[2];
850 return (bezt->
weight * (1.0f - u)) + (bezt_next->
weight * u);
867 return bezt_next->weight;
887 return bezt_next->weight;
890 float cur_u = 0.0f, cur_w = 0.0f, next_u = 0.0f, next_w = 0.0f, fac;
892 for (
int i = 0; i <= point->
tot_uw; i++) {
898 cur_u = point->
uw[i - 1].
u;
899 cur_w = point->
uw[i - 1].
w;
907 next_u = point->
uw[i].
u;
908 next_w = point->
uw[i].
w;
911 if (u >= cur_u && u <= next_u) {
916 fac = (u - cur_u) / (next_u - cur_u);
922 return cur_w + (next_w - cur_w) * (3.0f * fac * fac - 2.0f * fac * fac * fac);
925 return (1.0f - fac) * cur_w + fac * next_w;
931 int idx = uw - point->
uw;
933 if (idx > 0 && point->
uw[idx - 1].
u > uw->
u) {
934 while (idx > 0 && point->
uw[idx - 1].
u > point->
uw[idx].
u) {
940 if (idx < point->tot_uw - 1 && point->
uw[idx + 1].
u < uw->
u) {
941 while (idx < point->tot_uw - 1 && point->
uw[idx + 1].
u < point->
uw[idx].
u) {
947 return &point->
uw[idx];
980 for (
int i = 0; i < point->
tot_uw; i++) {
992 const bool do_select)
1006 BLI_assert(!
"Wrong which_handle passed to BKE_mask_point_select_set_handle");
1021 BLI_assert(!
"Wrong which_handle passed to BKE_mask_point_select_set_handle");
1043 if (name && name[0]) {
1047 strcpy(mask_name,
"Mask");
1072 for (i = 0; i < spline->
tot_point; i++) {
1074 point = &spline->
points[i];
1101 spline = next_spline;
1109 for (
int i = 0; i < tot_point; i++) {
1143 masklay_shape->
frame = frame;
1144 masklay_shape->
tot_vert = tot_vert;
1148 return masklay_shape;
1153 if (masklay_shape->
data) {
1168 while (masklay_shape) {
1174 masklay_shape = next_masklay_shape;
1199 masklay = masklay_next;
1205 if (frame_size[0] == frame_size[1]) {
1209 else if (frame_size[0] < frame_size[1]) {
1210 r_co[0] = ((co[0] - 0.5f) * (frame_size[0] / frame_size[1])) + 0.5f;
1215 r_co[1] = ((co[1] - 0.5f) * (frame_size[1] / frame_size[0])) + 0.5f;
1225 float frame_size[2];
1231 frame_size[1] *= (aspy / aspx);
1239 float frame_size[2];
1244 frame_size[1] *= (aspy / aspx);
1252 if (frame_size[0] == frame_size[1]) {
1256 else if (frame_size[0] < frame_size[1]) {
1257 r_co[0] = ((co[0] - 0.5f) / (frame_size[0] / frame_size[1])) + 0.5f;
1262 r_co[1] = ((co[1] - 0.5f) / (frame_size[1] / frame_size[0])) + 0.5f;
1272 float frame_size[2];
1278 frame_size[1] *= (aspy / aspx);
1286 float frame_size[2];
1292 frame_size[1] *= (aspy / aspx);
1299 float parent_matrix[3][3])
1325 float marker_position[2], parent_co[2];
1336 float corners[4][2];
1338 float frame_size[2],
H[3][3], mask_from_clip_matrix[3][3], mask_to_clip_matrix[3][3];
1343 unit_m3(mask_from_clip_matrix);
1348 frame_size[1] *= (aspy / aspx);
1349 if (frame_size[0] == frame_size[1]) {
1352 else if (frame_size[0] < frame_size[1]) {
1353 mask_from_clip_matrix[0][0] = frame_size[1] / frame_size[0];
1354 mask_from_clip_matrix[2][0] = -0.5f * (frame_size[1] / frame_size[0]) + 0.5f;
1357 mask_from_clip_matrix[1][1] = frame_size[1] / frame_size[0];
1358 mask_from_clip_matrix[2][1] = -0.5f * (frame_size[1] / frame_size[0]) + 0.5f;
1361 invert_m3_m3(mask_to_clip_matrix, mask_from_clip_matrix);
1362 mul_m3_series(parent_matrix, mask_from_clip_matrix,
H, mask_to_clip_matrix);
1379 bezt_prev = &point_prev->
bezt;
1383 bezt_next = &point_next->
bezt;
1387 if (bezt_prev || bezt_next) {
1394 else if (handle_type ==
HD_AUTO) {
1436 float tvec_a[2], tvec_b[2];
1477 float length_average = 0.0f;
1478 float weight_average = 0.0f;
1486 if (point_prev && point_next) {
1508 length_average /= (
float)length_tot;
1509 weight_average /= (
float)length_tot;
1524 const bool do_recalc_length)
1527 const char h_back[2] = {point->
bezt.
h1, point->
bezt.
h2};
1528 const float length_average = (do_recalc_length) ?
1540 point->
bezt.
h1 = h_back[0];
1541 point->
bezt.
h2 = h_back[1];
1544 if (do_recalc_length ==
false) {
1554 for (
int i = 0; i < spline->
tot_point; i++) {
1569 for (
int i = 0; i < allocated_points; i++) {
1599 for (masklay =
mask->masklayers.first; masklay; masklay = masklay->
next) {
1649 if (masklay_shape->
tot_vert == tot) {
1650 float *fp = masklay_shape->
data;
1654 for (
int i = 0; i < spline->
tot_point; i++) {
1662 "vert mismatch %d != %d (frame %d)",
1665 masklay_shape->
frame);
1673 if (masklay_shape->
tot_vert == tot) {
1674 float *fp = masklay_shape->
data;
1678 for (
int i = 0; i < spline->
tot_point; i++) {
1686 "vert mismatch %d != %d (frame %d)",
1689 masklay_shape->
frame);
1694 float target[2],
const float a[2],
const float b[2],
const float t,
const float s)
1696 target[0] = s *
a[0] +
t * b[0];
1697 target[1] = s *
a[1] +
t * b[1];
1707 if (masklay_shape_a->
tot_vert == tot && masklay_shape_b->
tot_vert == tot) {
1708 const float *fp_a = masklay_shape_a->
data;
1709 const float *fp_b = masklay_shape_b->
data;
1710 const float ifac = 1.0f - fac;
1714 for (
int i = 0; i < spline->
tot_point; i++) {
1726 bezt->
weight = (fp_a[0] * ifac) + (fp_b[0] * fac);
1727 bezt->
radius = (fp_a[1] * ifac) + (fp_b[1] * fac);
1735 "vert mismatch %d != %d != %d (frame %d - %d)",
1739 masklay_shape_a->
frame,
1740 masklay_shape_b->
frame);
1749 masklay_shape = masklay_shape->
next) {
1750 if (frame == masklay_shape->
frame) {
1751 return masklay_shape;
1753 if (frame < masklay_shape->frame) {
1772 masklay_shape = masklay_shape->
next) {
1773 if (frame == masklay_shape->
frame) {
1774 *r_masklay_shape_a = masklay_shape;
1775 *r_masklay_shape_b =
NULL;
1778 if (frame < masklay_shape->frame) {
1779 if (masklay_shape->
prev) {
1780 *r_masklay_shape_a = masklay_shape->
prev;
1781 *r_masklay_shape_b = masklay_shape;
1785 *r_masklay_shape_a = masklay_shape;
1786 *r_masklay_shape_b =
NULL;
1792 *r_masklay_shape_a = masklay_shape;
1793 *r_masklay_shape_b =
NULL;
1797 *r_masklay_shape_a =
NULL;
1798 *r_masklay_shape_b =
NULL;
1809 if (masklay_shape ==
NULL) {
1815 return masklay_shape;
1828 return masklay_shape_copy;
1839 const void *masklay_shape_b_ptr)
1844 if (masklay_shape_a->
frame < masklay_shape_b->
frame) {
1847 if (masklay_shape_a->
frame > masklay_shape_b->
frame) {
1867 if (index < spline->tot_point) {
1868 *r_masklay_shape = spline;
1882 for (spline_iter = masklay->
splines.
first; spline_iter && spline_iter != spline;
1883 i_abs += spline_iter->
tot_point, spline_iter = spline_iter->
next) {
1893 const float pt_a[2],
1894 const float pt_b[2])
1896 const float segment_len =
len_v2v2(pt_a, pt_b);
1897 if (segment_len == 0.0f) {
1903 float pt_on_line[2];
1906 r_uv[1] = (
len_v2v2(pt_on_line, pt) / segment_len) *
1913 const float pt_a[2],
1914 const float pt_b[2])
1916 const float dvec[2] = {pt_b[0] - pt_a[0], pt_b[1] - pt_a[1]};
1922 r_pt[0] += -dvec[1] * uv[1];
1923 r_pt[1] += dvec[0] * uv[1];
1930 bool do_init_interpolate)
1936 int spline_point_index;
1947 const int pi_curr = spline_point_index;
1948 const int pi_prev = ((spline_point_index - 1) + spline->
tot_point) % spline->
tot_point;
1949 const int pi_next = (spline_point_index + 1) % spline->
tot_point;
1951 const int index_offset = index - spline_point_index;
1953 const int pi_prev_abs = pi_prev + index_offset;
1954 const int pi_next_abs = pi_next + index_offset;
1956 if (do_init_interpolate) {
1957 for (
int i = 0; i < 3; i++) {
1966 masklay_shape = masklay_shape->
next) {
1967 if (tot == masklay_shape->
tot_vert) {
1968 float *data_resized;
1974 memcpy(data_resized,
1975 masklay_shape->
data,
1979 if (index != masklay_shape->
tot_vert - 1) {
1982 (masklay_shape->
tot_vert - (index + 1)) *
sizeof(
float) *
1991 if (do_init_interpolate && spline->
tot_point > 2) {
1992 for (
int i = 0; i < 3; i++) {
2008 masklay_shape->
data = data_resized;
2012 "vert mismatch %d != %d (frame %d)",
2015 masklay_shape->
frame);
2030 masklay_shape = masklay_shape->
next) {
2032 float *data_resized;
2038 memcpy(data_resized,
2039 masklay_shape->
data,
2043 if (index != masklay_shape->
tot_vert) {
2050 masklay_shape->
data = data_resized;
2054 "vert mismatch %d != %d (frame %d)",
2057 masklay_shape->
frame);
2107 for (
int i = 0; i < spline_new->
tot_point; i++) {
2112 char *name_copy =
MEM_mallocN(
len + 1,
"mask clipboard ID name");
2138 for (
int i = 0; i < spline_new->
tot_point; i++) {
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, const bool is_fcurve, const char smoothing)
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 id_fake_user_set(struct ID *id)
void * BKE_libblock_alloc(struct Main *bmain, short type, const char *name, const int flag) ATTR_WARN_UNUSED_RESULT
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_animation(struct MaskLayer *masklay, const float ctime)
@ MASK_WHICH_HANDLE_RIGHT
@ MASK_WHICH_HANDLE_STICK
#define MASKPOINT_SEL_ALL(p)
void BKE_mask_layer_evaluate_deform(struct MaskLayer *masklay, const float ctime)
#define MASKPOINT_DESEL_ALL(p)
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])
void BLI_endian_switch_float_array(float *val, const int size) ATTR_NONNULL(1)
void BLI_ghash_clear(GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp)
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
void * BLI_ghash_lookup(GHash *gh, const void *key) 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 * BLI_findstring(const struct ListBase *listbase, const char *id, const int offset) ATTR_WARN_UNUSED_RESULT 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)
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
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])
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])
void dist_ensure_v2_v2fl(float v1[2], const float v2[2], const float dist)
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 interp_v2_v2v2v2v2_cubic(float p[2], const float v1[2], const float v2[2], const float v3[2], const float v4[2], const float u)
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, const size_t maxncpy) ATTR_NONNULL()
bool BLI_uniquename(struct ListBase *list, void *vlink, const char *defname, char delim, int name_offset, size_t 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)
bool BLO_write_is_undo(BlendWriter *writer)
#define BLT_I18NCONTEXT_ID_MASK
#define CLOG_ERROR(clg_ref,...)
void DEG_relations_tag_update(struct Main *bmain)
@ MASK_LAYERFLAG_FILL_OVERLAP
@ MASK_LAYERFLAG_FILL_DISCRETE
@ MASK_PARENT_POINT_TRACK
#define MASK_RESTRICT_SELECT
#define MASK_OBJECT_SHAPE_ELEM_SIZE
@ MASK_SPLINE_INTERP_EASE
_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)
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)
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 struct @95 mask_clipboard
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)
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)
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
__forceinline const avxi abs(const avxi &a)
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)