[Bf-blender-cvs] [ca585aa4151] opensubdiv_compare: OpenSubdiv: Refactor, pass higher level object through comparison

Sergey Sharybin noreply at git.blender.org
Tue May 26 11:13:26 CEST 2020


Commit: ca585aa4151f8715afc24e419d929b3d0ffcc3e5
Author: Sergey Sharybin
Date:   Tue May 19 11:36:06 2020 +0200
Branches: opensubdiv_compare
https://developer.blender.org/rBca585aa4151f8715afc24e419d929b3d0ffcc3e5

OpenSubdiv: Refactor, pass higher level object through comparison

===================================================================

M	intern/opensubdiv/internal/topology/topology_refiner_capi.cc

===================================================================

diff --git a/intern/opensubdiv/internal/topology/topology_refiner_capi.cc b/intern/opensubdiv/internal/topology/topology_refiner_capi.cc
index 167d618804f..58c0ffbb7cf 100644
--- a/intern/opensubdiv/internal/topology/topology_refiner_capi.cc
+++ b/intern/opensubdiv/internal/topology/topology_refiner_capi.cc
@@ -35,10 +35,10 @@ const OpenSubdiv::Far::TopologyRefiner *getOSDTopologyRefiner(
   return topology_refiner->impl->topology_refiner;
 }
 
-const OpenSubdiv::Far::TopologyLevel *getOSDTopologyBaseLevel(
+const OpenSubdiv::Far::TopologyLevel &getOSDTopologyBaseLevel(
     const OpenSubdiv_TopologyRefiner *topology_refiner)
 {
-  return &getOSDTopologyRefiner(topology_refiner)->GetLevel(0);
+  return getOSDTopologyRefiner(topology_refiner)->GetLevel(0);
 }
 
 int getSubdivisionLevel(const OpenSubdiv_TopologyRefiner *topology_refiner)
@@ -56,17 +56,17 @@ bool getIsAdaptive(const OpenSubdiv_TopologyRefiner *topology_refiner)
 
 int getNumVertices(const OpenSubdiv_TopologyRefiner *topology_refiner)
 {
-  return getOSDTopologyBaseLevel(topology_refiner)->GetNumVertices();
+  return getOSDTopologyBaseLevel(topology_refiner).GetNumVertices();
 }
 
 int getNumEdges(const OpenSubdiv_TopologyRefiner *topology_refiner)
 {
-  return getOSDTopologyBaseLevel(topology_refiner)->GetNumEdges();
+  return getOSDTopologyBaseLevel(topology_refiner).GetNumEdges();
 }
 
 int getNumFaces(const OpenSubdiv_TopologyRefiner *topology_refiner)
 {
-  return getOSDTopologyBaseLevel(topology_refiner)->GetNumFaces();
+  return getOSDTopologyBaseLevel(topology_refiner).GetNumFaces();
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -81,31 +81,31 @@ static void convertArrayToRaw(const OpenSubdiv::Far::ConstIndexArray &array, int
 
 int getNumFaceVertices(const OpenSubdiv_TopologyRefiner *topology_refiner, const int face_index)
 {
-  const OpenSubdiv::Far::TopologyLevel *base_level = getOSDTopologyBaseLevel(topology_refiner);
-  return base_level->GetFaceVertices(face_index).size();
+  const OpenSubdiv::Far::TopologyLevel &base_level = getOSDTopologyBaseLevel(topology_refiner);
+  return base_level.GetFaceVertices(face_index).size();
 }
 
 void getFaceVertices(const OpenSubdiv_TopologyRefiner *topology_refiner,
                      const int face_index,
                      int *face_vertices_indices)
 {
-  const OpenSubdiv::Far::TopologyLevel *base_level = getOSDTopologyBaseLevel(topology_refiner);
-  OpenSubdiv::Far::ConstIndexArray array = base_level->GetFaceVertices(face_index);
+  const OpenSubdiv::Far::TopologyLevel &base_level = getOSDTopologyBaseLevel(topology_refiner);
+  OpenSubdiv::Far::ConstIndexArray array = base_level.GetFaceVertices(face_index);
   convertArrayToRaw(array, face_vertices_indices);
 }
 
 int getNumFaceEdges(const OpenSubdiv_TopologyRefiner *topology_refiner, const int face_index)
 {
-  const OpenSubdiv::Far::TopologyLevel *base_level = getOSDTopologyBaseLevel(topology_refiner);
-  return base_level->GetFaceEdges(face_index).size();
+  const OpenSubdiv::Far::TopologyLevel &base_level = getOSDTopologyBaseLevel(topology_refiner);
+  return base_level.GetFaceEdges(face_index).size();
 }
 
 void getFaceEdges(const OpenSubdiv_TopologyRefiner *topology_refiner,
                   const int face_index,
                   int *face_edges_indices)
 {
-  const OpenSubdiv::Far::TopologyLevel *base_level = getOSDTopologyBaseLevel(topology_refiner);
-  OpenSubdiv::Far::ConstIndexArray array = base_level->GetFaceEdges(face_index);
+  const OpenSubdiv::Far::TopologyLevel &base_level = getOSDTopologyBaseLevel(topology_refiner);
+  OpenSubdiv::Far::ConstIndexArray array = base_level.GetFaceEdges(face_index);
   convertArrayToRaw(array, face_edges_indices);
 }
 
@@ -113,8 +113,8 @@ void getEdgeVertices(const OpenSubdiv_TopologyRefiner *topology_refiner,
                      const int edge_index,
                      int edge_vertices_indices[2])
 {
-  const OpenSubdiv::Far::TopologyLevel *base_level = getOSDTopologyBaseLevel(topology_refiner);
-  OpenSubdiv::Far::ConstIndexArray array = base_level->GetEdgeVertices(edge_index);
+  const OpenSubdiv::Far::TopologyLevel &base_level = getOSDTopologyBaseLevel(topology_refiner);
+  OpenSubdiv::Far::ConstIndexArray array = base_level.GetEdgeVertices(edge_index);
   assert(array.size() == 2);
   edge_vertices_indices[0] = array[0];
   edge_vertices_indices[1] = array[1];
@@ -122,16 +122,16 @@ void getEdgeVertices(const OpenSubdiv_TopologyRefiner *topology_refiner,
 
 int getNumVertexEdges(const OpenSubdiv_TopologyRefiner *topology_refiner, const int vertex_index)
 {
-  const OpenSubdiv::Far::TopologyLevel *base_level = getOSDTopologyBaseLevel(topology_refiner);
-  return base_level->GetVertexEdges(vertex_index).size();
+  const OpenSubdiv::Far::TopologyLevel &base_level = getOSDTopologyBaseLevel(topology_refiner);
+  return base_level.GetVertexEdges(vertex_index).size();
 }
 
 void getVertexEdges(const OpenSubdiv_TopologyRefiner *topology_refiner,
                     const int vertex_index,
                     int *vertex_edges_indices)
 {
-  const OpenSubdiv::Far::TopologyLevel *base_level = getOSDTopologyBaseLevel(topology_refiner);
-  OpenSubdiv::Far::ConstIndexArray array = base_level->GetVertexEdges(vertex_index);
+  const OpenSubdiv::Far::TopologyLevel &base_level = getOSDTopologyBaseLevel(topology_refiner);
+  OpenSubdiv::Far::ConstIndexArray array = base_level.GetVertexEdges(vertex_index);
   convertArrayToRaw(array, vertex_edges_indices);
 }
 
@@ -172,8 +172,8 @@ void fillFacePtexIndexOffset(const OpenSubdiv_TopologyRefiner *topology_refiner,
 
 int getNumFVarChannels(const struct OpenSubdiv_TopologyRefiner *topology_refiner)
 {
-  const OpenSubdiv::Far::TopologyLevel *base_level = getOSDTopologyBaseLevel(topology_refiner);
-  return base_level->GetNumFVarChannels();
+  const OpenSubdiv::Far::TopologyLevel &base_level = getOSDTopologyBaseLevel(topology_refiner);
+  return base_level.GetNumFVarChannels();
 }
 
 OpenSubdiv_FVarLinearInterpolation getFVarLinearInterpolation(
@@ -185,16 +185,16 @@ OpenSubdiv_FVarLinearInterpolation getFVarLinearInterpolation(
 
 int getNumFVarValues(const struct OpenSubdiv_TopologyRefiner *topology_refiner, const int channel)
 {
-  const OpenSubdiv::Far::TopologyLevel *base_level = getOSDTopologyBaseLevel(topology_refiner);
-  return base_level->GetNumFVarValues(channel);
+  const OpenSubdiv::Far::TopologyLevel &base_level = getOSDTopologyBaseLevel(topology_refiner);
+  return base_level.GetNumFVarValues(channel);
 }
 
 const int *getFaceFVarValueIndices(const struct OpenSubdiv_TopologyRefiner *topology_refiner,
                                    const int face_index,
                                    const int channel)
 {
-  const OpenSubdiv::Far::TopologyLevel *base_level = getOSDTopologyBaseLevel(topology_refiner);
-  return &base_level->GetFaceFVarValues(face_index, channel)[0];
+  const OpenSubdiv::Far::TopologyLevel &base_level = getOSDTopologyBaseLevel(topology_refiner);
+  return &base_level.GetFaceFVarValues(face_index, channel)[0];
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -268,19 +268,19 @@ namespace {
 ///////////////////////////////////////////////////////////
 // Quick preliminary checks.
 
-bool checkSchemeTypeMatches(const OpenSubdiv::Far::TopologyRefiner *topology_refiner,
+bool checkSchemeTypeMatches(const OpenSubdiv_TopologyRefiner *topology_refiner,
                             const OpenSubdiv_Converter *converter)
 {
   const OpenSubdiv::Sdc::SchemeType converter_scheme_type =
       blender::opensubdiv::getSchemeTypeFromCAPI(converter->getSchemeType(converter));
-  return (converter_scheme_type == topology_refiner->GetSchemeType());
+  return (converter_scheme_type == getOSDTopologyRefiner(topology_refiner)->GetSchemeType());
 }
 
-bool checkOptionsMatches(const OpenSubdiv::Far::TopologyRefiner *topology_refiner,
+bool checkOptionsMatches(const OpenSubdiv_TopologyRefiner *topology_refiner,
                          const OpenSubdiv_Converter *converter)
 {
   typedef OpenSubdiv::Sdc::Options Options;
-  const Options options = topology_refiner->GetSchemeOptions();
+  const Options options = getOSDTopologyRefiner(topology_refiner)->GetSchemeOptions();
   const Options::FVarLinearInterpolation fvar_interpolation = options.GetFVarLinearInterpolation();
   const Options::FVarLinearInterpolation converter_fvar_interpolation =
       blender::opensubdiv::getFVarLinearInterpolationFromCAPI(
@@ -291,17 +291,17 @@ bool checkOptionsMatches(const OpenSubdiv::Far::TopologyRefiner *topology_refine
   return true;
 }
 
-bool checkGeometryCountersMatches(const OpenSubdiv::Far::TopologyRefiner *topology_refiner,
+bool checkGeometryCountersMatches(const OpenSubdiv_TopologyRefiner *topology_refiner,
                                   const OpenSubdiv_Converter *converter)
 {
   using OpenSubdiv::Far::TopologyLevel;
-  const TopologyLevel &base_level = topology_refiner->GetLevel(0);
+  const TopologyLevel &base_level = getOSDTopologyBaseLevel(topology_refiner);
   return ((converter->getNumVertices(converter) == base_level.GetNumVertices()) &&
           (converter->getNumEdges(converter) == base_level.GetNumEdges()) &&
           (converter->getNumFaces(converter) == base_level.GetNumFaces()));
 }
 
-bool checkPreliminaryMatches(const OpenSubdiv::Far::TopologyRefiner *topology_refiner,
+bool checkPreliminaryMatches(const OpenSubdiv_TopologyRefiner *topology_refiner,
                              const OpenSubdiv_Converter *converter)
 {
   return checkSchemeTypeMatches(topology_refiner, converter) &&
@@ -422,12 +422,12 @@ bool checkVerticesOfFacesMatch(const CyclicArray &indices_a, const CyclicArray &
   return false;
 }
 
-bool checkGeometryFacesMatch(const OpenSubdiv::Far::TopologyRefiner *topology_refiner,
+bool checkGeometryFacesMatch(const OpenSubdiv_TopologyRefiner *topology_refiner,
                              const OpenSubdiv_Converter *converter)
 {
   using OpenSubdiv::Far::ConstIndexArray;
   using OpenSubdiv::Far::TopologyLevel;
-  const TopologyLevel &base_level = topology_refiner->GetLevel(0);
+  const TopologyLevel &base_level = getOSDTopologyBaseLevel(topology_refine

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list