Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Goudey <h.goudey@me.com>2022-03-11 23:55:42 +0300
committerHans Goudey <h.goudey@me.com>2022-03-11 23:55:42 +0300
commitdb7c4d7a1cf3a4aab7d40df9de5f3f3d33e88cb6 (patch)
treed1008b32109f94219bc12c6f40baab9aa0387896 /source/blender/blenkernel
parentbd9f94e91720e6d2ce5308344e83c5a787351669 (diff)
Cleanup: Use new enum for NURBS curve knots modes
Move the definition of the enum to `Curves` DNA, since the values will be saved in files, and ongoing development needs to use this.
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r--source/blender/blenkernel/BKE_spline.hh7
-rw-r--r--source/blender/blenkernel/intern/curve_eval.cc15
-rw-r--r--source/blender/blenkernel/intern/spline_nurbs.cc10
3 files changed, 11 insertions, 21 deletions
diff --git a/source/blender/blenkernel/BKE_spline.hh b/source/blender/blenkernel/BKE_spline.hh
index ed9b743b524..1e3134020c6 100644
--- a/source/blender/blenkernel/BKE_spline.hh
+++ b/source/blender/blenkernel/BKE_spline.hh
@@ -449,13 +449,6 @@ class BezierSpline final : public Spline {
*/
class NURBSpline final : public Spline {
public:
- enum class KnotsMode {
- Normal,
- EndPoint,
- Bezier,
- EndPointBezier,
- };
-
/** Method used to recalculate the knots vector when points are added or removed. */
KnotsMode knots_mode;
diff --git a/source/blender/blenkernel/intern/curve_eval.cc b/source/blender/blenkernel/intern/curve_eval.cc
index 59c2155255b..191a510947e 100644
--- a/source/blender/blenkernel/intern/curve_eval.cc
+++ b/source/blender/blenkernel/intern/curve_eval.cc
@@ -203,21 +203,21 @@ static Spline::NormalCalculationMode normal_mode_from_dna_curve(const int twist_
return Spline::NormalCalculationMode::Minimum;
}
-static NURBSpline::KnotsMode knots_mode_from_dna_nurb(const short flag)
+static KnotsMode knots_mode_from_dna_nurb(const short flag)
{
switch (flag & (CU_NURB_ENDPOINT | CU_NURB_BEZIER)) {
case CU_NURB_ENDPOINT:
- return NURBSpline::KnotsMode::EndPoint;
+ return NURBS_KNOT_MODE_ENDPOINT;
case CU_NURB_BEZIER:
- return NURBSpline::KnotsMode::Bezier;
+ return NURBS_KNOT_MODE_BEZIER;
case CU_NURB_ENDPOINT | CU_NURB_BEZIER:
- return NURBSpline::KnotsMode::EndPointBezier;
+ return NURBS_KNOT_MODE_ENDPOINT_BEZIER;
default:
- return NURBSpline::KnotsMode::Normal;
+ return NURBS_KNOT_MODE_NORMAL;
}
BLI_assert_unreachable();
- return NURBSpline::KnotsMode::Normal;
+ return NURBS_KNOT_MODE_NORMAL;
}
static SplinePtr spline_from_dna_bezier(const Nurb &nurb)
@@ -421,8 +421,7 @@ std::unique_ptr<CurveEval> curves_to_curve_eval(const Curves &curves)
nurb_spline->resize(point_range.size());
nurb_spline->weights().copy_from(nurbs_weights.slice(point_range));
nurb_spline->set_order(nurbs_orders[curve_index]);
- nurb_spline->knots_mode = static_cast<NURBSpline::KnotsMode>(
- nurbs_knots_modes[curve_index]);
+ nurb_spline->knots_mode = static_cast<KnotsMode>(nurbs_knots_modes[curve_index]);
spline = std::move(nurb_spline);
break;
diff --git a/source/blender/blenkernel/intern/spline_nurbs.cc b/source/blender/blenkernel/intern/spline_nurbs.cc
index 2146a4309ab..7dc5ac3ea12 100644
--- a/source/blender/blenkernel/intern/spline_nurbs.cc
+++ b/source/blender/blenkernel/intern/spline_nurbs.cc
@@ -142,8 +142,8 @@ bool NURBSpline::check_valid_size_and_order() const
return false;
}
- if (ELEM(this->knots_mode, KnotsMode::Bezier, KnotsMode::EndPointBezier)) {
- if (this->knots_mode == KnotsMode::Bezier && this->size() <= order_) {
+ if (ELEM(this->knots_mode, NURBS_KNOT_MODE_BEZIER, NURBS_KNOT_MODE_ENDPOINT_BEZIER)) {
+ if (this->knots_mode == NURBS_KNOT_MODE_BEZIER && this->size() <= order_) {
return false;
}
return (!is_cyclic_ || this->size() % (order_ - 1) == 0);
@@ -162,10 +162,8 @@ void NURBSpline::calculate_knots() const
{
const KnotsMode mode = this->knots_mode;
const int order = order_;
- const bool is_bezier = ELEM(
- mode, NURBSpline::KnotsMode::Bezier, NURBSpline::KnotsMode::EndPointBezier);
- const bool is_end_point = ELEM(
- mode, NURBSpline::KnotsMode::EndPoint, NURBSpline::KnotsMode::EndPointBezier);
+ const bool is_bezier = ELEM(mode, NURBS_KNOT_MODE_BEZIER, NURBS_KNOT_MODE_ENDPOINT_BEZIER);
+ const bool is_end_point = ELEM(mode, NURBS_KNOT_MODE_ENDPOINT, NURBS_KNOT_MODE_ENDPOINT_BEZIER);
/* Inner knots are always repeated once except on Bezier case. */
const int repeat_inner = is_bezier ? order - 1 : 1;
/* How many times to repeat 0.0 at the beginning of knot. */