From f1c018a16280edbab32d183c5d55e651240838df Mon Sep 17 00:00:00 2001 From: Falk David Date: Mon, 13 Mar 2023 17:32:02 +0100 Subject: [PATCH 1/3] Refactor: Extract CurvesGeometry read/write function --- source/blender/blenkernel/BKE_curves.hh | 7 ++++ source/blender/blenkernel/intern/curves.cc | 25 ++------------- .../blenkernel/intern/curves_geometry.cc | 32 +++++++++++++++++++ 3 files changed, 41 insertions(+), 23 deletions(-) diff --git a/source/blender/blenkernel/BKE_curves.hh b/source/blender/blenkernel/BKE_curves.hh index c3ad7c027a1..83b9e3bfc5b 100644 --- a/source/blender/blenkernel/BKE_curves.hh +++ b/source/blender/blenkernel/BKE_curves.hh @@ -384,6 +384,13 @@ class CurvesGeometry : public ::CurvesGeometry { { return this->adapt_domain(GVArray(varray), from, to).typed(); } + + /* -------------------------------------------------------------------- + * File Read/Write. + */ + + void blend_read(BlendDataReader *reader); + void blend_write(BlendWriter *writer, ID *id); }; static_assert(sizeof(blender::bke::CurvesGeometry) == sizeof(::CurvesGeometry)); diff --git a/source/blender/blenkernel/intern/curves.cc b/source/blender/blenkernel/intern/curves.cc index 2ee37129b11..314c7892860 100644 --- a/source/blender/blenkernel/intern/curves.cc +++ b/source/blender/blenkernel/intern/curves.cc @@ -130,30 +130,12 @@ static void curves_blend_write(BlendWriter *writer, ID *id, const void *id_addre { Curves *curves = (Curves *)id; - Vector point_layers; - Vector curve_layers; - CustomData_blend_write_prepare(curves->geometry.point_data, point_layers); - CustomData_blend_write_prepare(curves->geometry.curve_data, curve_layers); - /* Write LibData */ BLO_write_id_struct(writer, Curves, id_address, &curves->id); BKE_id_blend_write(writer, &curves->id); /* Direct data */ - CustomData_blend_write(writer, - &curves->geometry.point_data, - point_layers, - curves->geometry.point_num, - CD_MASK_ALL, - &curves->id); - CustomData_blend_write(writer, - &curves->geometry.curve_data, - curve_layers, - curves->geometry.curve_num, - CD_MASK_ALL, - &curves->id); - - BLO_write_int32_array(writer, curves->geometry.curve_num + 1, curves->geometry.curve_offsets); + curves->geometry.wrap().blend_write(writer, &curves->id); BLO_write_string(writer, curves->surface_uv_map); @@ -170,10 +152,7 @@ static void curves_blend_read_data(BlendDataReader *reader, ID *id) BKE_animdata_blend_read_data(reader, curves->adt); /* Geometry */ - CustomData_blend_read(reader, &curves->geometry.point_data, curves->geometry.point_num); - CustomData_blend_read(reader, &curves->geometry.curve_data, curves->geometry.curve_num); - - BLO_read_int32_array(reader, curves->geometry.curve_num + 1, &curves->geometry.curve_offsets); + curves->geometry.wrap().blend_read(reader); BLO_read_data_address(reader, &curves->surface_uv_map); diff --git a/source/blender/blenkernel/intern/curves_geometry.cc b/source/blender/blenkernel/intern/curves_geometry.cc index be0af1eb8a9..287d590c790 100644 --- a/source/blender/blenkernel/intern/curves_geometry.cc +++ b/source/blender/blenkernel/intern/curves_geometry.cc @@ -17,11 +17,14 @@ #include "BLI_math_rotation_legacy.hh" #include "BLI_task.hh" +#include "BLO_read_write.h" + #include "DNA_curves_types.h" #include "BKE_attribute_math.hh" #include "BKE_curves.hh" #include "BKE_curves_utils.hh" +#include "BKE_customdata.h" namespace blender::bke { @@ -1572,4 +1575,33 @@ GVArray CurvesGeometry::adapt_domain(const GVArray &varray, /** \} */ +/* -------------------------------------------------------------------- */ +/** \name File reading/writing. + * \{ */ + +void CurvesGeometry::blend_read(BlendDataReader *reader) +{ + CustomData_blend_read(reader, &this->point_data, this->point_num); + CustomData_blend_read(reader, &this->curve_data, this->curve_num); + + BLO_read_int32_array(reader, this->curve_num + 1, &this->curve_offsets); +} + +void CurvesGeometry::blend_write(BlendWriter *writer, ID *id) +{ + Vector point_layers; + Vector curve_layers; + CustomData_blend_write_prepare(this->point_data, point_layers); + CustomData_blend_write_prepare(this->curve_data, curve_layers); + + CustomData_blend_write( + writer, &this->point_data, point_layers, this->point_num, CD_MASK_ALL, id); + CustomData_blend_write( + writer, &this->curve_data, curve_layers, this->curve_num, CD_MASK_ALL, id); + + BLO_write_int32_array(writer, this->curve_num + 1, this->curve_offsets); +} + +/** \} */ + } // namespace blender::bke -- 2.30.2 From 8a8305065a49896803f97b9f774db0faa9cb14a0 Mon Sep 17 00:00:00 2001 From: Falk David Date: Mon, 13 Mar 2023 18:03:19 +0100 Subject: [PATCH 2/3] Use references --- source/blender/blenkernel/BKE_curves.hh | 4 ++-- source/blender/blenkernel/intern/curves.cc | 4 ++-- .../blender/blenkernel/intern/curves_geometry.cc | 16 ++++++++-------- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/source/blender/blenkernel/BKE_curves.hh b/source/blender/blenkernel/BKE_curves.hh index 83b9e3bfc5b..dae5b505bcf 100644 --- a/source/blender/blenkernel/BKE_curves.hh +++ b/source/blender/blenkernel/BKE_curves.hh @@ -389,8 +389,8 @@ class CurvesGeometry : public ::CurvesGeometry { * File Read/Write. */ - void blend_read(BlendDataReader *reader); - void blend_write(BlendWriter *writer, ID *id); + void blend_read(BlendDataReader &reader); + void blend_write(BlendWriter &writer, ID *id); }; static_assert(sizeof(blender::bke::CurvesGeometry) == sizeof(::CurvesGeometry)); diff --git a/source/blender/blenkernel/intern/curves.cc b/source/blender/blenkernel/intern/curves.cc index 314c7892860..6f233398189 100644 --- a/source/blender/blenkernel/intern/curves.cc +++ b/source/blender/blenkernel/intern/curves.cc @@ -135,7 +135,7 @@ static void curves_blend_write(BlendWriter *writer, ID *id, const void *id_addre BKE_id_blend_write(writer, &curves->id); /* Direct data */ - curves->geometry.wrap().blend_write(writer, &curves->id); + curves->geometry.wrap().blend_write(*writer, &curves->id); BLO_write_string(writer, curves->surface_uv_map); @@ -152,7 +152,7 @@ static void curves_blend_read_data(BlendDataReader *reader, ID *id) BKE_animdata_blend_read_data(reader, curves->adt); /* Geometry */ - curves->geometry.wrap().blend_read(reader); + curves->geometry.wrap().blend_read(*reader); BLO_read_data_address(reader, &curves->surface_uv_map); diff --git a/source/blender/blenkernel/intern/curves_geometry.cc b/source/blender/blenkernel/intern/curves_geometry.cc index 287d590c790..064fc342dfb 100644 --- a/source/blender/blenkernel/intern/curves_geometry.cc +++ b/source/blender/blenkernel/intern/curves_geometry.cc @@ -1579,15 +1579,15 @@ GVArray CurvesGeometry::adapt_domain(const GVArray &varray, /** \name File reading/writing. * \{ */ -void CurvesGeometry::blend_read(BlendDataReader *reader) +void CurvesGeometry::blend_read(BlendDataReader &reader) { - CustomData_blend_read(reader, &this->point_data, this->point_num); - CustomData_blend_read(reader, &this->curve_data, this->curve_num); + CustomData_blend_read(&reader, &this->point_data, this->point_num); + CustomData_blend_read(&reader, &this->curve_data, this->curve_num); - BLO_read_int32_array(reader, this->curve_num + 1, &this->curve_offsets); + BLO_read_int32_array(&reader, this->curve_num + 1, &this->curve_offsets); } -void CurvesGeometry::blend_write(BlendWriter *writer, ID *id) +void CurvesGeometry::blend_write(BlendWriter &writer, ID *id) { Vector point_layers; Vector curve_layers; @@ -1595,11 +1595,11 @@ void CurvesGeometry::blend_write(BlendWriter *writer, ID *id) CustomData_blend_write_prepare(this->curve_data, curve_layers); CustomData_blend_write( - writer, &this->point_data, point_layers, this->point_num, CD_MASK_ALL, id); + &writer, &this->point_data, point_layers, this->point_num, CD_MASK_ALL, id); CustomData_blend_write( - writer, &this->curve_data, curve_layers, this->curve_num, CD_MASK_ALL, id); + &writer, &this->curve_data, curve_layers, this->curve_num, CD_MASK_ALL, id); - BLO_write_int32_array(writer, this->curve_num + 1, this->curve_offsets); + BLO_write_int32_array(&writer, this->curve_num + 1, this->curve_offsets); } /** \} */ -- 2.30.2 From 2976a75fe1e4b33e7d69825f8b3aa9a314a87cc6 Mon Sep 17 00:00:00 2001 From: Falk David Date: Mon, 13 Mar 2023 18:14:43 +0100 Subject: [PATCH 3/3] Use reference for ID --- source/blender/blenkernel/BKE_curves.hh | 2 +- source/blender/blenkernel/intern/curves.cc | 2 +- source/blender/blenkernel/intern/curves_geometry.cc | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/source/blender/blenkernel/BKE_curves.hh b/source/blender/blenkernel/BKE_curves.hh index dae5b505bcf..e4a5bf8b733 100644 --- a/source/blender/blenkernel/BKE_curves.hh +++ b/source/blender/blenkernel/BKE_curves.hh @@ -390,7 +390,7 @@ class CurvesGeometry : public ::CurvesGeometry { */ void blend_read(BlendDataReader &reader); - void blend_write(BlendWriter &writer, ID *id); + void blend_write(BlendWriter &writer, ID &id); }; static_assert(sizeof(blender::bke::CurvesGeometry) == sizeof(::CurvesGeometry)); diff --git a/source/blender/blenkernel/intern/curves.cc b/source/blender/blenkernel/intern/curves.cc index 6f233398189..0dbdbaf0a57 100644 --- a/source/blender/blenkernel/intern/curves.cc +++ b/source/blender/blenkernel/intern/curves.cc @@ -135,7 +135,7 @@ static void curves_blend_write(BlendWriter *writer, ID *id, const void *id_addre BKE_id_blend_write(writer, &curves->id); /* Direct data */ - curves->geometry.wrap().blend_write(*writer, &curves->id); + curves->geometry.wrap().blend_write(*writer, curves->id); BLO_write_string(writer, curves->surface_uv_map); diff --git a/source/blender/blenkernel/intern/curves_geometry.cc b/source/blender/blenkernel/intern/curves_geometry.cc index 064fc342dfb..422192aed0b 100644 --- a/source/blender/blenkernel/intern/curves_geometry.cc +++ b/source/blender/blenkernel/intern/curves_geometry.cc @@ -1587,7 +1587,7 @@ void CurvesGeometry::blend_read(BlendDataReader &reader) BLO_read_int32_array(&reader, this->curve_num + 1, &this->curve_offsets); } -void CurvesGeometry::blend_write(BlendWriter &writer, ID *id) +void CurvesGeometry::blend_write(BlendWriter &writer, ID &id) { Vector point_layers; Vector curve_layers; @@ -1595,9 +1595,9 @@ void CurvesGeometry::blend_write(BlendWriter &writer, ID *id) CustomData_blend_write_prepare(this->curve_data, curve_layers); CustomData_blend_write( - &writer, &this->point_data, point_layers, this->point_num, CD_MASK_ALL, id); + &writer, &this->point_data, point_layers, this->point_num, CD_MASK_ALL, &id); CustomData_blend_write( - &writer, &this->curve_data, curve_layers, this->curve_num, CD_MASK_ALL, id); + &writer, &this->curve_data, curve_layers, this->curve_num, CD_MASK_ALL, &id); BLO_write_int32_array(&writer, this->curve_num + 1, this->curve_offsets); } -- 2.30.2