diff options
-rw-r--r-- | intern/opensubdiv/CMakeLists.txt | 9 | ||||
-rw-r--r-- | intern/opensubdiv/internal/opensubdiv_evaluator_internal.cc | 4 | ||||
-rw-r--r-- | intern/opensubdiv/internal/topology/topology_refiner_capi.cc (renamed from intern/opensubdiv/internal/opensubdiv_topology_refiner.cc) | 18 | ||||
-rw-r--r-- | intern/opensubdiv/internal/topology/topology_refiner_impl.cc (renamed from intern/opensubdiv/internal/opensubdiv_topology_refiner_internal.cc) | 13 | ||||
-rw-r--r-- | intern/opensubdiv/internal/topology/topology_refiner_impl.h (renamed from intern/opensubdiv/internal/opensubdiv_topology_refiner_internal.h) | 21 | ||||
-rw-r--r-- | intern/opensubdiv/opensubdiv_topology_refiner_capi.h | 13 |
6 files changed, 47 insertions, 31 deletions
diff --git a/intern/opensubdiv/CMakeLists.txt b/intern/opensubdiv/CMakeLists.txt index 3226d9e8931..7c73b2ad555 100644 --- a/intern/opensubdiv/CMakeLists.txt +++ b/intern/opensubdiv/CMakeLists.txt @@ -50,6 +50,7 @@ if(WITH_OPENSUBDIV) ) list(APPEND SRC + # Device. internal/device/device_context_cuda.cc internal/device/device_context_cuda.h internal/device/device_context_glsl_compute.cc @@ -61,13 +62,16 @@ if(WITH_OPENSUBDIV) internal/device/device_context_openmp.cc internal/device/device_context_openmp.h + # Topology. + internal/topology/topology_refiner_capi.cc + internal/topology/topology_refiner_impl.cc + internal/topology/topology_refiner_impl.h + internal/opensubdiv.cc internal/opensubdiv_converter_factory.cc internal/opensubdiv_converter_internal.cc internal/opensubdiv_evaluator.cc internal/opensubdiv_evaluator_internal.cc - internal/opensubdiv_topology_refiner.cc - internal/opensubdiv_topology_refiner_internal.cc internal/opensubdiv_util.cc internal/opensubdiv_converter_factory.h @@ -75,7 +79,6 @@ if(WITH_OPENSUBDIV) internal/opensubdiv_edge_map.h internal/opensubdiv_evaluator_internal.h internal/opensubdiv_internal.h - internal/opensubdiv_topology_refiner_internal.h internal/opensubdiv_util.h ) diff --git a/intern/opensubdiv/internal/opensubdiv_evaluator_internal.cc b/intern/opensubdiv/internal/opensubdiv_evaluator_internal.cc index 5279752ea4e..ea345654484 100644 --- a/intern/opensubdiv/internal/opensubdiv_evaluator_internal.cc +++ b/intern/opensubdiv/internal/opensubdiv_evaluator_internal.cc @@ -37,8 +37,8 @@ #include "MEM_guardedalloc.h" -#include "internal/opensubdiv_topology_refiner_internal.h" #include "internal/opensubdiv_util.h" +#include "internal/topology/topology_refiner_impl.h" #include "opensubdiv_topology_refiner_capi.h" using OpenSubdiv::Far::PatchMap; @@ -751,7 +751,7 @@ OpenSubdiv_EvaluatorInternal *openSubdiv_createEvaluatorInternal( OpenSubdiv_TopologyRefiner *topology_refiner) { using blender::opensubdiv::vector; - TopologyRefiner *refiner = topology_refiner->internal->osd_topology_refiner; + TopologyRefiner *refiner = topology_refiner->impl->osd_topology_refiner; if (refiner == NULL) { // Happens on bad topology. return NULL; diff --git a/intern/opensubdiv/internal/opensubdiv_topology_refiner.cc b/intern/opensubdiv/internal/topology/topology_refiner_capi.cc index 6e2dae4533a..ff58ac68866 100644 --- a/intern/opensubdiv/internal/opensubdiv_topology_refiner.cc +++ b/intern/opensubdiv/internal/topology/topology_refiner_capi.cc @@ -18,15 +18,13 @@ #include "opensubdiv_topology_refiner_capi.h" -#include <vector> - #include "MEM_guardedalloc.h" #include "internal/opensubdiv_converter_factory.h" #include "internal/opensubdiv_converter_internal.h" #include "internal/opensubdiv_edge_map.h" #include "internal/opensubdiv_internal.h" -#include "internal/opensubdiv_topology_refiner_internal.h" #include "internal/opensubdiv_util.h" +#include "internal/topology/topology_refiner_impl.h" using blender::opensubdiv::vector; @@ -35,7 +33,7 @@ namespace { const OpenSubdiv::Far::TopologyRefiner *getOSDTopologyRefiner( const OpenSubdiv_TopologyRefiner *topology_refiner) { - return topology_refiner->internal->osd_topology_refiner; + return topology_refiner->impl->osd_topology_refiner; } const OpenSubdiv::Far::TopologyLevel *getOSDTopologyBaseLevel( @@ -46,12 +44,12 @@ const OpenSubdiv::Far::TopologyLevel *getOSDTopologyBaseLevel( int getSubdivisionLevel(const OpenSubdiv_TopologyRefiner *topology_refiner) { - return topology_refiner->internal->settings.level; + return topology_refiner->impl->settings.level; } bool getIsAdaptive(const OpenSubdiv_TopologyRefiner *topology_refiner) { - return topology_refiner->internal->settings.is_adaptive; + return topology_refiner->impl->settings.is_adaptive; } //////////////////////////////////////////////////////////////////////////////// @@ -232,7 +230,7 @@ void assignFunctionPointers(OpenSubdiv_TopologyRefiner *topology_refiner) OpenSubdiv_TopologyRefiner *allocateTopologyRefiner() { OpenSubdiv_TopologyRefiner *topology_refiner = OBJECT_GUARDED_NEW(OpenSubdiv_TopologyRefiner); - topology_refiner->internal = OBJECT_GUARDED_NEW(OpenSubdiv_TopologyRefinerInternal); + topology_refiner->impl = OBJECT_GUARDED_NEW(OpenSubdiv_TopologyRefinerImpl); assignFunctionPointers(topology_refiner); return topology_refiner; } @@ -249,16 +247,16 @@ OpenSubdiv_TopologyRefiner *openSubdiv_createTopologyRefinerFromConverter( return NULL; } OpenSubdiv_TopologyRefiner *topology_refiner = allocateTopologyRefiner(); - topology_refiner->internal->osd_topology_refiner = osd_topology_refiner; + topology_refiner->impl->osd_topology_refiner = osd_topology_refiner; // Store setting which we want to keep track of and which can not be stored // in OpenSubdiv's descriptor yet. - topology_refiner->internal->settings = *settings; + topology_refiner->impl->settings = *settings; return topology_refiner; } void openSubdiv_deleteTopologyRefiner(OpenSubdiv_TopologyRefiner *topology_refiner) { - OBJECT_GUARDED_DELETE(topology_refiner->internal, OpenSubdiv_TopologyRefinerInternal); + OBJECT_GUARDED_DELETE(topology_refiner->impl, OpenSubdiv_TopologyRefinerImpl); OBJECT_GUARDED_DELETE(topology_refiner, OpenSubdiv_TopologyRefiner); } diff --git a/intern/opensubdiv/internal/opensubdiv_topology_refiner_internal.cc b/intern/opensubdiv/internal/topology/topology_refiner_impl.cc index f3054a17da2..7d2ae2a6304 100644 --- a/intern/opensubdiv/internal/opensubdiv_topology_refiner_internal.cc +++ b/intern/opensubdiv/internal/topology/topology_refiner_impl.cc @@ -16,14 +16,19 @@ // // Author: Sergey Sharybin -#include "internal/opensubdiv_topology_refiner_internal.h" +#include "internal/topology/topology_refiner_impl.h" -OpenSubdiv_TopologyRefinerInternal::OpenSubdiv_TopologyRefinerInternal() - : osd_topology_refiner(NULL) +namespace blender { +namespace opensubdiv { + +TopologyRefinerImpl::TopologyRefinerImpl() : osd_topology_refiner(nullptr) { } -OpenSubdiv_TopologyRefinerInternal::~OpenSubdiv_TopologyRefinerInternal() +TopologyRefinerImpl::~TopologyRefinerImpl() { delete osd_topology_refiner; } + +} // namespace opensubdiv +} // namespace blender diff --git a/intern/opensubdiv/internal/opensubdiv_topology_refiner_internal.h b/intern/opensubdiv/internal/topology/topology_refiner_impl.h index b0f5d4079ef..507f3d0f869 100644 --- a/intern/opensubdiv/internal/opensubdiv_topology_refiner_internal.h +++ b/intern/opensubdiv/internal/topology/topology_refiner_impl.h @@ -16,8 +16,8 @@ // // Author: Sergey Sharybin -#ifndef OPENSUBDIV_TOPOLOGY_REFINER_INTERNAL_H_ -#define OPENSUBDIV_TOPOLOGY_REFINER_INTERNAL_H_ +#ifndef OPENSUBDIV_TOPOLOGY_REFINER_IMPL_H_ +#define OPENSUBDIV_TOPOLOGY_REFINER_IMPL_H_ #ifdef _MSC_VER # include <iso646.h> @@ -27,10 +27,13 @@ #include "opensubdiv_topology_refiner_capi.h" -struct OpenSubdiv_TopologyRefinerInternal { +namespace blender { +namespace opensubdiv { + +class TopologyRefinerImpl { public: - OpenSubdiv_TopologyRefinerInternal(); - ~OpenSubdiv_TopologyRefinerInternal(); + TopologyRefinerImpl(); + ~TopologyRefinerImpl(); OpenSubdiv::Far::TopologyRefiner *osd_topology_refiner; @@ -44,4 +47,10 @@ struct OpenSubdiv_TopologyRefinerInternal { OpenSubdiv_TopologyRefinerSettings settings; }; -#endif // OPENSUBDIV_TOPOLOGY_REFINER_H_ +} // namespace opensubdiv +} // namespace blender + +struct OpenSubdiv_TopologyRefinerImpl : public blender::opensubdiv::TopologyRefinerImpl { +}; + +#endif // OPENSUBDIV_TOPOLOGY_REFINER_IMPL_H_ diff --git a/intern/opensubdiv/opensubdiv_topology_refiner_capi.h b/intern/opensubdiv/opensubdiv_topology_refiner_capi.h index 38d722ab572..fe2f3f3ce2d 100644 --- a/intern/opensubdiv/opensubdiv_topology_refiner_capi.h +++ b/intern/opensubdiv/opensubdiv_topology_refiner_capi.h @@ -28,7 +28,7 @@ extern "C" { #endif struct OpenSubdiv_Converter; -struct OpenSubdiv_TopologyRefinerInternal; +struct OpenSubdiv_TopologyRefinerImpl; // Those settings don't really belong to OpenSubdiv's topology refiner, but // we are keeping track of them on our side of topology refiner. This is to @@ -40,6 +40,10 @@ typedef struct OpenSubdiv_TopologyRefinerSettings { int level; } OpenSubdiv_TopologyRefinerSettings; +// C-style wrapper around actual topology refiner. +// +// The only purpose is to allow C-only code to access C++ implementation of the +// topology refiner. typedef struct OpenSubdiv_TopologyRefiner { // Query subdivision level the refiner is created for. int (*getSubdivisionLevel)(const struct OpenSubdiv_TopologyRefiner *topology_refiner); @@ -125,11 +129,8 @@ typedef struct OpenSubdiv_TopologyRefiner { ////////////////////////////////////////////////////////////////////////////// // Internal use. - // Internal storage for the use in this module only. - // - // Tease: Contains actual OpenSubdiv's refiner and (optionally) some other - // data and state needed for an internbal use. - struct OpenSubdiv_TopologyRefinerInternal *internal; + // Implementation of the topology refiner. + struct OpenSubdiv_TopologyRefinerImpl *impl; } OpenSubdiv_TopologyRefiner; // NOTE: Will return NULL in cases of bad topology. |