From 47769b5f402503d602e532b9c4dfb89173e5fc06 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 30 Apr 2017 00:01:16 +1000 Subject: Curve Fitting: minor change to re-fitting method Avoid calculating a new split-index when re-fitting. While checking if a knot can be removed, the index with the highest error can be used as a candidate to replace the knot (in the case it can't be removed). --- source/blender/editors/curve/editcurve.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'source') diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c index 648fe930030..a69264cd012 100644 --- a/source/blender/editors/curve/editcurve.c +++ b/source/blender/editors/curve/editcurve.c @@ -5850,6 +5850,7 @@ static int curve_dissolve_exec(bContext *C, wmOperator *UNUSED(op)) BLI_assert(points_stride + dims == points + (points_len * dims)); float tan_l[3], tan_r[3], error_sq_dummy; + unsigned int error_index_dummy; sub_v3_v3v3(tan_l, bezt_prev->vec[1], bezt_prev->vec[2]); normalize_v3(tan_l); @@ -5860,7 +5861,7 @@ static int curve_dissolve_exec(bContext *C, wmOperator *UNUSED(op)) points, points_len, NULL, dims, FLT_EPSILON, tan_l, tan_r, bezt_prev->vec[2], bezt_next->vec[0], - &error_sq_dummy); + &error_sq_dummy, &error_index_dummy); if (!ELEM(bezt_prev->h2, HD_FREE, HD_ALIGN)) { bezt_prev->h2 = (bezt_prev->h2 == HD_VECT) ? HD_FREE : HD_ALIGN; -- cgit v1.2.3 From a1164eb3ddbdc9ad1c8393bcf125c289cbb0966c Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 30 Apr 2017 02:38:38 +1000 Subject: View3D: support both orbit select & depth When using both preferences, use cursor depth when nothings selected. --- source/blender/editors/space_view3d/view3d_edit.c | 36 +++++++++++------------ 1 file changed, 18 insertions(+), 18 deletions(-) (limited to 'source') diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index f712c790663..4e3f279e12e 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -700,22 +700,21 @@ static bool view3d_orbit_calc_center(bContext *C, float r_dyn_ofs[3]) } enum eViewOpsOrbit { - VIEWOPS_ORBIT_DEFAULT = 0, - VIEWOPS_ORBIT_SELECT = 1, - VIEWOPS_ORBIT_DEPTH = 2, + VIEWOPS_ORBIT_SELECT = (1 << 0), + VIEWOPS_ORBIT_DEPTH = (1 << 1), }; static enum eViewOpsOrbit viewops_orbit_mode_ex(bool use_select, bool use_depth) { + enum eViewOpsOrbit flag = 0; if (use_select) { - return VIEWOPS_ORBIT_SELECT; + flag |= VIEWOPS_ORBIT_SELECT; } - else if (use_depth) { - return VIEWOPS_ORBIT_DEPTH; - } - else { - return VIEWOPS_ORBIT_DEFAULT; + if (use_depth) { + flag |= VIEWOPS_ORBIT_DEPTH; } + + return flag; } static enum eViewOpsOrbit viewops_orbit_mode(void) @@ -736,7 +735,7 @@ static void viewops_data_create_ex( RegionView3D *rv3d = vod->rv3d; /* we need the depth info before changing any viewport options */ - if (orbit_mode == VIEWOPS_ORBIT_DEPTH) { + if (orbit_mode & VIEWOPS_ORBIT_DEPTH) { float fallback_depth_pt[3]; view3d_operator_needs_opengl(C); /* needed for zbuf drawing */ @@ -775,15 +774,16 @@ static void viewops_data_create_ex( vod->origkey = event->type; /* the key that triggered the operator. */ copy_v3_v3(vod->ofs, rv3d->ofs); - if (orbit_mode == VIEWOPS_ORBIT_SELECT) { - - vod->use_dyn_ofs = true; - - view3d_orbit_calc_center(C, vod->dyn_ofs); - - negate_v3(vod->dyn_ofs); + if (orbit_mode & VIEWOPS_ORBIT_SELECT) { + float ofs[3]; + if (view3d_orbit_calc_center(C, ofs) || (vod->use_dyn_ofs == false)) { + vod->use_dyn_ofs = true; + negate_v3_v3(vod->dyn_ofs, ofs); + orbit_mode &= ~VIEWOPS_ORBIT_DEPTH; + } } - else if (orbit_mode == VIEWOPS_ORBIT_DEPTH) { + + if (orbit_mode & VIEWOPS_ORBIT_DEPTH) { if (vod->use_dyn_ofs) { if (rv3d->is_persp) { float my_origin[3]; /* original G.vd->ofs */ -- cgit v1.2.3 From 0fbce637b3dba02bf1f496d0e902b317793915fc Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 30 Apr 2017 02:58:36 +1000 Subject: Cleanup: comment blocks --- source/blender/editors/gpencil/drawgpencil.c | 18 +++++++++--------- source/blender/editors/gpencil/gpencil_brush.c | 6 +++--- source/blender/editors/gpencil/gpencil_paint.c | 6 +++--- source/blender/editors/gpencil/gpencil_utils.c | 4 ++-- 4 files changed, 17 insertions(+), 17 deletions(-) (limited to 'source') diff --git a/source/blender/editors/gpencil/drawgpencil.c b/source/blender/editors/gpencil/drawgpencil.c index f091609da49..ecab37c729f 100644 --- a/source/blender/editors/gpencil/drawgpencil.c +++ b/source/blender/editors/gpencil/drawgpencil.c @@ -528,15 +528,15 @@ static void gp_draw_stroke_fill( } else { /* As an initial implementation, we use the OpenGL filled polygon drawing - * here since it's the easiest option to implement for this case. It does - * come with limitations (notably for concave shapes), though it shouldn't - * be much of an issue in most cases. - * - * We keep this legacy implementation around despite now having the high quality - * fills, as this is necessary for keeping everything working nicely for files - * created using old versions of Blender which may have depended on the artifacts - * the old fills created. - */ + * here since it's the easiest option to implement for this case. It does + * come with limitations (notably for concave shapes), though it shouldn't + * be much of an issue in most cases. + * + * We keep this legacy implementation around despite now having the high quality + * fills, as this is necessary for keeping everything working nicely for files + * created using old versions of Blender which may have depended on the artifacts + * the old fills created. + */ bGPDspoint *pt; glBegin(GL_POLYGON); diff --git a/source/blender/editors/gpencil/gpencil_brush.c b/source/blender/editors/gpencil/gpencil_brush.c index ec5a42c23a5..8ddf3a22517 100644 --- a/source/blender/editors/gpencil/gpencil_brush.c +++ b/source/blender/editors/gpencil/gpencil_brush.c @@ -297,9 +297,9 @@ static bool gp_brush_strength_apply( float inf; /* Compute strength of effect - * - We divide the strength by 10, so that users can set "sane" values. - * Otherwise, good default values are in the range of 0.093 - */ + * - We divide the strength by 10, so that users can set "sane" values. + * Otherwise, good default values are in the range of 0.093 + */ inf = gp_brush_influence_calc(gso, radius, co) / 10.0f; /* apply */ diff --git a/source/blender/editors/gpencil/gpencil_paint.c b/source/blender/editors/gpencil/gpencil_paint.c index d6e40377e63..162b9466225 100644 --- a/source/blender/editors/gpencil/gpencil_paint.c +++ b/source/blender/editors/gpencil/gpencil_paint.c @@ -1005,9 +1005,9 @@ static void gp_stroke_newfrombuffer(tGPsdata *p) BLI_strncpy(gps->colorname, palcolor->info, sizeof(gps->colorname)); /* add stroke to frame, usually on tail of the listbase, but if on back is enabled the stroke is added on listbase head - * because the drawing order is inverse and the head stroke is the first to draw. This is very useful for artist - * when drawing the background - */ + * because the drawing order is inverse and the head stroke is the first to draw. This is very useful for artist + * when drawing the background + */ if ((ts->gpencil_flags & GP_TOOL_FLAG_PAINT_ONBACK) && (p->paintmode != GP_PAINTMODE_DRAW_POLY)) { BLI_addhead(&p->gpf->strokes, gps); } diff --git a/source/blender/editors/gpencil/gpencil_utils.c b/source/blender/editors/gpencil/gpencil_utils.c index 76e85f20c36..2b662d04f03 100644 --- a/source/blender/editors/gpencil/gpencil_utils.c +++ b/source/blender/editors/gpencil/gpencil_utils.c @@ -830,8 +830,8 @@ bool gp_smooth_stroke_strength(bGPDstroke *gps, int i, float inf) ptc = &gps->points[after]; /* the optimal value is the corresponding to the interpolation of the strength - * at the distance of point b - */ + * at the distance of point b + */ const float fac = line_point_factor_v3(&ptb->x, &pta->x, &ptc->x); const float optimal = (1.0f - fac) * pta->strength + fac * ptc->strength; -- cgit v1.2.3