110 switch (
area->spacetype) {
148 switch (
area->spacetype) {
266 return (gpd_ptr) ? *(gpd_ptr) :
NULL;
273 return (gpd_ptr) ? *(gpd_ptr) :
NULL;
296 return (gpd_ptr) ? *(gpd_ptr) :
NULL;
376 return (gpl !=
NULL);
413 item_tmp.name = gpl->
info;
417 item_tmp.icon = ICON_GREASEPENCIL;
420 item_tmp.icon = ICON_NONE;
454 item_tmp.identifier = gpl->
info;
455 item_tmp.name = gpl->
info;
456 item_tmp.value = tot - i - 1;
459 item_tmp.icon = ICON_GREASEPENCIL;
462 item_tmp.icon = ICON_NONE;
472 item_tmp.identifier =
"__CREATE__";
473 item_tmp.name =
"New Layer";
475 item_tmp.icon = ICON_ADD;
501 for (i = 1; i <= ob->
totcol; i++) {
504 item_tmp.identifier = ma->
id.
name + 2;
505 item_tmp.name = ma->
id.
name + 2;
534 const float screen_co_a[2] = {x0, y0};
535 const float screen_co_b[2] = {x1,
y1};
619 if (gp_style !=
NULL) {
637 if (gp_style !=
NULL) {
669 r_gsc->
v2d = ®ion->
v2d;
702 const float diff_mat[4][4],
720 float diff_mat[4][4];
721 float inverse_diff_mat[4][4];
743 float diff_mat[4][4];
744 float inverse_diff_mat[4][4];
788 float vec[3] = {pt->
x, pt->
y, 0.0f};
793 if (subrect ==
NULL) {
795 *r_x = (int)(pt->
x / 100 * region->
winx);
796 *r_y = (int)(pt->
y / 100 * region->
winy);
846 float vec[3] = {pt->
x, pt->
y, 0.0f};
863 if (subrect ==
NULL) {
865 *r_x = (pt->
x / 100.0f * region->
winx);
866 *r_y = (pt->
y / 100.0f * region->
winy);
903 float vec[3] = {pt[0], pt[1], 0.0f};
920 if (subrect ==
NULL) {
922 xy[0] = (pt[0] / 100.0f * region->
winx);
923 xy[1] = (pt[1] / 100.0f * region->
winy);
950 const float screen_co[2],
960 float mval_f[2], mval_prj[2];
1003 float mval_f[2] = {point2D->
x, point2D->
y};
1005 float rvec[3], dvec[3];
1072 float diff_mat[4][4];
1073 float inverse_diff_mat[4][4];
1082 for (i = 0, pt = gps->
points; i < gps->totpoints; i++, pt++) {
1105 const float origin[3],
1110 float plane_normal[3];
1128 else if (axis < 3) {
1129 plane_normal[axis] = 1.0f;
1153 const float scale[3] = {1.0f, 1.0f, 1.0f};
1154 plane_normal[2] = 1.0f;
1161 for (
int i = 0; i < gps->
totpoints; i++) {
1186 const bool keep_original)
1196 float diff_mat[4][4], inverse_diff_mat[4][4];
1214 if (keep_original) {
1218 for (i = 0, pt = gps_active->
points; i < gps_active->totpoints; i++, pt++) {
1226 for (i = 0, pt = gps_active->
points; i < gps_active->totpoints; i++, pt++) {
1280 float ray_normal[3];
1284 float depth = 1.70141e+38f;
1285 float location[3] = {0.0f, 0.0f, 0.0f};
1286 float normal[3] = {0.0f, 0.0f, 0.0f};
1292 depsgraph, region, v3d, xy, &ray_start[0], &ray_normal[0],
true);
1326 const float origin[3],
1332 float plane_normal[3];
1346 else if (axis < 3) {
1347 plane_normal[axis] = 1.0f;
1371 const float scale[3] = {1.0f, 1.0f, 1.0f};
1372 plane_normal[2] = 1.0f;
1413 int totnewpoints, oldtotpoints;
1417 for (
int s = 0; s < subdivide; s++) {
1432 for (
int i = oldtotpoints - 1; i > 0; i--) {
1450 dvert_final->
dw = dvert->
dw;
1457 for (
int i = 0; i < oldtotpoints - 1; i++) {
1488 for (
int i = 0; i < gps->
totpoints - 2; i++) {
1508 float diff_mat[4][4];
1509 float cur_mat[4][4];
1514 if (gpl->parent !=
NULL) {
1520 else if (gpl->partype ==
PARBONE) {
1523 float tmp_mat[4][4];
1539 for (i = 0, pt = gps->points; i < gps->totpoints; i++, pt++) {
1556 const float rot[3] = {0.0f};
1589 &gp_falloff_curve->
clipr,
1603 const int def_nr = ob->
actdef - 1;
1609 bGPDframe *init_gpf = (is_multiedit) ? gpl->frames.first : gpl->actframe;
1613 if ((gpf == gpl->actframe) || ((gpf->flag &
GP_FRAME_SELECT) && (is_multiedit))) {
1618 for (gps = gpf->strokes.first; gps; gps = gps->next) {
1629 for (
int i = 0; i < gps->totpoints; i++) {
1644 if (!is_multiedit) {
1657 const int def_nr = ob->
actdef - 1;
1663 bGPDframe *init_gpf = (is_multiedit) ? gpl->frames.first : gpl->actframe;
1667 if ((gpf == gpl->actframe) || ((gpf->flag &
GP_FRAME_SELECT) && (is_multiedit))) {
1672 for (gps = gpf->strokes.first; gps; gps = gps->next) {
1679 for (
int i = 0; i < gps->totpoints; i++) {
1681 if (gps->dvert ==
NULL) {
1697 if (!is_multiedit) {
1710 const int def_nr = ob->
actdef - 1;
1716 bGPDframe *init_gpf = (is_multiedit) ? gpl->frames.first : gpl->actframe;
1720 if ((gpf == gpl->actframe) || ((gpf->flag &
GP_FRAME_SELECT) && (is_multiedit))) {
1725 for (gps = gpf->strokes.first; gps; gps = gps->next) {
1732 for (
int i = 0; i < gps->totpoints; i++) {
1734 if (gps->dvert ==
NULL) {
1752 if (!is_multiedit) {
1765 const int def_nr = ob->
actdef - 1;
1771 bGPDframe *init_gpf = (is_multiedit) ? gpl->frames.first : gpl->actframe;
1775 if ((gpf == gpl->actframe) || ((gpf->flag &
GP_FRAME_SELECT) && (is_multiedit))) {
1780 for (gps = gpf->strokes.first; gps; gps = gps->next) {
1787 for (
int i = 0; i < gps->totpoints; i++) {
1789 if (gps->dvert ==
NULL) {
1802 if (!is_multiedit) {
1844 short radius = (short)brush->
size;
1860 float viewport_size[4];
1862 immUniform2f(
"viewport_size", viewport_size[2], viewport_size[3]);
1905 float *last_mouse_position = customdata;
1908 float color[3] = {1.0f, 1.0f, 1.0f};
1910 float radius = 3.0f;
1912 int mval_i[2] = {
x,
y};
1962 radius = brush->
size;
1983 radius = brush->
size;
2003 radius = brush->
size;
2023 radius = brush->
size;
2066 last_mouse_position[0] + region->
winrct.
xmin,
2067 last_mouse_position[1] + region->
winrct.
ymin);
2082 float *lastpost = customdata;
2101 (lastpost) ? customdata :
NULL);
2169 const float origin[3],
2172 float mval_f[2] = {(
float)point2D->
x, (
float)point2D->
y};
2174 float rvec[3], dvec[3];
2237 if ((gps_ma) && (gps_ma == mat)) {
2253 const float p2d_a1[2],
2254 const float p2d_a2[2],
2259 for (
int s = 0; s < totstrokes; s++) {
2267 for (
int i2 = 0; i2 < gps_iter->
totpoints - 1; i2++) {
2268 float p2d_b1[2], p2d_b2[2];
2273 if (gps == gps_iter) {
2338 const float co_a[3],
2339 const float co_b[3])
2342 int totnewpoints, oldtotpoints;
2359 for (
int i = 0; i < oldtotpoints; i++) {
2378 for (
int i = 0; i < oldtotpoints; i++) {
2384 if (
ELEM(i, a_idx, b_idx)) {
2386 pt_final = &gps->
points[i2];
2388 copy_v3_v3(&pt_final->
x, (i == a_idx) ? co_a : co_b);
2405 const float p2d_a2[2],
2406 const float r_hit2d[2])
2410 float f = dist1 > 0.0f ? dist2 / dist1 : 0.0f;
2416 float f1 = dist1 > 0.0f ? dist3 / dist1 : 0.0f;
2436 const float min_factor = 0.0015f;
2457 if (gps_iter->totpoints < 2) {
2460 gps_array[totstrokes] = gps_iter;
2464 if (totstrokes == 0) {
2470 for (
int i = 0; i < gps->
totpoints; i++) {
2484 "GP Stroke temp 2d points");
2490 for (
int s = 0; s < totstrokes; s++) {
2508 float p2d_a1[2] = {0.0f, 0.0f};
2509 float p2d_a2[2] = {0.0f, 0.0f};
2516 for (
int i = cur_idx; i >= 0; i--) {
2537 if (f > min_factor) {
2549 for (
int i = cur_idx; i < gps->
totpoints; i++) {
2570 if (f > min_factor) {
2596 if ((!hit_a) && (!hit_b)) {
2597 for (
int i = 0; i < gps->
totpoints; i++) {
2599 pta2 = &oldpoints[i];
2609 if ((hit_a) && (hit_b)) {
2659 for (gps = gpf->strokes.first; gps; gps = gps->
next) {
2665 for (i = 0, pt = gps->
points; i < gps->totpoints; i++, pt++) {
2682 bool selected =
false;
2685 for (i = 0, pt = gps->points; i < gps->totpoints; i++, pt++) {
2741 for (
int i = 0; i < gpc->tot_curve_points; i++) {
2757 bool selected =
false;
2760 if (gps->editcurve ==
NULL) {
2817 if (*buffer_used + 1 > *buffer_size) {
2818 if ((*buffer_size == 0) || (buffer_array ==
NULL)) {
2828 *buffer_size = *buffer_used = 0;
2837 if (buffer_array !=
NULL) {
2838 memset(buffer_array, 0,
sizeof(
tGPspoint) * *buffer_size);
2842 return buffer_array;
2928 int ix = mval[0] *
seed;
2929 int iy = mval[1] *
seed;
2930 int iz = ix + iy *
seed;
2937 random_settings->
hsv[0] = rand * brush_settings->
random_hue * 0.5f;
2974 int ix = (int)(tpt->
x *
seed);
2975 int iy = (int)(tpt->
y *
seed);
2976 int iz = ix + iy *
seed;
2978 float factor_value[3];
2986 factor_value[0] = rand * brush_settings->
random_hue * 0.5f;
2989 factor_value[0] = random_color[0];
3006 factor_value[1] = random_color[1];
3023 factor_value[2] = random_color[2];
3037 if (hsv[0] < 0.0f) {
3040 else if (hsv[0] > 1.0f) {
3054 float random_color[3],
3062 const bool is_vertex_fill =
3068 const bool is_vertex_stroke =
3077 float vertex_color[4];
3083 if (is_vertex_fill) {
3090 if (is_vertex_stroke) {
3102 if (gpd_eval !=
NULL) {
3111 const float diff_mat[4][4],
3120 for (
int i = 0; i < 8; i++) {
3129 for (
int i = 0; i < 8; i++) {
3134 if (r_max[0] < r_min[0]) {
3135 SWAP(
float, r_min[0], r_max[0]);
3137 if (r_max[1] < r_min[1]) {
3138 SWAP(
float, r_min[1], r_max[1]);
3145 const float mouse[2],
3147 const float diff_mat[4][4])
3149 const int offset = (int)
ceil(
sqrt((radius * radius) * 2));
3150 float boundbox_min[2];
3151 float boundbox_max[2];
3160 rcti rect_stroke = {boundbox_min[0], boundbox_max[0], boundbox_min[1], boundbox_max[1]};
3163 rcti rect_mouse = {mouse[0] - offset, mouse[0] + offset, mouse[1] - offset, mouse[1] + offset};
3181 const float diff_mat[4][4])
3188 int(*mcoords)[2] =
NULL;
3195 for (i = 0, pt = gps->
points; i < gps->totpoints; i++, pt++) {
3227 const float radius_sqr = radius * radius;
3230 float diff_mat[4][4];
3235 float pt2d_start[2], pt2d_end[2];
3246 float dist_min = FLT_MAX;
3260 float pt2d_target_start[2], pt2d_target_end[2];
3262 pt = &gps_target->points[0];
3266 pt = &gps_target->points[gps_target->totpoints - 1];
3279 for (i = 0, pt = gps_target->points; i < gps_target->totpoints; i++, pt++) {
3287 if ((dist <= radius_sqr) && (dist < dist_min)) {
3290 gps_rtn = gps_target;
3294 if ((dist <= radius_sqr) && (dist < dist_min)) {
3297 gps_rtn = gps_target;
3312 BLI_assert(pt_index >= 0 && pt_index < gps_dst->totpoints);
3322 if ((pt_index > 0) && (pt_index < gps_dst->totpoints - 2)) {
3325 for (
int i = 0; i < gps_dst->
totpoints; i++) {
3330 pt = &gps_dst->
points[0];
3334 gps_dst, pt_index, gps_dst->
totpoints - 1,
true);
3336 if (dist_to_start < dist_to_end) {
3337 for (
int i = 0; i < pt_index; i++) {
3342 for (
int i = pt_index + 1; i < gps_dst->
totpoints; i++) {
3356 pt = &gps_final->
points[totpoint - 1];
3359 pt = &gps_final->
points[totpoint];
3364 for (
int i = 0; i < gps_final->
totpoints; i++) {
3384 const float threshold_sqr = threshold * threshold;
3386 if (dist_to_close < threshold_sqr) {
typedef float(TangentPoint)[2]
Blender kernel action and pose functionality.
struct bPoseChannel * BKE_pose_channel_find_name(const struct bPose *pose, const char *name)
void BKE_brush_gpencil_paint_presets(struct Main *bmain, struct ToolSettings *ts, const bool reset)
#define FOREACH_COLLECTION_OBJECT_RECURSIVE_END
#define FOREACH_SCENE_COLLECTION_END
#define FOREACH_SCENE_COLLECTION_BEGIN(scene, _instance)
#define FOREACH_COLLECTION_OBJECT_RECURSIVE_BEGIN(_collection, _object)
struct ScrArea * CTX_wm_area(const bContext *C)
struct Scene * CTX_data_scene(const bContext *C)
#define CTX_DATA_BEGIN(C, Type, instance, member)
struct bGPdata * CTX_data_gpencil_data(const bContext *C)
struct Depsgraph * CTX_data_ensure_evaluated_depsgraph(const bContext *C)
struct Object * CTX_data_active_object(const bContext *C)
struct bScreen * CTX_wm_screen(const bContext *C)
struct SpaceLink * CTX_wm_space_data(const bContext *C)
struct ARegion * CTX_wm_region(const bContext *C)
struct Main * CTX_data_main(const bContext *C)
struct ToolSettings * CTX_data_tool_settings(const bContext *C)
struct wmWindow * CTX_wm_window(const bContext *C)
void BKE_gpencil_stroke_select_index_set(struct bGPdata *gpd, struct bGPDstroke *gps)
#define GPENCIL_USE_VERTEX_COLOR_STROKE(toolsettings, brush)
struct bGPDlayer * BKE_gpencil_layer_active_get(struct bGPdata *gpd)
void BKE_gpencil_stroke_select_index_reset(struct bGPDstroke *gps)
void BKE_gpencil_dvert_ensure(struct bGPDstroke *gps)
bool BKE_gpencil_layer_is_editable(const struct bGPDlayer *gpl)
void BKE_gpencil_free_stroke(struct bGPDstroke *gps)
struct Material * BKE_gpencil_object_material_ensure_from_active_input_toolsettings(struct Main *bmain, struct Object *ob, struct ToolSettings *ts)
struct Material * BKE_gpencil_object_material_from_brush_get(struct Object *ob, struct Brush *brush)
#define GPENCIL_STRENGTH_MIN
void BKE_gpencil_layer_transform_matrix_get(const struct Depsgraph *depsgraph, struct Object *obact, struct bGPDlayer *gpl, float diff_mat[4][4])
struct bGPDstroke * BKE_gpencil_stroke_duplicate(struct bGPDstroke *gps_src, const bool dup_points, const bool dup_curve)
#define GPENCIL_USE_VERTEX_COLOR_FILL(toolsettings, brush)
void BKE_gpencil_stroke_editcurve_update(struct bGPdata *gpd, struct bGPDlayer *gpl, struct bGPDstroke *gps)
void BKE_gpencil_stroke_merge_distance(struct bGPdata *gpd, struct bGPDframe *gpf, struct bGPDstroke *gps, const float threshold, const bool use_unselected)
struct bGPDstroke * BKE_gpencil_stroke_delete_tagged_points(struct bGPdata *gpd, struct bGPDframe *gpf, struct bGPDstroke *gps, struct bGPDstroke *next_stroke, int tag_flags, const bool select, const bool flat_cap, const int limit)
void BKE_gpencil_stroke_geometry_update(struct bGPdata *gpd, struct bGPDstroke *gps)
void BKE_gpencil_stroke_2d_flat_ref(const struct bGPDspoint *ref_points, int ref_totpoints, const struct bGPDspoint *points, int totpoints, float(*points2d)[2], const float scale, int *r_direction)
void BKE_gpencil_stroke_uv_update(struct bGPDstroke *gps)
void BKE_gpencil_stroke_boundingbox_calc(struct bGPDstroke *gps)
void BKE_gpencil_stroke_join(struct bGPDstroke *gps_a, struct bGPDstroke *gps_b, const bool leave_gaps, const bool fit_thickness)
float BKE_gpencil_stroke_segment_length(const struct bGPDstroke *gps, const int start_index, const int end_index, bool use_3d)
bool BKE_gpencil_stroke_close(struct bGPDstroke *gps)
General operations, lookup, etc. for materials.
struct MaterialGPencilStyle * BKE_gpencil_material_settings(struct Object *ob, short act)
struct Material * BKE_object_material_get(struct Object *ob, short act)
struct Material * BKE_gpencil_material(struct Object *ob, short act)
General operations, lookup, etc. for blender objects.
void BKE_boundbox_init_from_minmax(struct BoundBox *bb, const float min[3], const float max[3])
bool BKE_paint_ensure(struct ToolSettings *ts, struct Paint **r_paint)
struct Paint * BKE_paint_get_active_from_context(const struct bContext *C)
struct MovieTrackingTrack * BKE_tracking_track_get_active(struct MovieTracking *tracking)
BLI_INLINE void * BLI_ghashIterator_getValue(GHashIterator *ghi) ATTR_WARN_UNUSED_RESULT
#define GHASH_ITER(gh_iter_, ghash_)
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 float BLI_hash_int_01(unsigned int k)
BLI_INLINE unsigned int BLI_hash_int_2d(unsigned int kx, unsigned int ky)
void BLI_kdtree_nd_() insert(KDTree *tree, int index, const float co[KD_DIMS]) ATTR_NONNULL(1
void BLI_lasso_boundbox(struct rcti *rect, const int mcoords[][2], const unsigned int mcoords_len)
bool BLI_lasso_is_point_inside(const int mcoords[][2], const unsigned int mcoords_len, const int sx, const int sy, const int error_value)
#define LISTBASE_FOREACH(type, var, list)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_remlink(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void * BLI_findlink(const struct ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
int BLI_listbase_count(const struct ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE int max_ii(int a, int b)
MINLINE float interpf(float a, float b, float t)
void hsv_to_rgb_v(const float hsv[3], float r_rgb[3])
void rgb_to_hsv_v(const float rgb[3], float r_hsv[3])
MINLINE void srgb_to_linearrgb_v4(float linear[4], const float srgb[4])
int isect_seg_seg_v2_point(const float v0[2], const float v1[2], const float v2[2], const float v3[2], float vi[2])
bool isect_line_plane_v3(float r_isect_co[3], const float l1[3], const float l2[3], const float plane_co[3], const float plane_no[3]) ATTR_WARN_UNUSED_RESULT
void mul_m4_m4m4(float R[4][4], const float A[4][4], const float B[4][4])
void unit_m4(float m[4][4])
void mul_mat3_m4_v3(const float M[4][4], float r[3])
bool invert_m4_m4(float R[4][4], const float A[4][4])
void mul_m4_v3(const float M[4][4], float r[3])
bool equals_m4m4(const float mat1[4][4], const float mat2[4][4])
void copy_m4_m4(float m1[4][4], const float m2[4][4])
void mul_v3_m4v3(float r[3], const float M[4][4], const float v[3])
void loc_eul_size_to_mat4(float R[4][4], const float loc[3], const float eul[3], const float size[3])
MINLINE void round_v2i_v2fl(int r[2], const float a[2])
MINLINE void copy_v4_v4(float r[4], const float a[4])
void interp_v2_v2v2(float r[2], const float a[2], const float b[2], const float t)
void interp_v3_v3v3(float r[3], const float a[3], const float b[3], const float t)
MINLINE float len_squared_v2v2(const float a[2], const float b[2]) ATTR_WARN_UNUSED_RESULT
MINLINE void sub_v3_v3(float r[3], const float a[3])
MINLINE float len_squared_v3v3(const float a[3], const float b[3]) ATTR_WARN_UNUSED_RESULT
MINLINE void sub_v3_v3v3(float r[3], const float a[3], const float b[3])
void interp_v4_v4v4(float r[4], const float a[4], const float b[4], const float t)
MINLINE void copy_v2_v2(float r[2], const float a[2])
MINLINE void mul_v3_fl(float r[3], float f)
MINLINE void copy_v3_v3(float r[3], const float a[3])
MINLINE bool is_zero_v3(const float a[3]) ATTR_WARN_UNUSED_RESULT
void minmax_v2v2_v2(float min[2], float max[2], const float vec[2])
MINLINE void add_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE bool equals_v2v2(const float v1[2], const float v2[2]) ATTR_WARN_UNUSED_RESULT
MINLINE void zero_v4(float r[4])
MINLINE void sub_v2_v2v2(float r[2], const float a[2], const float b[2])
MINLINE void zero_v2(float r[2])
MINLINE void zero_v3(float r[3])
MINLINE void mul_v3_v3fl(float r[3], const float a[3], float f)
MINLINE void add_v3_v3(float r[3], const float a[3])
bool BLI_rcti_isect_pt_v(const struct rcti *rect, const int xy[2])
bool BLI_rcti_isect_pt(const struct rcti *rect, const int x, const int y)
bool BLI_rcti_isect(const struct rcti *src1, const struct rcti *src2, struct rcti *dest)
BLI_INLINE float BLI_rctf_size_x(const struct rctf *rct)
BLI_INLINE float BLI_rctf_size_y(const struct rctf *rct)
#define INIT_MINMAX2(min, max)
#define CLAMP3(vec, b, c)
struct Depsgraph Depsgraph
void DEG_id_tag_update(struct ID *id, int flag)
struct ID * DEG_get_evaluated_id(const struct Depsgraph *depsgraph, struct ID *id)
struct Object * DEG_get_evaluated_object(const struct Depsgraph *depsgraph, struct Object *object)
@ ID_RECALC_COPY_ON_WRITE
@ GP_SCULPT_FLAG_TMP_INVERT
@ GP_BRUSH_USE_SAT_RAND_PRESS
@ GP_BRUSH_USE_VAL_RAND_PRESS
@ GP_BRUSH_USE_HUE_RAND_PRESS
@ GP_BRUSH_USE_HUE_AT_STROKE
@ GP_BRUSH_USE_VAL_AT_STROKE
@ GP_BRUSH_USE_SAT_AT_STROKE
@ GP_BRUSH_MODE_VERTEXCOLOR
@ GP_BRUSH_STABILIZE_MOUSE
@ GP_BRUSH_STABILIZE_MOUSE_TEMP
Object groups, one object can be in many groups at once.
#define BEZT_SEL_INVERT(bezt)
#define BEZT_SEL_ALL(bezt)
#define BEZT_DESEL_ALL(bezt)
#define GPENCIL_VERTEX_MODE(gpd)
#define GPENCIL_WEIGHT_MODE(gpd)
#define GPENCIL_SCULPT_MODE(gpd)
@ GP_STROKE_NEEDS_CURVE_UPDATE
#define GPENCIL_MULTIEDIT_SESSIONS_ON(gpd)
#define GPENCIL_PAINT_MODE(gpd)
@ GP_DATA_STROKE_WEIGHTMODE
@ GP_DATA_STROKE_VERTEXMODE
@ GP_DATA_STROKE_PAINTMODE
@ GP_DATA_STROKE_SCULPTMODE
@ GP_DATA_STROKE_EDITMODE
Object is a sort of wrapper for general info.
struct MovieClip * ED_space_clip_get_clip(struct SpaceClip *sc)
struct Object * ED_object_add_type(struct bContext *C, const int type, const char *name, const float loc[3], const float rot[3], const bool enter_editmode, const unsigned short local_view_bits) ATTR_NONNULL(1) ATTR_RETURNS_NONNULL
bool ED_transform_snap_object_project_ray(SnapObjectContext *sctx, struct Depsgraph *depsgraph, const struct SnapObjectParams *params, const float ray_origin[3], const float ray_direction[3], float *ray_depth, float r_co[3], float r_no[3])
eV3DProjStatus ED_view3d_project_int_global(const struct ARegion *region, const float co[3], int r_co[2], const eV3DProjTest flag)
void ED_view3d_calc_camera_border(const struct Scene *scene, struct Depsgraph *depsgraph, const struct ARegion *region, const struct View3D *v3d, const struct RegionView3D *rv3d, struct rctf *r_viewborder, const bool no_shift)
void ED_view3d_win_to_delta(const struct ARegion *region, const float mval[2], float out[3], const float zfac)
void ED_view3d_global_to_vector(const struct RegionView3D *rv3d, const float coord[3], float vec[3])
void ED_view3d_depth_override(struct Depsgraph *depsgraph, struct ARegion *region, struct View3D *v3d, struct Object *obact, eV3DDepthOverrideMode mode, bool update_cache)
void view3d_region_operator_needs_opengl(struct wmWindow *win, struct ARegion *region)
bool ED_view3d_autodist_simple(struct ARegion *region, const int mval[2], float mouse_worldloc[3], int margin, const float *force_depth)
void view3d_operator_needs_opengl(const struct bContext *C)
bool edge_inside_circle(const float cent[2], float radius, const float screen_co_a[2], const float screen_co_b[2])
eV3DProjStatus ED_view3d_project_float_global(const struct ARegion *region, const float co[3], float r_co[2], const eV3DProjTest flag)
float ED_view3d_calc_zfac(const struct RegionView3D *rv3d, const float co[3], bool *r_flip)
bool ED_view3d_win_to_ray_clipped(struct Depsgraph *depsgraph, const struct ARegion *region, const struct View3D *v3d, const float mval[2], float ray_start[3], float ray_normal[3], const bool do_clip)
_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 y1
_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 vn
_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
_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_LINE_DASHED_UNIFORM_COLOR
@ GPU_SHADER_2D_UNIFORM_COLOR
void GPU_blend(eGPUBlend blend)
void GPU_line_smooth(bool enable)
void GPU_viewport_size_get_f(float coords[4])
Read Guarded memory(de)allocation.
#define MEM_recallocN(vmemh, len)
Group RGB to Bright Vector Camera CLAMP
Platform independent time functions.
StructRNA RNA_SpaceImageEditor
StructRNA RNA_SpaceSequenceEditor
StructRNA RNA_MovieTrackingTrack
bool UI_view2d_view_to_region_clip(const struct View2D *v2d, float x, float y, int *r_region_x, int *r_region_y) ATTR_NONNULL()
return(oflags[bm->toolflag_index].f &oflag) !=0
static btDbvtVolume bounds(btDbvtNode **leaves, int count)
static unsigned long seed
const Depsgraph * depsgraph
#define GP_EDITABLE_CURVES_END(gpstroke_iter)
#define GP_EDITABLE_CURVES_BEGIN(gpstroke_iter, C, gpl, gps, gpc)
#define GP_EDITABLE_STROKES_BEGIN(gpstroke_iter, C, gpl, gps)
#define GP_STROKE_BUFFER_CHUNK
#define GP_EDITABLE_STROKES_END(gpstroke_iter)
void ED_gpencil_stroke_close_by_distance(bGPDstroke *gps, const float threshold)
Object * ED_gpencil_add_object(bContext *C, const float loc[3], ushort local_view_bits)
void ED_gpencil_select_toggle_all(bContext *C, int action)
void ED_gpencil_vgroup_deselect(bContext *C, Object *ob)
void gpencil_apply_parent(Depsgraph *depsgraph, Object *obact, bGPDlayer *gpl, bGPDstroke *gps)
void ED_gpencil_projected_2d_bound_box(GP_SpaceConversion *gsc, bGPDstroke *gps, const float diff_mat[4][4], float r_min[2], float r_max[2])
void gpencil_point_conversion_init(bContext *C, GP_SpaceConversion *r_gsc)
bool ED_gpencil_stroke_material_editable(Object *ob, const bGPDlayer *gpl, const bGPDstroke *gps)
void ED_gpencil_project_point_to_plane(const Scene *scene, const Object *ob, bGPDlayer *gpl, const RegionView3D *rv3d, const float origin[3], const int axis, bGPDspoint *pt)
void ED_gpencil_project_stroke_to_plane(const Scene *scene, const Object *ob, const RegionView3D *rv3d, bGPDlayer *gpl, bGPDstroke *gps, const float origin[3], const int axis)
bool gpencil_active_layer_poll(bContext *C)
void ED_gpencil_project_stroke_to_view(bContext *C, bGPDlayer *gpl, bGPDstroke *gps)
bGPDstroke * ED_gpencil_stroke_join_and_trim(bGPdata *gpd, bGPDframe *gpf, bGPDstroke *gps, bGPDstroke *gps_dst, const int pt_index)
static bool gpencil_check_collision(bGPDstroke *gps, bGPDstroke **gps_array, GHash *all_2d, int totstrokes, const float p2d_a1[2], const float p2d_a2[2], float r_hit[2])
static void gpencil_brush_cursor_draw(bContext *C, int x, int y, void *customdata)
bool ED_gpencil_stroke_can_use_direct(const ScrArea *area, const bGPDstroke *gps)
void ED_gpencil_update_color_uv(Main *bmain, Material *mat)
void ED_gpencil_fill_vertex_color_set(ToolSettings *ts, Brush *brush, bGPDstroke *gps)
bool ED_gpencil_stroke_check_collision(GP_SpaceConversion *gsc, bGPDstroke *gps, const float mouse[2], const int radius, const float diff_mat[4][4])
bGPdata * ED_gpencil_data_get_active_direct(ScrArea *area, Object *ob)
void ED_gpencil_tag_scene_gpencil(Scene *scene)
void ED_gpencil_toggle_brush_cursor(bContext *C, bool enable, void *customdata)
void ED_gpencil_init_random_settings(Brush *brush, const int mval[2], GpRandomSettings *random_settings)
bool gpencil_point_xy_to_3d(const GP_SpaceConversion *gsc, Scene *scene, const float screen_co[2], float r_out[3])
void gpencil_subdivide_stroke(bGPdata *gpd, bGPDstroke *gps, const int subdivide)
void ED_gpencil_vgroup_select(bContext *C, Object *ob)
void ED_gpencil_brush_draw_eraser(Brush *brush, int x, int y)
void gpencil_point_to_parent_space(const bGPDspoint *pt, const float diff_mat[4][4], bGPDspoint *r_pt)
const EnumPropertyItem * ED_gpencil_layers_with_new_enum_itemf(bContext *C, PointerRNA *UNUSED(ptr), PropertyRNA *UNUSED(prop), bool *r_free)
bGPdata ** ED_gpencil_data_get_pointers(const bContext *C, PointerRNA *r_ptr)
static bool gpencil_brush_cursor_poll(bContext *C)
void ED_gpencil_sbuffer_update_eval(bGPdata *gpd, Object *ob_eval)
void ED_gpencil_vgroup_remove(bContext *C, Object *ob)
bGPdata ** ED_annotation_data_get_pointers_direct(ID *screen_id, ScrArea *area, Scene *scene, PointerRNA *r_ptr)
static void gpencil_copy_points(bGPDstroke *gps, bGPDspoint *pt, bGPDspoint *pt_final, int i, int i2)
static void gpencil_stroke_convertcoords(ARegion *region, const tGPspoint *point2D, const float origin[3], float out[3])
bool ED_gpencil_stroke_point_is_inside(bGPDstroke *gps, GP_SpaceConversion *gsc, int mouse[2], const float diff_mat[4][4])
bool ED_gpencil_stroke_material_visible(Object *ob, const bGPDstroke *gps)
void ED_gpencil_select_curve_toggle_all(bContext *C, int action)
const EnumPropertyItem * ED_gpencil_material_enum_itemf(bContext *C, PointerRNA *UNUSED(ptr), PropertyRNA *UNUSED(prop), bool *r_free)
void ED_gpencil_point_vertex_color_set(ToolSettings *ts, Brush *brush, bGPDspoint *pt, tGPspoint *tpt)
void gpencil_point_3d_to_xy(const GP_SpaceConversion *gsc, const short flag, const float pt[3], float xy[2])
int ED_gpencil_select_stroke_segment(bGPdata *gpd, bGPDlayer *gpl, bGPDstroke *gps, bGPDspoint *pt, bool select, bool insert, const float scale, float r_hita[3], float r_hitb[3])
void ED_gpencil_setup_modes(bContext *C, bGPdata *gpd, int newmode)
void ED_gpencil_tpoint_to_point(ARegion *region, float origin[3], const tGPspoint *tpt, bGPDspoint *pt)
bool ED_gpencil_frame_has_selected_stroke(const bGPDframe *gpf)
static void gpencil_sbuffer_vertex_color_random(bGPdata *gpd, Brush *brush, tGPspoint *tpt, const float random_color[3], float pen_pressure)
bool gpencil_active_brush_poll(bContext *C)
void ED_gpencil_stroke_reproject(Depsgraph *depsgraph, const GP_SpaceConversion *gsc, SnapObjectContext *sctx, bGPDlayer *gpl, bGPDframe *gpf, bGPDstroke *gps, const eGP_ReprojectModes mode, const bool keep_original)
bGPdata ** ED_gpencil_data_get_pointers_direct(ScrArea *area, Object *ob, PointerRNA *r_ptr)
bGPdata * ED_annotation_data_get_active(const bContext *C)
void gpencil_point_to_xy(const GP_SpaceConversion *gsc, const bGPDstroke *gps, const bGPDspoint *pt, int *r_x, int *r_y)
bool gpencil_add_poll(bContext *C)
bool ED_gpencil_stroke_can_use(const bContext *C, const bGPDstroke *gps)
void ED_gpencil_drawing_reference_get(const Scene *scene, const Object *ob, char align_flag, float r_vec[3])
bool ED_gpencil_data_owner_is_annotation(PointerRNA *owner_ptr)
void gpencil_point_to_xy_fl(const GP_SpaceConversion *gsc, const bGPDstroke *gps, const bGPDspoint *pt, float *r_x, float *r_y)
bGPdata * ED_gpencil_data_get_active_evaluated(const bContext *C)
void ED_gpencil_sbuffer_vertex_color_set(Depsgraph *depsgraph, Object *ob, ToolSettings *ts, Brush *brush, Material *material, float random_color[3], float pen_pressure)
bGPdata * ED_annotation_data_get_active_direct(ID *screen_id, ScrArea *area, Scene *scene)
void ED_gpencil_reset_layers_parent(Depsgraph *depsgraph, Object *obact, bGPdata *gpd)
bGPdata * ED_gpencil_data_get_active(const bContext *C)
bGPDstroke * ED_gpencil_stroke_nearest_to_ends(bContext *C, GP_SpaceConversion *gsc, bGPDlayer *gpl, bGPDframe *gpf, bGPDstroke *gps, const float radius, int *r_index)
tGPspoint * ED_gpencil_sbuffer_ensure(tGPspoint *buffer_array, int *buffer_size, int *buffer_used, const bool clear)
bool ED_gpencil_layer_has_selected_stroke(const bGPDlayer *gpl, const bool is_multiedit)
static void gpencil_insert_point(bGPdata *gpd, bGPDstroke *gps, bGPDspoint *a_pt, bGPDspoint *b_pt, const float co_a[3], const float co_b[3])
void gpencil_apply_parent_point(Depsgraph *depsgraph, Object *obact, bGPDlayer *gpl, bGPDspoint *pt)
static float gpencil_calc_factor(const float p2d_a1[2], const float p2d_a2[2], const float r_hit2d[2])
void ED_gpencil_add_defaults(bContext *C, Object *ob)
bool gpencil_stroke_inside_circle(const float mval[2], int rad, int x0, int y0, int x1, int y1)
const EnumPropertyItem * ED_gpencil_layers_enum_itemf(bContext *C, PointerRNA *UNUSED(ptr), PropertyRNA *UNUSED(prop), bool *r_free)
bGPdata ** ED_annotation_data_get_pointers(const bContext *C, PointerRNA *r_ptr)
static bool gpencil_check_cursor_region(bContext *C, const int mval_i[2])
bool ED_gpencil_has_keyframe_v3d(Scene *UNUSED(scene), Object *ob, int cfra)
void gpencil_stroke_convertcoords_tpoint(Scene *scene, ARegion *region, Object *ob, const tGPspoint *point2D, float *depth, float r_out[3])
void ED_gpencil_vgroup_assign(bContext *C, Object *ob, float weight)
IconTextureDrawCall normal
void *(* MEM_dupallocN)(const void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
static void clear(Message *msg)
static void area(int d1, int d2, int e1, int e2, float weights[2])
void RNA_pointer_create(ID *id, StructRNA *type, void *data, PointerRNA *r_ptr)
void RNA_id_pointer_create(ID *id, PointerRNA *r_ptr)
void RNA_enum_item_end(EnumPropertyItem **items, int *totitem)
void RNA_enum_item_add(EnumPropertyItem **items, int *totitem, const EnumPropertyItem *item)
void RNA_enum_item_add_separator(EnumPropertyItem **items, int *totitem)
const EnumPropertyItem DummyRNA_DEFAULT_items[]
struct CurveMapping * curve_rand_saturation
struct CurveMapping * curve_rand_hue
float draw_random_strength
struct CurveMapping * curve_rand_value
struct BrushGpencilSettings * gpencil_settings
struct CurveMapping * cur_falloff
struct PreviewImage * preview
struct MaterialGPencilStyle * gp_style
struct MovieTracking tracking
struct ToolSettings * toolsettings
struct bNodeTree * nodetree
bGPDcurve_point * curve_points
struct bGPDlayer * gpl_orig
bGPDlayer_Runtime runtime
struct MDeformVert * dvert
bGPDcontrolpoint * cp_points
double PIL_check_seconds_timer(void)
__forceinline const avxb select(const avxb &m, const avxb &t, const avxb &f)
ccl_device_inline float3 ceil(const float3 &a)
void WM_main_add_notifier(unsigned int type, void *reference)
bool WM_paint_cursor_end(wmPaintCursor *handle)
wmPaintCursor * WM_paint_cursor_activate(short space_type, short region_type, bool(*poll)(bContext *C), wmPaintCursorDraw draw, void *customdata)