From 5814de65f9a074a65d4cb5e28787f644f268ee75 Mon Sep 17 00:00:00 2001 From: Aaron Carlisle Date: Sun, 26 Dec 2021 16:32:57 -0500 Subject: Cleanup: Store cursor location in tGPspoint as an array Fixes many instances of `-Wstringop-overread` warning on GCC 11 Differential Revision: https://developer.blender.org/D13672 --- .../blender/draw/intern/draw_cache_impl_gpencil.c | 2 +- source/blender/editors/gpencil/annotate_draw.c | 14 ++-- source/blender/editors/gpencil/annotate_paint.c | 52 +++++++------- source/blender/editors/gpencil/gpencil_fill.c | 10 +-- source/blender/editors/gpencil/gpencil_paint.c | 83 +++++++++++----------- source/blender/editors/gpencil/gpencil_primitive.c | 31 ++++---- source/blender/editors/gpencil/gpencil_utils.c | 10 +-- source/blender/editors/include/ED_gpencil.h | 2 +- 8 files changed, 100 insertions(+), 104 deletions(-) (limited to 'source/blender') diff --git a/source/blender/draw/intern/draw_cache_impl_gpencil.c b/source/blender/draw/intern/draw_cache_impl_gpencil.c index 483e52ed547..ddad07a7476 100644 --- a/source/blender/draw/intern/draw_cache_impl_gpencil.c +++ b/source/blender/draw/intern/draw_cache_impl_gpencil.c @@ -642,7 +642,7 @@ static void gpencil_sbuffer_stroke_ensure(bGPdata *gpd, bool do_stroke, bool do_ float(*tpoints2d)[2] = MEM_mallocN(sizeof(*tpoints2d) * vert_len, __func__); /* Triangulate in 2D. */ for (int i = 0; i < vert_len; i++) { - copy_v2_v2(tpoints2d[i], &tpoints[i].x); + copy_v2_v2(tpoints2d[i], tpoints[i].m_xy); } /* Compute directly inside the IBO data buffer. */ /* OPTI: This is a bottleneck if the stroke is very long. */ diff --git a/source/blender/editors/gpencil/annotate_draw.c b/source/blender/editors/gpencil/annotate_draw.c index 3705ea38e11..ae00fc41f40 100644 --- a/source/blender/editors/gpencil/annotate_draw.c +++ b/source/blender/editors/gpencil/annotate_draw.c @@ -165,7 +165,7 @@ static void annotation_draw_stroke_buffer(bGPdata *gps, immBindBuiltinProgram(GPU_SHADER_3D_POINT_UNIFORM_SIZE_UNIFORM_COLOR_AA); immUniformColor3fvAlpha(ink, ink[3]); immBegin(GPU_PRIM_POINTS, 1); - immVertex2fv(pos, &pt->x); + immVertex2fv(pos, pt->m_xy); } else { float oldpressure = points[0].pressure; @@ -191,7 +191,7 @@ static void annotation_draw_stroke_buffer(bGPdata *gps, if (fabsf(pt->pressure - oldpressure) > 0.2f) { /* need to have 2 points to avoid immEnd assert error */ if (draw_points < 2) { - immVertex2fv(pos, &(pt - 1)->x); + immVertex2fv(pos, (pt - 1)->m_xy); } immEnd(); @@ -202,7 +202,7 @@ static void annotation_draw_stroke_buffer(bGPdata *gps, /* need to roll-back one point to ensure that there are no gaps in the stroke */ if (i != 0) { - immVertex2fv(pos, &(pt - 1)->x); + immVertex2fv(pos, (pt - 1)->m_xy); draw_points++; } @@ -210,12 +210,12 @@ static void annotation_draw_stroke_buffer(bGPdata *gps, } /* now the point we want */ - immVertex2fv(pos, &pt->x); + immVertex2fv(pos, pt->m_xy); draw_points++; } /* need to have 2 points to avoid immEnd assert error */ if (draw_points < 2) { - immVertex2fv(pos, &(pt - 1)->x); + immVertex2fv(pos, (pt - 1)->m_xy); } } @@ -227,14 +227,14 @@ static void annotation_draw_stroke_buffer(bGPdata *gps, if ((sflag & GP_STROKE_USE_ARROW_END) && (runtime.arrow_end_style != GP_STROKE_ARROWSTYLE_NONE)) { float end[2]; - copy_v2_fl2(end, points[1].x, points[1].y); + copy_v2_v2(end, points[1].m_xy); annotation_draw_stroke_arrow_buffer(pos, end, runtime.arrow_end, runtime.arrow_end_style); } /* Draw starting arrow stroke. */ if ((sflag & GP_STROKE_USE_ARROW_START) && (runtime.arrow_start_style != GP_STROKE_ARROWSTYLE_NONE)) { float start[2]; - copy_v2_fl2(start, points[0].x, points[0].y); + copy_v2_v2(start, points[0].m_xy); annotation_draw_stroke_arrow_buffer( pos, start, runtime.arrow_start, runtime.arrow_start_style); } diff --git a/source/blender/editors/gpencil/annotate_paint.c b/source/blender/editors/gpencil/annotate_paint.c index 8d7fd295c8d..196cd1028ea 100644 --- a/source/blender/editors/gpencil/annotate_paint.c +++ b/source/blender/editors/gpencil/annotate_paint.c @@ -426,25 +426,25 @@ static void annotation_smooth_buffer(tGPsdata *p, float inf, int idx) /* Compute smoothed coordinate by taking the ones nearby */ if (pta) { - copy_v2_v2(a, &pta->x); + copy_v2_v2(a, pta->m_xy); madd_v2_v2fl(sco, a, average_fac); } if (ptb) { - copy_v2_v2(b, &ptb->x); + copy_v2_v2(b, ptb->m_xy); madd_v2_v2fl(sco, b, average_fac); } if (ptc) { - copy_v2_v2(c, &ptc->x); + copy_v2_v2(c, ptc->m_xy); madd_v2_v2fl(sco, c, average_fac); } if (ptd) { - copy_v2_v2(d, &ptd->x); + copy_v2_v2(d, ptd->m_xy); madd_v2_v2fl(sco, d, average_fac); } /* Based on influence factor, blend between original and optimal smoothed coordinate */ interp_v2_v2v2(c, c, sco, inf); - copy_v2_v2(&ptc->x, c); + copy_v2_v2(ptc->m_xy, c); } static void annotation_stroke_arrow_calc_points_segment(float stroke_points[8], @@ -492,8 +492,8 @@ static void annotation_stroke_arrow_calc_points(tGPspoint *point, case GP_STROKE_ARROWSTYLE_CLOSED: mul_v2_fl(norm_dir, arrow_length); if (point != NULL) { - add_v2_v2(&point->x, norm_dir); - copy_v2_v2(corner, &point->x); + add_v2_v2(point->m_xy, norm_dir); + copy_v2_v2(corner, point->m_xy); } annotation_stroke_arrow_calc_points_segment(stroke_points, corner, @@ -507,8 +507,8 @@ static void annotation_stroke_arrow_calc_points(tGPspoint *point, case GP_STROKE_ARROWSTYLE_SQUARE: mul_v2_fl(norm_dir, arrow_length * 1.5f); if (point != NULL) { - add_v2_v2(&point->x, norm_dir); - copy_v2_v2(corner, &point->x); + add_v2_v2(point->m_xy, norm_dir); + copy_v2_v2(corner, point->m_xy); } annotation_stroke_arrow_calc_points_segment(stroke_points, corner, @@ -544,7 +544,7 @@ static short annotation_stroke_addpoint(tGPsdata *p, pt = (tGPspoint *)(gpd->runtime.sbuffer); /* store settings */ - copy_v2_v2(&pt->x, mval); + copy_v2_v2(pt->m_xy, mval); /* T44932 - Pressure vals are unreliable, so ignore for now */ pt->pressure = 1.0f; pt->strength = 1.0f; @@ -560,7 +560,7 @@ static short annotation_stroke_addpoint(tGPsdata *p, pt = ((tGPspoint *)(gpd->runtime.sbuffer) + 1); /* store settings */ - copy_v2_v2(&pt->x, mval); + copy_v2_v2(pt->m_xy, mval); /* T44932 - Pressure vals are unreliable, so ignore for now */ pt->pressure = 1.0f; pt->strength = 1.0f; @@ -573,10 +573,10 @@ static short annotation_stroke_addpoint(tGPsdata *p, if (gpd->runtime.sbuffer_sflag & (GP_STROKE_USE_ARROW_START | GP_STROKE_USE_ARROW_END)) { /* Store start and end point coords for arrows. */ float end[2]; - copy_v2_v2(end, &pt->x); + copy_v2_v2(end, pt->m_xy); pt = ((tGPspoint *)(gpd->runtime.sbuffer)); float start[2]; - copy_v2_v2(start, &pt->x); + copy_v2_v2(start, pt->m_xy); /* Arrow end corner. */ if (gpd->runtime.sbuffer_sflag & GP_STROKE_USE_ARROW_END) { @@ -609,7 +609,7 @@ static short annotation_stroke_addpoint(tGPsdata *p, pt = ((tGPspoint *)(gpd->runtime.sbuffer) + gpd->runtime.sbuffer_used); /* store settings */ - copy_v2_v2(&pt->x, mval); + copy_v2_v2(pt->m_xy, mval); pt->pressure = pressure; /* Unused for annotations, but initialize for easier conversions to GP Object. */ pt->strength = 1.0f; @@ -636,7 +636,7 @@ static short annotation_stroke_addpoint(tGPsdata *p, pt = (tGPspoint *)gpd->runtime.sbuffer; /* store settings */ - copy_v2_v2(&pt->x, mval); + copy_v2_v2(pt->m_xy, mval); /* T44932 - Pressure vals are unreliable, so ignore for now */ pt->pressure = 1.0f; pt->strength = 1.0f; @@ -678,7 +678,7 @@ static short annotation_stroke_addpoint(tGPsdata *p, } /* convert screen-coordinates to appropriate coordinates (and store them) */ - annotation_stroke_convertcoords(p, &pt->x, &pts->x, NULL); + annotation_stroke_convertcoords(p, pt->m_xy, &pts->x, NULL); /* copy pressure and time */ pts->pressure = pt->pressure; @@ -717,8 +717,8 @@ static void annotation_stroke_arrow_init_point( { /* NOTE: provided co_idx should be always pair number as it's [x1, y1, x2, y2, x3, y3]. */ const float real_co[2] = {co[co_idx], co[co_idx + 1]}; - copy_v2_v2(&ptc->x, real_co); - annotation_stroke_convertcoords(p, &ptc->x, &pt->x, NULL); + copy_v2_v2(ptc->m_xy, real_co); + annotation_stroke_convertcoords(p, ptc->m_xy, &pt->x, NULL); annotation_stroke_arrow_init_point_default(pt); } @@ -885,7 +885,7 @@ static void annotation_stroke_newfrombuffer(tGPsdata *p) ptc = gpd->runtime.sbuffer; /* convert screen-coordinates to appropriate coordinates (and store them) */ - annotation_stroke_convertcoords(p, &ptc->x, &pt->x, NULL); + annotation_stroke_convertcoords(p, ptc->m_xy, &pt->x, NULL); /* copy pressure and time */ pt->pressure = ptc->pressure; @@ -903,7 +903,7 @@ static void annotation_stroke_newfrombuffer(tGPsdata *p) ptc = ((tGPspoint *)runtime.sbuffer) + (runtime.sbuffer_used - 1); /* Convert screen-coordinates to appropriate coordinates (and store them). */ - annotation_stroke_convertcoords(p, &ptc->x, &pt->x, NULL); + annotation_stroke_convertcoords(p, ptc->m_xy, &pt->x, NULL); /* Copy pressure and time. */ pt->pressure = ptc->pressure; @@ -926,7 +926,7 @@ static void annotation_stroke_newfrombuffer(tGPsdata *p) /* End point. */ ptc = ((tGPspoint *)runtime.sbuffer) + (runtime.sbuffer_used - 1); - annotation_stroke_convertcoords(p, &ptc->x, &pt->x, NULL); + annotation_stroke_convertcoords(p, ptc->m_xy, &pt->x, NULL); annotation_stroke_arrow_init_point_default(pt); /* Fill and convert arrow points to create arrow shape. */ @@ -947,7 +947,7 @@ static void annotation_stroke_newfrombuffer(tGPsdata *p) /* Start point. */ ptc = runtime.sbuffer; - annotation_stroke_convertcoords(p, &ptc->x, &pt->x, NULL); + annotation_stroke_convertcoords(p, ptc->m_xy, &pt->x, NULL); annotation_stroke_arrow_init_point_default(pt); /* Fill and convert arrow points to create arrow shape. */ @@ -961,7 +961,7 @@ static void annotation_stroke_newfrombuffer(tGPsdata *p) ptc = gpd->runtime.sbuffer; /* convert screen-coordinates to appropriate coordinates (and store them) */ - annotation_stroke_convertcoords(p, &ptc->x, &pt->x, NULL); + annotation_stroke_convertcoords(p, ptc->m_xy, &pt->x, NULL); /* copy pressure and time */ pt->pressure = ptc->pressure; @@ -981,7 +981,7 @@ static void annotation_stroke_newfrombuffer(tGPsdata *p) const ViewDepths *depths = p->depths; for (i = 0, ptc = gpd->runtime.sbuffer; i < gpd->runtime.sbuffer_used; i++, ptc++, pt++) { - round_v2i_v2fl(mval_i, &ptc->x); + round_v2i_v2fl(mval_i, ptc->m_xy); if ((ED_view3d_depth_read_cached(depths, mval_i, depth_margin, depth_arr + i) == 0) && (i && (ED_view3d_depth_read_cached_seg( @@ -1041,7 +1041,7 @@ static void annotation_stroke_newfrombuffer(tGPsdata *p) for (i = 0, ptc = gpd->runtime.sbuffer; i < gpd->runtime.sbuffer_used && ptc; i++, ptc++, pt++) { /* convert screen-coordinates to appropriate coordinates (and store them) */ - annotation_stroke_convertcoords(p, &ptc->x, &pt->x, depth_arr ? depth_arr + i : NULL); + annotation_stroke_convertcoords(p, ptc->m_xy, &pt->x, depth_arr ? depth_arr + i : NULL); /* copy pressure and time */ pt->pressure = ptc->pressure; @@ -1811,7 +1811,7 @@ static void annotation_draw_stabilizer(bContext *C, int x, int y, void *p_ptr) /* Rope Simple. */ immUniformColor4f(color[0], color[1], color[2], 0.8f); immBegin(GPU_PRIM_LINES, 2); - immVertex2f(pos, pt->x + region->winrct.xmin, pt->y + region->winrct.ymin); + immVertex2f(pos, pt->m_xy[0] + region->winrct.xmin, pt->m_xy[1] + region->winrct.ymin); immVertex2f(pos, x, y); immEnd(); diff --git a/source/blender/editors/gpencil/gpencil_fill.c b/source/blender/editors/gpencil/gpencil_fill.c index f0adb901f88..541b6673cb6 100644 --- a/source/blender/editors/gpencil/gpencil_fill.c +++ b/source/blender/editors/gpencil/gpencil_fill.c @@ -1072,7 +1072,7 @@ static void gpencil_erase_processed_area(tGPDfill *tgpf) /* First set in blue the perimeter. */ for (int i = 0; i < tgpf->sbuffer_used && point2D; i++, point2D++) { - int image_idx = ibuf->x * (int)point2D->y + (int)point2D->x; + int image_idx = ibuf->x * (int)point2D->m_xy[1] + (int)point2D->m_xy[0]; set_pixel(ibuf, image_idx, blue_col); } @@ -1393,7 +1393,7 @@ static void gpencil_get_depth_array(tGPDfill *tgpf) for (i = 0, ptc = tgpf->sbuffer; i < totpoints; i++, ptc++) { int mval_i[2]; - round_v2i_v2fl(mval_i, &ptc->x); + round_v2i_v2fl(mval_i, ptc->m_xy); if ((ED_view3d_depth_read_cached(depths, mval_i, depth_margin, tgpf->depth_arr + i) == 0) && (i && (ED_view3d_depth_read_cached_seg( @@ -1437,9 +1437,9 @@ static int gpencil_points_from_stack(tGPDfill *tgpf) while (!BLI_stack_is_empty(tgpf->stack)) { int v[2]; BLI_stack_pop(tgpf->stack, &v); - copy_v2fl_v2i(&point2D->x, v); + copy_v2fl_v2i(point2D->m_xy, v); /* shift points to center of pixel */ - add_v2_fl(&point2D->x, 0.5f); + add_v2_fl(point2D->m_xy, 0.5f); point2D->pressure = 1.0f; point2D->strength = 1.0f; point2D->time = 0.0f; @@ -2125,7 +2125,7 @@ static int gpencil_fill_modal(bContext *C, wmOperator *op, const wmEvent *event) tgpf->gps_mouse = BKE_gpencil_stroke_new(0, 1, 10.0f); tGPspoint point2D; bGPDspoint *pt = &tgpf->gps_mouse->points[0]; - copy_v2fl_v2i(&point2D.x, tgpf->mouse); + copy_v2fl_v2i(point2D.m_xy, tgpf->mouse); gpencil_stroke_convertcoords_tpoint( tgpf->scene, tgpf->region, tgpf->ob, &point2D, NULL, &pt->x); diff --git a/source/blender/editors/gpencil/gpencil_paint.c b/source/blender/editors/gpencil/gpencil_paint.c index 5b70da80a5e..f4d398ccaad 100644 --- a/source/blender/editors/gpencil/gpencil_paint.c +++ b/source/blender/editors/gpencil/gpencil_paint.c @@ -493,7 +493,7 @@ static void gpencil_brush_jitter(bGPdata *gpd, tGPspoint *pt, const float amplit /* Mouse movement in ints -> floats. */ if (gpd->runtime.sbuffer_used > 1) { tGPspoint *pt_prev = pt - 1; - sub_v2_v2v2(mvec, &pt->x, &pt_prev->x); + sub_v2_v2v2(mvec, pt->m_xy, pt_prev->m_xy); normalize_v2(mvec); /* Rotate mvec by 90 degrees... */ float angle = angle_v2v2(mvec, axis); @@ -502,7 +502,7 @@ static void gpencil_brush_jitter(bGPdata *gpd, tGPspoint *pt, const float amplit mvec[1] *= sin(angle); /* Scale by displacement amount, and apply. */ - madd_v2_v2fl(&pt->x, mvec, amplitude * 10.0f); + madd_v2_v2fl(pt->m_xy, mvec, amplitude * 10.0f); } } @@ -520,8 +520,7 @@ static void gpencil_brush_angle(bGPdata *gpd, Brush *brush, tGPspoint *pt, const /* Apply to first point (only if there are 2 points because before no data to do it ) */ if (gpd->runtime.sbuffer_used == 1) { - mvec[0] = (mval[0] - (pt - 1)->x); - mvec[1] = (mval[1] - (pt - 1)->y); + sub_v2_v2v2(mvec, mval, (pt - 1)->m_xy); normalize_v2(mvec); /* uses > 1.0f to get a smooth transition in first point */ @@ -533,8 +532,7 @@ static void gpencil_brush_angle(bGPdata *gpd, Brush *brush, tGPspoint *pt, const /* apply from second point */ if (gpd->runtime.sbuffer_used >= 1) { - mvec[0] = (mval[0] - (pt - 1)->x); - mvec[1] = (mval[1] - (pt - 1)->y); + sub_v2_v2v2(mvec, mval, (pt - 1)->m_xy); normalize_v2(mvec); fac = 1.0f - fabs(dot_v2v2(v0, mvec)); /* 0.0 to 1.0 */ @@ -581,25 +579,25 @@ static void gpencil_smooth_buffer(tGPsdata *p, float inf, int idx) /* Compute smoothed coordinate by taking the ones nearby */ if (pta) { - copy_v2_v2(a, &pta->x); + copy_v2_v2(a, pta->m_xy); madd_v2_v2fl(sco, a, average_fac); pressure += pta->pressure * average_fac; strength += pta->strength * average_fac; } if (ptb) { - copy_v2_v2(b, &ptb->x); + copy_v2_v2(b, &ptb->m_xy); madd_v2_v2fl(sco, b, average_fac); pressure += ptb->pressure * average_fac; strength += ptb->strength * average_fac; } if (ptc) { - copy_v2_v2(c, &ptc->x); + copy_v2_v2(c, ptc->m_xy); madd_v2_v2fl(sco, c, average_fac); pressure += ptc->pressure * average_fac; strength += ptc->strength * average_fac; } if (ptd) { - copy_v2_v2(d, &ptd->x); + copy_v2_v2(d, ptd->m_xy); madd_v2_v2fl(sco, d, average_fac); pressure += ptd->pressure * average_fac; strength += ptd->strength * average_fac; @@ -609,7 +607,7 @@ static void gpencil_smooth_buffer(tGPsdata *p, float inf, int idx) * for Guide mode. */ if (!guide->use_guide) { interp_v2_v2v2(c, c, sco, inf); - copy_v2_v2(&ptc->x, c); + copy_v2_v2(ptc->m_xy, c); } /* Interpolate pressure. */ ptc->pressure = interpf(ptc->pressure, pressure, inf); @@ -646,37 +644,37 @@ static void gpencil_smooth_segment(bGPdata *gpd, const float inf, int from_idx, /* Compute smoothed coordinate by taking the ones nearby */ if (pta) { - madd_v2_v2fl(sco, &pta->x, average_fac); + madd_v2_v2fl(sco, pta->m_xy, average_fac); pressure += pta->pressure * average_fac; strength += pta->strength * average_fac; } else { - madd_v2_v2fl(sco, &ptc->x, average_fac); + madd_v2_v2fl(sco, ptc->m_xy, average_fac); pressure += ptc->pressure * average_fac; strength += ptc->strength * average_fac; } if (ptb) { - madd_v2_v2fl(sco, &ptb->x, average_fac); + madd_v2_v2fl(sco, ptb->m_xy, average_fac); pressure += ptb->pressure * average_fac; strength += ptb->strength * average_fac; } else { - madd_v2_v2fl(sco, &ptc->x, average_fac); + madd_v2_v2fl(sco, ptc->m_xy, average_fac); pressure += ptc->pressure * average_fac; strength += ptc->strength * average_fac; } - madd_v2_v2fl(sco, &ptc->x, average_fac); + madd_v2_v2fl(sco, ptc->m_xy, average_fac); pressure += ptc->pressure * average_fac; strength += ptc->strength * average_fac; - madd_v2_v2fl(sco, &ptd->x, average_fac); + madd_v2_v2fl(sco, ptd->m_xy, average_fac); pressure += ptd->pressure * average_fac; strength += ptd->strength * average_fac; /* Based on influence factor, blend between original and optimal smoothed coordinate. */ - interp_v2_v2v2(&ptc->x, &ptc->x, sco, inf); + interp_v2_v2v2(ptc->m_xy, ptc->m_xy, sco, inf); /* Interpolate pressure. */ ptc->pressure = interpf(ptc->pressure, pressure, inf); @@ -738,7 +736,7 @@ static void gpencil_apply_randomness(tGPsdata *p, /* Apply randomness to uv texture rotation. */ if ((brush_settings->uv_random > 0.0f) && (uv)) { if ((brush_settings->flag2 & GP_BRUSH_USE_UV_AT_STROKE) == 0) { - float rand = BLI_hash_int_01(BLI_hash_int_2d((int)pt->x, gpd->runtime.sbuffer_used)) * 2.0f - + float rand = BLI_hash_int_01(BLI_hash_int_2d((int)pt->m_xy[0], gpd->runtime.sbuffer_used)) * 2.0f - 1.0f; value = rand * M_PI_2 * brush_settings->uv_random; } @@ -778,7 +776,7 @@ static short gpencil_stroke_addpoint(tGPsdata *p, pt = (tGPspoint *)(gpd->runtime.sbuffer); /* store settings */ - copy_v2_v2(&pt->x, mval); + copy_v2_v2(pt->m_xy, mval); /* T44932 - Pressure vals are unreliable, so ignore for now */ pt->pressure = 1.0f; pt->strength = 1.0f; @@ -794,7 +792,7 @@ static short gpencil_stroke_addpoint(tGPsdata *p, pt = ((tGPspoint *)(gpd->runtime.sbuffer) + 1); /* store settings */ - copy_v2_v2(&pt->x, mval); + copy_v2_v2(pt->m_xy, mval); /* T44932 - Pressure vals are unreliable, so ignore for now */ pt->pressure = 1.0f; pt->strength = 1.0f; @@ -825,7 +823,7 @@ static short gpencil_stroke_addpoint(tGPsdata *p, pt->strength = brush_settings->draw_strength; pt->pressure = 1.0f; pt->uv_rot = 0.0f; - copy_v2_v2(&pt->x, mval); + copy_v2_v2(pt->m_xy, mval); /* pressure */ if (brush_settings->flag & GP_BRUSH_USE_PRESSURE) { @@ -1013,7 +1011,7 @@ static void gpencil_stroke_newfrombuffer(tGPsdata *p) ptc = gpd->runtime.sbuffer; /* convert screen-coordinates to appropriate coordinates (and store them) */ - gpencil_stroke_convertcoords(p, &ptc->x, &pt->x, NULL); + gpencil_stroke_convertcoords(p, ptc->m_xy, &pt->x, NULL); /* copy pressure and time */ pt->pressure = ptc->pressure; pt->strength = ptc->strength; @@ -1047,7 +1045,7 @@ static void gpencil_stroke_newfrombuffer(tGPsdata *p) ptc = ((tGPspoint *)gpd->runtime.sbuffer) + (gpd->runtime.sbuffer_used - 1); /* convert screen-coordinates to appropriate coordinates (and store them) */ - gpencil_stroke_convertcoords(p, &ptc->x, &pt->x, NULL); + gpencil_stroke_convertcoords(p, ptc->m_xy, &pt->x, NULL); /* copy pressure and time */ pt->pressure = ptc->pressure; pt->strength = ptc->strength; @@ -1100,7 +1098,7 @@ static void gpencil_stroke_newfrombuffer(tGPsdata *p) int i; for (i = 0, ptc = gpd->runtime.sbuffer; i < gpd->runtime.sbuffer_used; i++, ptc++, pt++) { - round_v2i_v2fl(mval_i, &ptc->x); + round_v2i_v2fl(mval_i, ptc->m_xy); if ((ED_view3d_depth_read_cached(depths, mval_i, depth_margin, depth_arr + i) == 0) && (i && (ED_view3d_depth_read_cached_seg( @@ -1171,7 +1169,7 @@ static void gpencil_stroke_newfrombuffer(tGPsdata *p) for (i = 0, ptc = gpd->runtime.sbuffer; i < gpd->runtime.sbuffer_used && ptc; i++, ptc++, pt++) { /* convert screen-coordinates to appropriate coordinates (and store them) */ - gpencil_stroke_convertcoords(p, &ptc->x, &pt->x, depth_arr ? depth_arr + i : NULL); + gpencil_stroke_convertcoords(p, ptc->m_xy, &pt->x, depth_arr ? depth_arr + i : NULL); /* copy pressure and time */ pt->pressure = ptc->pressure; @@ -2798,14 +2796,14 @@ static void gpencil_draw_apply(bContext *C, wmOperator *op, tGPsdata *p, Depsgra pt = (tGPspoint *)gpd->runtime.sbuffer + gpd->runtime.sbuffer_used - 1; if (p->paintmode != GP_PAINTMODE_ERASER) { - ED_gpencil_toggle_brush_cursor(C, true, &pt->x); + ED_gpencil_toggle_brush_cursor(C, true, pt->m_xy); } } else if ((p->brush->gpencil_settings->flag & GP_BRUSH_STABILIZE_MOUSE_TEMP) && (gpd->runtime.sbuffer_used > 0)) { pt = (tGPspoint *)gpd->runtime.sbuffer + gpd->runtime.sbuffer_used - 1; if (p->paintmode != GP_PAINTMODE_ERASER) { - ED_gpencil_toggle_brush_cursor(C, true, &pt->x); + ED_gpencil_toggle_brush_cursor(C, true, pt->m_xy); } } } @@ -3303,8 +3301,7 @@ static void gpencil_brush_angle_segment(tGPsdata *p, tGPspoint *pt_prev, tGPspoi /* angle vector of the brush with full thickness */ const float v0[2] = {cos(angle), sin(angle)}; - mvec[0] = pt->x - pt_prev->x; - mvec[1] = pt->y - pt_prev->y; + sub_v2_v2v2(mvec, pt->m_xy, pt_prev->m_xy); normalize_v2(mvec); fac = 1.0f - fabs(dot_v2v2(v0, mvec)); /* 0.0 to 1.0 */ /* interpolate with previous point for smoother transitions */ @@ -3355,11 +3352,11 @@ static void gpencil_add_arc_points(tGPsdata *p, const float mval[2], int segment * for arc curve. */ float v_prev[2], v_cur[2], v_half[2]; - sub_v2_v2v2(v_cur, mval, &pt_prev->x); + sub_v2_v2v2(v_cur, mval, pt_prev->m_xy); - sub_v2_v2v2(v_prev, &pt_prev->x, &pt_before->x); - interp_v2_v2v2(v_half, &pt_prev->x, mval, 0.5f); - sub_v2_v2(v_half, &pt_prev->x); + sub_v2_v2v2(v_prev, pt_prev->m_xy, pt_before->m_xy); + interp_v2_v2v2(v_half, pt_prev->m_xy, mval, 0.5f); + sub_v2_v2(v_half, pt_prev->m_xy); /* If angle is too sharp undo all changes and return. */ const float min_angle = DEG2RADF(120.0f); @@ -3378,14 +3375,14 @@ static void gpencil_add_arc_points(tGPsdata *p, const float mval[2], int segment /* Calc the position of the control point. */ float ctl[2]; - add_v2_v2v2(ctl, &pt_prev->x, v_prev); + add_v2_v2v2(ctl, pt_prev->m_xy, v_prev); float step = M_PI_2 / (float)(segments + 1); float a = step; float midpoint[2], start[2], end[2], cp1[2], corner[2]; - mid_v2_v2v2(midpoint, &pt_prev->x, mval); - copy_v2_v2(start, &pt_prev->x); + mid_v2_v2v2(midpoint, pt_prev->m_xy, mval); + copy_v2_v2(start, pt_prev->m_xy); copy_v2_v2(end, mval); copy_v2_v2(cp1, ctl); @@ -3396,8 +3393,8 @@ static void gpencil_add_arc_points(tGPsdata *p, const float mval[2], int segment tGPspoint *pt_step = pt_prev; for (int i = 0; i < segments; i++) { pt = &points[idx_prev + i - 1]; - pt->x = corner[0] + (end[0] - corner[0]) * sinf(a) + (start[0] - corner[0]) * cosf(a); - pt->y = corner[1] + (end[1] - corner[1]) * sinf(a) + (start[1] - corner[1]) * cosf(a); + pt->m_xy[0] = corner[0] + (end[0] - corner[0]) * sinf(a) + (start[0] - corner[0]) * cosf(a); + pt->m_xy[1] = corner[1] + (end[1] - corner[1]) * sinf(a) + (start[1] - corner[1]) * cosf(a); /* Set pressure and strength equals to previous. It will be smoothed later. */ pt->pressure = pt_prev->pressure; @@ -3460,8 +3457,8 @@ static void gpencil_add_guide_points(const tGPsdata *p, for (int i = 0; i < segments; i++) { pt = &points[idx_prev + i - 1]; - gpencil_rotate_v2_v2v2fl(&pt->x, start, p->guide.origin, -a); - gpencil_snap_to_guide(p, guide, &pt->x); + gpencil_rotate_v2_v2v2fl(pt->m_xy, start, p->guide.origin, -a); + gpencil_snap_to_guide(p, guide, pt->m_xy); a += step; /* Set pressure and strength equals to previous. It will be smoothed later. */ @@ -3477,8 +3474,8 @@ static void gpencil_add_guide_points(const tGPsdata *p, for (int i = 0; i < segments; i++) { pt = &points[idx_prev + i - 1]; - interp_v2_v2v2(&pt->x, start, end, a); - gpencil_snap_to_guide(p, guide, &pt->x); + interp_v2_v2v2(pt->m_xy, start, end, a); + gpencil_snap_to_guide(p, guide, pt->m_xy); a += step; /* Set pressure and strength equals to previous. It will be smoothed later. */ diff --git a/source/blender/editors/gpencil/gpencil_primitive.c b/source/blender/editors/gpencil/gpencil_primitive.c index 4937d09fabc..2715491414a 100644 --- a/source/blender/editors/gpencil/gpencil_primitive.c +++ b/source/blender/editors/gpencil/gpencil_primitive.c @@ -541,7 +541,7 @@ static void gpencil_primitive_rectangle(tGPDprimitive *tgpi, tGPspoint *points2D if (tgpi->tot_edges == 1) { for (int j = 0; j < 4; j++) { tGPspoint *p2d = &points2D[j]; - copy_v2_v2(&p2d->x, coords[j]); + copy_v2_v2(p2d->m_xy, coords[j]); } } else { @@ -551,7 +551,7 @@ static void gpencil_primitive_rectangle(tGPDprimitive *tgpi, tGPspoint *points2D float a = 0.0f; for (int k = 0; k < tgpi->tot_edges; k++) { tGPspoint *p2d = &points2D[i]; - interp_v2_v2v2(&p2d->x, coords[j], coords[j + 1], a); + interp_v2_v2v2(p2d->m_xy, coords[j], coords[j + 1], a); a += step; i++; } @@ -582,7 +582,7 @@ static void gpencil_primitive_line(tGPDprimitive *tgpi, tGPspoint *points2D, boo for (int i = tgpi->tot_stored_edges; i < totpoints; i++) { tGPspoint *p2d = &points2D[i]; - interp_v2_v2v2(&p2d->x, tgpi->start, tgpi->end, a); + interp_v2_v2v2(p2d->m_xy, tgpi->start, tgpi->end, a); a += step; } @@ -628,8 +628,8 @@ static void gpencil_primitive_arc(tGPDprimitive *tgpi, tGPspoint *points2D) for (int i = tgpi->tot_stored_edges; i < totpoints; i++) { tGPspoint *p2d = &points2D[i]; - p2d->x = corner[0] + (end[0] - corner[0]) * sinf(a) + (start[0] - corner[0]) * cosf(a); - p2d->y = corner[1] + (end[1] - corner[1]) * sinf(a) + (start[1] - corner[1]) * cosf(a); + p2d->m_xy[0] = corner[0] + (end[0] - corner[0]) * sinf(a) + (start[0] - corner[0]) * cosf(a); + p2d->m_xy[1] = corner[1] + (end[1] - corner[1]) * sinf(a) + (start[1] - corner[1]) * cosf(a); a += step; } float color[4]; @@ -664,7 +664,7 @@ static void gpencil_primitive_bezier(tGPDprimitive *tgpi, tGPspoint *points2D) for (int i = tgpi->tot_stored_edges; i < totpoints; i++) { tGPspoint *p2d = &points2D[i]; - interp_v2_v2v2v2v2_cubic(&p2d->x, bcp1, bcp2, bcp3, bcp4, a); + interp_v2_v2v2v2v2_cubic(p2d->m_xy, bcp1, bcp2, bcp3, bcp4, a); a += step; } float color[4]; @@ -698,8 +698,8 @@ static void gpencil_primitive_circle(tGPDprimitive *tgpi, tGPspoint *points2D) for (int i = tgpi->tot_stored_edges; i < totpoints; i++) { tGPspoint *p2d = &points2D[i]; - p2d->x = (center[0] + cosf(a) * radius[0]); - p2d->y = (center[1] + sinf(a) * radius[1]); + p2d->m_xy[0] = (center[0] + cosf(a) * radius[0]); + p2d->m_xy[1] = (center[1] + sinf(a) * radius[1]); a += step; } float color[4]; @@ -801,7 +801,7 @@ static void gpencil_primitive_update_strokes(bContext *C, tGPDprimitive *tgpi) const ViewDepths *depths = tgpi->depths; tGPspoint *ptc = &points2D[0]; for (int i = 0; i < gps->totpoints; i++, ptc++) { - round_v2i_v2fl(mval_i, &ptc->x); + round_v2i_v2fl(mval_i, ptc->m_xy); if ((ED_view3d_depth_read_cached(depths, mval_i, depth_margin, depth_arr + i) == 0) && (i && (ED_view3d_depth_read_cached_seg( depths, mval_i, mval_prev, depth_margin + 1, depth_arr + i) == 0))) { @@ -894,7 +894,7 @@ static void gpencil_primitive_update_strokes(bContext *C, tGPDprimitive *tgpi) /* Store original points */ float tmp_xyp[2]; - copy_v2_v2(tmp_xyp, &p2d->x); + copy_v2_v2(tmp_xyp, p2d->m_xy); /* calc pressure */ float curve_pressure = 1.0; @@ -926,8 +926,7 @@ static void gpencil_primitive_update_strokes(bContext *C, tGPDprimitive *tgpi) /* vector */ float mvec[2], svec[2]; if (i > 0) { - mvec[0] = (p2d->x - (p2d - 1)->x); - mvec[1] = (p2d->y - (p2d - 1)->y); + sub_v2_v2v2(mvec, p2d->m_xy, (p2d - 1)->m_xy); normalize_v2(mvec); } else { @@ -942,7 +941,7 @@ static void gpencil_primitive_update_strokes(bContext *C, tGPDprimitive *tgpi) else { mul_v2_fl(svec, fac); } - add_v2_v2(&p2d->x, svec); + add_v2_v2(p2d->m_xy, svec); } /* color strength */ @@ -992,7 +991,7 @@ static void gpencil_primitive_update_strokes(bContext *C, tGPDprimitive *tgpi) } } - copy_v2_v2(&tpt->x, &p2d->x); + copy_v2_v2(tpt->m_xy, p2d->m_xy); tpt->pressure = pressure; tpt->strength = strength; @@ -1064,7 +1063,7 @@ static void gpencil_primitive_update_strokes(bContext *C, tGPDprimitive *tgpi) } /* Restore original points */ - copy_v2_v2(&p2d->x, tmp_xyp); + copy_v2_v2(p2d->m_xy, tmp_xyp); } /* store cps and convert coords */ @@ -1617,7 +1616,7 @@ static void gpencil_primitive_move(tGPDprimitive *tgpi, bool reset) for (int i = 0; i < gps->totpoints; i++) { tGPspoint *p2d = &points2D[i]; - add_v2_v2(&p2d->x, move); + add_v2_v2(p2d->m_xy, move); } add_v2_v2(tgpi->start, move); diff --git a/source/blender/editors/gpencil/gpencil_utils.c b/source/blender/editors/gpencil/gpencil_utils.c index f082af979a1..81a844cf6e1 100644 --- a/source/blender/editors/gpencil/gpencil_utils.c +++ b/source/blender/editors/gpencil/gpencil_utils.c @@ -870,7 +870,7 @@ void gpencil_stroke_convertcoords_tpoint(Scene *scene, } int mval_i[2]; - round_v2i_v2fl(mval_i, &point2D->x); + round_v2i_v2fl(mval_i, point2D->m_xy); if ((depth != NULL) && (ED_view3d_autodist_simple(region, mval_i, r_out, 0, depth))) { /* projecting onto 3D-Geometry @@ -878,7 +878,7 @@ void gpencil_stroke_convertcoords_tpoint(Scene *scene, */ } else { - float mval_f[2] = {point2D->x, point2D->y}; + float mval_f[2] = {UNPACK2(point2D->m_xy)}; float mval_prj[2]; float rvec[3], dvec[3]; float zfac; @@ -2020,7 +2020,7 @@ static void gpencil_stroke_convertcoords(ARegion *region, const float origin[3], float out[3]) { - float mval_f[2] = {(float)point2D->x, (float)point2D->y}; + float mval_f[2] = {UNPACK2(point2D->m_xy)}; float mval_prj[2]; float rvec[3], dvec[3]; float zfac; @@ -2808,8 +2808,8 @@ static void gpencil_sbuffer_vertex_color_random( if (brush_settings->flag & GP_BRUSH_GROUP_RANDOM) { int seed = ((uint)(ceil(PIL_check_seconds_timer())) + 1) % 128; - int ix = (int)(tpt->x * seed); - int iy = (int)(tpt->y * seed); + int ix = (int)(tpt->m_xy[0] * seed); + int iy = (int)(tpt->m_xy[1] * seed); int iz = ix + iy * seed; float hsv[3]; float factor_value[3]; diff --git a/source/blender/editors/include/ED_gpencil.h b/source/blender/editors/include/ED_gpencil.h index 99164bbe439..5e50a17e80a 100644 --- a/source/blender/editors/include/ED_gpencil.h +++ b/source/blender/editors/include/ED_gpencil.h @@ -94,7 +94,7 @@ typedef enum eGP_TargetObjectMode { */ typedef struct tGPspoint { /** Coordinates x and y of cursor (in relative to area). */ - float x, y; + float m_xy[2]; /** Pressure of tablet at this point. */ float pressure; /** Pressure of tablet at this point for alpha factor. */ -- cgit v1.2.3