[Bf-blender-cvs] [29951651489] master: Cleanup: simplify wrapping CurvesGeometry in C++
Jacques Lucke
noreply at git.blender.org
Tue Jan 31 18:46:08 CET 2023
Commit: 29951651489079da8d72782eb4f8b693d57896a8
Author: Jacques Lucke
Date: Tue Jan 31 18:45:34 2023 +0100
Branches: master
https://developer.blender.org/rB29951651489079da8d72782eb4f8b693d57896a8
Cleanup: simplify wrapping CurvesGeometry in C++
===================================================================
M source/blender/blenkernel/BKE_curves.hh
M source/blender/blenkernel/intern/attribute.cc
M source/blender/blenkernel/intern/crazyspace.cc
M source/blender/blenkernel/intern/curve_legacy_convert.cc
M source/blender/blenkernel/intern/curves.cc
M source/blender/blenkernel/intern/geometry_component_edit_data.cc
M source/blender/blenkernel/intern/geometry_fields.cc
M source/blender/blenkernel/intern/geometry_set.cc
M source/blender/blenkernel/intern/mesh_convert.cc
M source/blender/draw/engines/overlay/overlay_sculpt_curves.cc
M source/blender/draw/engines/overlay/overlay_viewer_attribute.cc
M source/blender/draw/intern/draw_cache_impl_curve.cc
M source/blender/draw/intern/draw_cache_impl_curves.cc
M source/blender/draw/intern/draw_curves.cc
M source/blender/editors/curves/intern/curves_data.cc
M source/blender/editors/curves/intern/curves_ops.cc
M source/blender/editors/curves/intern/curves_selection.cc
M source/blender/editors/curves/intern/curves_undo.cc
M source/blender/editors/object/object_add.cc
M source/blender/editors/object/object_modifier.cc
M source/blender/editors/object/object_transform.cc
M source/blender/editors/sculpt_paint/curves_sculpt_add.cc
M source/blender/editors/sculpt_paint/curves_sculpt_brush.cc
M source/blender/editors/sculpt_paint/curves_sculpt_comb.cc
M source/blender/editors/sculpt_paint/curves_sculpt_delete.cc
M source/blender/editors/sculpt_paint/curves_sculpt_density.cc
M source/blender/editors/sculpt_paint/curves_sculpt_grow_shrink.cc
M source/blender/editors/sculpt_paint/curves_sculpt_ops.cc
M source/blender/editors/sculpt_paint/curves_sculpt_pinch.cc
M source/blender/editors/sculpt_paint/curves_sculpt_puff.cc
M source/blender/editors/sculpt_paint/curves_sculpt_selection.cc
M source/blender/editors/sculpt_paint/curves_sculpt_selection_paint.cc
M source/blender/editors/sculpt_paint/curves_sculpt_slide.cc
M source/blender/editors/sculpt_paint/curves_sculpt_smooth.cc
M source/blender/editors/sculpt_paint/curves_sculpt_snake_hook.cc
M source/blender/editors/transform/transform_convert_curves.cc
M source/blender/geometry/intern/realize_instances.cc
M source/blender/makesdna/DNA_curves_types.h
M source/blender/nodes/geometry/nodes/node_geo_convex_hull.cc
M source/blender/nodes/geometry/nodes/node_geo_curve_fill.cc
M source/blender/nodes/geometry/nodes/node_geo_curve_fillet.cc
M source/blender/nodes/geometry/nodes/node_geo_curve_length.cc
M source/blender/nodes/geometry/nodes/node_geo_curve_primitive_arc.cc
M source/blender/nodes/geometry/nodes/node_geo_curve_primitive_bezier_segment.cc
M source/blender/nodes/geometry/nodes/node_geo_curve_primitive_circle.cc
M source/blender/nodes/geometry/nodes/node_geo_curve_primitive_line.cc
M source/blender/nodes/geometry/nodes/node_geo_curve_primitive_quadratic_bezier.cc
M source/blender/nodes/geometry/nodes/node_geo_curve_primitive_quadrilateral.cc
M source/blender/nodes/geometry/nodes/node_geo_curve_primitive_spiral.cc
M source/blender/nodes/geometry/nodes/node_geo_curve_primitive_star.cc
M source/blender/nodes/geometry/nodes/node_geo_curve_resample.cc
M source/blender/nodes/geometry/nodes/node_geo_curve_reverse.cc
M source/blender/nodes/geometry/nodes/node_geo_curve_sample.cc
M source/blender/nodes/geometry/nodes/node_geo_curve_set_handle_type.cc
M source/blender/nodes/geometry/nodes/node_geo_curve_spline_type.cc
M source/blender/nodes/geometry/nodes/node_geo_curve_subdivide.cc
M source/blender/nodes/geometry/nodes/node_geo_curve_to_mesh.cc
M source/blender/nodes/geometry/nodes/node_geo_curve_to_points.cc
M source/blender/nodes/geometry/nodes/node_geo_curve_trim.cc
M source/blender/nodes/geometry/nodes/node_geo_deform_curves_on_surface.cc
M source/blender/nodes/geometry/nodes/node_geo_delete_geometry.cc
M source/blender/nodes/geometry/nodes/node_geo_duplicate_elements.cc
M source/blender/nodes/geometry/nodes/node_geo_interpolate_curves.cc
M source/blender/nodes/geometry/nodes/node_geo_set_curve_handles.cc
M source/blender/nodes/geometry/nodes/node_geo_set_curve_normal.cc
M source/blender/nodes/geometry/nodes/node_geo_set_curve_radius.cc
M source/blender/nodes/geometry/nodes/node_geo_set_curve_tilt.cc
M source/blender/nodes/geometry/nodes/node_geo_set_position.cc
M source/blender/nodes/geometry/nodes/node_geo_set_spline_cyclic.cc
M source/blender/nodes/geometry/nodes/node_geo_set_spline_resolution.cc
M source/blender/nodes/geometry/nodes/node_geo_string_to_curves.cc
M source/blender/nodes/geometry/nodes/node_geo_transform_geometry.cc
===================================================================
diff --git a/source/blender/blenkernel/BKE_curves.hh b/source/blender/blenkernel/BKE_curves.hh
index e22348106db..8e4a83a1135 100644
--- a/source/blender/blenkernel/BKE_curves.hh
+++ b/source/blender/blenkernel/BKE_curves.hh
@@ -128,17 +128,6 @@ class CurvesGeometry : public ::CurvesGeometry {
CurvesGeometry &operator=(CurvesGeometry &&other);
~CurvesGeometry();
- static CurvesGeometry &wrap(::CurvesGeometry &dna_struct)
- {
- CurvesGeometry *geometry = reinterpret_cast<CurvesGeometry *>(&dna_struct);
- return *geometry;
- }
- static const CurvesGeometry &wrap(const ::CurvesGeometry &dna_struct)
- {
- const CurvesGeometry *geometry = reinterpret_cast<const CurvesGeometry *>(&dna_struct);
- return *geometry;
- }
-
/* --------------------------------------------------------------------
* Accessors.
*/
@@ -408,6 +397,8 @@ class CurvesGeometry : public ::CurvesGeometry {
}
};
+static_assert(sizeof(blender::bke::CurvesGeometry) == sizeof(::CurvesGeometry));
+
/**
* Used to propagate deformation data through modifier evaluation so that sculpt tools can work on
* evaluated data.
@@ -966,3 +957,12 @@ struct CurvesSurfaceTransforms {
};
} // namespace blender::bke
+
+inline blender::bke::CurvesGeometry &CurvesGeometry::wrap()
+{
+ return *reinterpret_cast<blender::bke::CurvesGeometry *>(this);
+}
+inline const blender::bke::CurvesGeometry &CurvesGeometry::wrap() const
+{
+ return *reinterpret_cast<const blender::bke::CurvesGeometry *>(this);
+}
diff --git a/source/blender/blenkernel/intern/attribute.cc b/source/blender/blenkernel/intern/attribute.cc
index 4b090e710f5..32d12e1af17 100644
--- a/source/blender/blenkernel/intern/attribute.cc
+++ b/source/blender/blenkernel/intern/attribute.cc
@@ -112,7 +112,7 @@ static std::optional<blender::bke::MutableAttributeAccessor> get_attribute_acces
}
case ID_CV: {
Curves &curves_id = reinterpret_cast<Curves &>(id);
- CurvesGeometry &curves = CurvesGeometry::wrap(curves_id.geometry);
+ CurvesGeometry &curves = curves_id.geometry.wrap();
return curves.attributes_for_write();
}
default: {
diff --git a/source/blender/blenkernel/intern/crazyspace.cc b/source/blender/blenkernel/intern/crazyspace.cc
index dd58f137abe..906d4c82623 100644
--- a/source/blender/blenkernel/intern/crazyspace.cc
+++ b/source/blender/blenkernel/intern/crazyspace.cc
@@ -601,7 +601,7 @@ GeometryDeformation get_evaluated_curves_deformation(const Depsgraph &depsgraph,
{
BLI_assert(ob_orig.type == OB_CURVES);
const Curves &curves_id_orig = *static_cast<const Curves *>(ob_orig.data);
- const CurvesGeometry &curves_orig = CurvesGeometry::wrap(curves_id_orig.geometry);
+ const CurvesGeometry &curves_orig = curves_id_orig.geometry.wrap();
const int points_num = curves_orig.points_num();
GeometryDeformation deformation;
@@ -643,7 +643,7 @@ GeometryDeformation get_evaluated_curves_deformation(const Depsgraph &depsgraph,
if (curves_component_eval != nullptr) {
const Curves *curves_id_eval = curves_component_eval->get_for_read();
if (curves_id_eval != nullptr) {
- const CurvesGeometry &curves_eval = CurvesGeometry::wrap(curves_id_eval->geometry);
+ const CurvesGeometry &curves_eval = curves_id_eval->geometry.wrap();
if (curves_eval.points_num() == points_num) {
deformation.positions = curves_eval.positions();
}
diff --git a/source/blender/blenkernel/intern/curve_legacy_convert.cc b/source/blender/blenkernel/intern/curve_legacy_convert.cc
index f82d931114e..c8ae56220c3 100644
--- a/source/blender/blenkernel/intern/curve_legacy_convert.cc
+++ b/source/blender/blenkernel/intern/curve_legacy_convert.cc
@@ -82,7 +82,7 @@ Curves *curve_legacy_to_curves(const Curve &curve_legacy, const ListBase &nurbs_
const Vector<const Nurb *> src_curves(nurbs_list);
Curves *curves_id = curves_new_nomain(0, src_curves.size());
- CurvesGeometry &curves = CurvesGeometry::wrap(curves_id->geometry);
+ CurvesGeometry &curves = curves_id->geometry.wrap();
MutableAttributeAccessor curves_attributes = curves.attributes_for_write();
MutableSpan<int8_t> types = curves.curve_types_for_write();
diff --git a/source/blender/blenkernel/intern/curves.cc b/source/blender/blenkernel/intern/curves.cc
index 0bdddc9c389..a7ac35ce56b 100644
--- a/source/blender/blenkernel/intern/curves.cc
+++ b/source/blender/blenkernel/intern/curves.cc
@@ -70,8 +70,8 @@ static void curves_copy_data(Main * /*bmain*/, ID *id_dst, const ID *id_src, con
const Curves *curves_src = (const Curves *)id_src;
curves_dst->mat = static_cast<Material **>(MEM_dupallocN(curves_src->mat));
- const bke::CurvesGeometry &src = bke::CurvesGeometry::wrap(curves_src->geometry);
- bke::CurvesGeometry &dst = bke::CurvesGeometry::wrap(curves_dst->geometry);
+ const bke::CurvesGeometry &src = curves_src->geometry.wrap();
+ bke::CurvesGeometry &dst = curves_dst->geometry.wrap();
/* We need special handling here because the generic ID management code has already done a
* shallow copy from the source to the destination, and because the copy-on-write functionality
@@ -103,7 +103,7 @@ static void curves_free_data(ID *id)
Curves *curves = (Curves *)id;
BKE_animdata_free(&curves->id, false);
- blender::bke::CurvesGeometry::wrap(curves->geometry).~CurvesGeometry();
+ curves->geometry.wrap().~CurvesGeometry();
BKE_curves_batch_cache_free(curves);
@@ -174,7 +174,7 @@ static void curves_blend_read_data(BlendDataReader *reader, ID *id)
curves->geometry.runtime = MEM_new<blender::bke::CurvesGeometryRuntime>(__func__);
/* Recalculate curve type count cache that isn't saved in files. */
- blender::bke::CurvesGeometry::wrap(curves->geometry).update_curve_types();
+ curves->geometry.wrap().update_curve_types();
/* Materials */
BLO_read_pointer_array(reader, (void **)&curves->mat);
@@ -247,8 +247,7 @@ BoundBox *BKE_curves_boundbox_get(Object *ob)
if (ob->runtime.bb == nullptr) {
ob->runtime.bb = MEM_cnew<BoundBox>(__func__);
- const blender::bke::CurvesGeometry &curves = blender::bke::CurvesGeometry::wrap(
- curves_id->geometry);
+ const blender::bke::CurvesGeometry &curves = curves_id->geometry.wrap();
float3 min(FLT_MAX);
float3 max(-FLT_MAX);
@@ -372,7 +371,7 @@ Curves *curves_new_nomain(const int points_num, const int curves_num)
BLI_assert(points_num >= 0);
BLI_assert(curves_num >= 0);
Curves *curves_id = static_cast<Curves *>(BKE_id_new_nomain(ID_CV, nullptr));
- CurvesGeometry &curves = CurvesGeometry::wrap(curves_id->geometry);
+ CurvesGeometry &curves = curves_id->geometry.wrap();
curves.resize(points_num, curves_num);
return curves_id;
}
@@ -380,7 +379,7 @@ Curves *curves_new_nomain(const int points_num, const int curves_num)
Curves *curves_new_nomain_single(const int points_num, const CurveType type)
{
Curves *curves_id = curves_new_nomain(points_num, 1);
- CurvesGeometry &curves = CurvesGeometry::wrap(curves_id->geometry);
+ CurvesGeometry &curves = curves_id->geometry.wrap();
curves.offsets_for_write().last() = points_num;
curves.fill_curve_types(type);
return curves_id;
@@ -389,7 +388,7 @@ Curves *curves_new_nomain_single(const int points_num, const CurveType type)
Curves *curves_new_nomain(CurvesGeometry curves)
{
Curves *curves_id = static_cast<Curves *>(BKE_id_new_nomain(ID_CV, nullptr));
- bke::CurvesGeometry::wrap(curves_id->geometry) = std::move(curves);
+ curves_id->geometry.wrap() = std::move(curves);
return curves_id;
}
diff --git a/source/blender/blenkernel/intern/geometry_component_edit_data.cc b/source/blender/blenkernel/intern/geometry_component_edit_data.cc
index 2c00de3254f..9a5cd1aa904 100644
--- a/source/blender/blenkernel/intern/geometry_component_edit_data.cc
+++ b/source/blender/blenkernel/intern/geometry_component_edit_data.cc
@@ -48,7 +48,7 @@ void GeometryComponentEditData::remember_deformed_curve_positions_if_necessary(
if (curves_id == nullptr) {
return;
}
- const bke::CurvesGeometry &curves = bke::CurvesGeometry::wrap(curves_id->geometry);
+ const bke::CurvesGeometry &curves = curves_id->geometry.wrap();
const int points_num = curves.points_num();
if (points_num != edit_component.curves_edit_hints_->curves_id_orig.geometry.point_num) {
return;
diff --git a/source/blender/blenkernel/intern/geometry_fields.cc b/source/blender/blenkernel/intern/geometry_fields.cc
index f4f4d0d8719..fd07f7eceab 100644
--- a/source/blender/blenkernel/intern/geometry_fields.cc
+++ b/source/blender/blenkernel/intern/geometry_fields.cc
@@ -55,7 +55,7 @@ GeometryFieldContext::GeometryFieldContext(const GeometryComponent &component,
case GEO_COMPONENT_TYPE_CURVE: {
const CurveComponent &curve_component = static_cast<const CurveComponent &>(component);
const Curves *curves = curve_component.get_for_read();
- geometry_ = curves ? &CurvesGeometry::wrap(curves->geometry) : nullptr;
+ geometry_ = curves ? &curves->geometry.wrap() : nullptr;
break;
}
case GEO_COMPONENT_TYPE_POINT_CLOUD: {
@@ -560,8 +560,7 @@ std::optional<eAttrDomain> try_detect_field_domain(const GeometryComponent &comp
}
else if (const auto *curves_field_input = dynamic_cast<const CurvesFieldInput *>(
&field_input)) {
- if (!handle_domain(
- curves_field_input->preferred_domain(CurvesGeometry::wrap(curves->geometry)))) {
+ if (!handle_domain(curves_field_input->preferred_domain(curves->geometry.wrap()))) {
return std::nullopt;
}
}
diff --git a/source/blender/blenkernel/intern/geometry_set.cc b/source/blender/blenkernel/intern/geometry_set.cc
index 8fff80e709f..2417f8e2f73 100644
--- a/source/blender/blenkernel/intern/geometry_set.cc
+++ b/source/blender/blenkernel/intern/geometry_set.cc
@@ -227,7 +227,7 @@ bool GeometrySet::compute_boundbox_without_instances(float3 *r_min, float3 *r_ma
have_minmax |= BKE_volume_min_max(volume, *r_min, *r_max);
}
if (const Curves *curves_id = this->get_curves_for_read()) {
- const bke::CurvesGeometry &curves = bke::CurvesGeometry::wrap(curves_id->geometr
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list