OIpenSubdiv: Cleanup, move to a better sounding namespace
The code is not only part of C-API, but also implements Blender-specific glue level implementation.
This commit is contained in:
parent
2ad5131f77
commit
31fc01eecb
@ -84,7 +84,7 @@ int openSubdiv_getVersionHex(void)
|
||||
}
|
||||
int major = 0, minor = 0, patch = 0;
|
||||
vector<string> tokens;
|
||||
opensubdiv_capi::stringSplit(&tokens, version, "_", true);
|
||||
blender::opensubdiv::stringSplit(&tokens, version, "_", true);
|
||||
if (tokens.size() == 3) {
|
||||
major = atoi(tokens[0].c_str());
|
||||
minor = atoi(tokens[1].c_str());
|
||||
|
@ -32,9 +32,9 @@
|
||||
#include "internal/opensubdiv_util.h"
|
||||
#include "opensubdiv_converter_capi.h"
|
||||
|
||||
using opensubdiv_capi::min;
|
||||
using opensubdiv_capi::stack;
|
||||
using opensubdiv_capi::vector;
|
||||
using blender::opensubdiv::min;
|
||||
using blender::opensubdiv::stack;
|
||||
using blender::opensubdiv::vector;
|
||||
|
||||
struct TopologyRefinerData {
|
||||
const OpenSubdiv_Converter *converter;
|
||||
@ -245,7 +245,8 @@ inline void TopologyRefinerFactory<TopologyRefinerData>::reportInvalidTopology(
|
||||
} /* namespace OPENSUBDIV_VERSION */
|
||||
} /* namespace OpenSubdiv */
|
||||
|
||||
namespace opensubdiv_capi {
|
||||
namespace blender {
|
||||
namespace opensubdiv {
|
||||
|
||||
namespace {
|
||||
|
||||
@ -291,4 +292,5 @@ OpenSubdiv::Far::TopologyRefiner *createOSDTopologyRefinerFromConverter(
|
||||
return TopologyRefinerFactory<TopologyRefinerData>::Create(cb_data, topology_options);
|
||||
}
|
||||
|
||||
} // namespace opensubdiv_capi
|
||||
} // namespace opensubdiv
|
||||
} // namespace blender
|
||||
|
@ -27,11 +27,13 @@
|
||||
|
||||
struct OpenSubdiv_Converter;
|
||||
|
||||
namespace opensubdiv_capi {
|
||||
namespace blender {
|
||||
namespace opensubdiv {
|
||||
|
||||
OpenSubdiv::Far::TopologyRefiner *createOSDTopologyRefinerFromConverter(
|
||||
struct OpenSubdiv_Converter *converter);
|
||||
|
||||
} // namespace opensubdiv_capi
|
||||
} // namespace opensubdiv
|
||||
} // namespace blender
|
||||
|
||||
#endif // OPENSUBDIV_CONVERTER_FACTORY_H_
|
||||
|
@ -25,7 +25,8 @@
|
||||
#include <cassert>
|
||||
#include <opensubdiv/sdc/crease.h>
|
||||
|
||||
namespace opensubdiv_capi {
|
||||
namespace blender {
|
||||
namespace opensubdiv {
|
||||
|
||||
OpenSubdiv::Sdc::SchemeType getSchemeTypeFromCAPI(OpenSubdiv_SchemeType type)
|
||||
{
|
||||
@ -85,4 +86,5 @@ OpenSubdiv_FVarLinearInterpolation getCAPIFVarLinearInterpolationFromOSD(
|
||||
return OSD_FVAR_LINEAR_INTERPOLATION_NONE;
|
||||
}
|
||||
|
||||
} // namespace opensubdiv_capi
|
||||
} // namespace opensubdiv
|
||||
} // namespace blender
|
||||
|
@ -30,7 +30,8 @@
|
||||
|
||||
struct OpenSubdiv_Converter;
|
||||
|
||||
namespace opensubdiv_capi {
|
||||
namespace blender {
|
||||
namespace opensubdiv {
|
||||
|
||||
// Convert scheme type from C-API enum to an OpenSubdiv native enum.
|
||||
OpenSubdiv::Sdc::SchemeType getSchemeTypeFromCAPI(OpenSubdiv_SchemeType type);
|
||||
@ -44,6 +45,7 @@ OpenSubdiv::Sdc::Options::FVarLinearInterpolation getFVarLinearInterpolationFrom
|
||||
OpenSubdiv_FVarLinearInterpolation getCAPIFVarLinearInterpolationFromOSD(
|
||||
OpenSubdiv::Sdc::Options::FVarLinearInterpolation linear_interpolation);
|
||||
|
||||
} // namespace opensubdiv_capi
|
||||
} // namespace opensubdiv
|
||||
} // namespace blender
|
||||
|
||||
#endif // OPENSUBDIV_CONVERTER_INTERNAL_H_
|
||||
|
@ -21,7 +21,8 @@
|
||||
|
||||
#include "internal/opensubdiv_util.h"
|
||||
|
||||
namespace opensubdiv_capi {
|
||||
namespace blender {
|
||||
namespace opensubdiv {
|
||||
|
||||
// Helper class to ease dealing with edge indexing.
|
||||
// Simply takes care of ensuring order of vertices is strictly defined.
|
||||
@ -144,12 +145,13 @@ template<typename T> typename EdgeTagMap<T>::value_type &EdgeTagMap<T>::operator
|
||||
return edge_tags_[key];
|
||||
}
|
||||
|
||||
} // namespace opensubdiv_capi
|
||||
} // namespace opensubdiv
|
||||
} // namespace blender
|
||||
|
||||
namespace std {
|
||||
|
||||
template<> struct hash<opensubdiv_capi::EdgeKey> {
|
||||
std::size_t operator()(const opensubdiv_capi::EdgeKey &key) const
|
||||
template<> struct hash<blender::opensubdiv::EdgeKey> {
|
||||
std::size_t operator()(const blender::opensubdiv::EdgeKey &key) const
|
||||
{
|
||||
return key.hash();
|
||||
}
|
||||
|
@ -53,7 +53,8 @@ using OpenSubdiv::Osd::CpuPatchTable;
|
||||
using OpenSubdiv::Osd::CpuVertexBuffer;
|
||||
using OpenSubdiv::Osd::PatchCoord;
|
||||
|
||||
namespace opensubdiv_capi {
|
||||
namespace blender {
|
||||
namespace opensubdiv {
|
||||
|
||||
namespace {
|
||||
|
||||
@ -731,7 +732,8 @@ void CpuEvalOutputAPI::evaluatePatchesLimit(const OpenSubdiv_PatchCoord *patch_c
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace opensubdiv_capi
|
||||
} // namespace opensubdiv
|
||||
} // namespace blender
|
||||
|
||||
OpenSubdiv_EvaluatorInternal::OpenSubdiv_EvaluatorInternal()
|
||||
: eval_output(NULL), patch_map(NULL), patch_table(NULL)
|
||||
@ -748,7 +750,7 @@ OpenSubdiv_EvaluatorInternal::~OpenSubdiv_EvaluatorInternal()
|
||||
OpenSubdiv_EvaluatorInternal *openSubdiv_createEvaluatorInternal(
|
||||
OpenSubdiv_TopologyRefiner *topology_refiner)
|
||||
{
|
||||
using opensubdiv_capi::vector;
|
||||
using blender::opensubdiv::vector;
|
||||
TopologyRefiner *refiner = topology_refiner->internal->osd_topology_refiner;
|
||||
if (refiner == NULL) {
|
||||
// Happens on bad topology.
|
||||
@ -851,13 +853,13 @@ OpenSubdiv_EvaluatorInternal *openSubdiv_createEvaluatorInternal(
|
||||
}
|
||||
// Create OpenSubdiv's CPU side evaluator.
|
||||
// TODO(sergey): Make it possible to use different evaluators.
|
||||
opensubdiv_capi::CpuEvalOutput *eval_output = new opensubdiv_capi::CpuEvalOutput(
|
||||
blender::opensubdiv::CpuEvalOutput *eval_output = new blender::opensubdiv::CpuEvalOutput(
|
||||
vertex_stencils, varying_stencils, all_face_varying_stencils, 2, patch_table);
|
||||
OpenSubdiv::Far::PatchMap *patch_map = new PatchMap(*patch_table);
|
||||
// Wrap everything we need into an object which we control from our side.
|
||||
OpenSubdiv_EvaluatorInternal *evaluator_descr;
|
||||
evaluator_descr = OBJECT_GUARDED_NEW(OpenSubdiv_EvaluatorInternal);
|
||||
evaluator_descr->eval_output = new opensubdiv_capi::CpuEvalOutputAPI(eval_output, patch_map);
|
||||
evaluator_descr->eval_output = new blender::opensubdiv::CpuEvalOutputAPI(eval_output, patch_map);
|
||||
evaluator_descr->patch_map = patch_map;
|
||||
evaluator_descr->patch_table = patch_table;
|
||||
// TOOD(sergey): Look into whether we've got duplicated stencils arrays.
|
||||
|
@ -29,7 +29,8 @@
|
||||
struct OpenSubdiv_PatchCoord;
|
||||
struct OpenSubdiv_TopologyRefiner;
|
||||
|
||||
namespace opensubdiv_capi {
|
||||
namespace blender {
|
||||
namespace opensubdiv {
|
||||
|
||||
// Anonymous forward declaration of actual evaluator implementation.
|
||||
class CpuEvalOutput;
|
||||
@ -132,14 +133,15 @@ class CpuEvalOutputAPI {
|
||||
OpenSubdiv::Far::PatchMap *patch_map_;
|
||||
};
|
||||
|
||||
} // namespace opensubdiv_capi
|
||||
} // namespace opensubdiv
|
||||
} // namespace blender
|
||||
|
||||
struct OpenSubdiv_EvaluatorInternal {
|
||||
public:
|
||||
OpenSubdiv_EvaluatorInternal();
|
||||
~OpenSubdiv_EvaluatorInternal();
|
||||
|
||||
opensubdiv_capi::CpuEvalOutputAPI *eval_output;
|
||||
blender::opensubdiv::CpuEvalOutputAPI *eval_output;
|
||||
const OpenSubdiv::Far::PatchMap *patch_map;
|
||||
const OpenSubdiv::Far::PatchTable *patch_table;
|
||||
};
|
||||
|
@ -28,7 +28,7 @@
|
||||
#include "internal/opensubdiv_topology_refiner_internal.h"
|
||||
#include "internal/opensubdiv_util.h"
|
||||
|
||||
using opensubdiv_capi::vector;
|
||||
using blender::opensubdiv::vector;
|
||||
|
||||
namespace {
|
||||
|
||||
@ -182,7 +182,7 @@ int getNumFVarChannels(const struct OpenSubdiv_TopologyRefiner *topology_refiner
|
||||
OpenSubdiv_FVarLinearInterpolation getFVarLinearInterpolation(
|
||||
const struct OpenSubdiv_TopologyRefiner *topology_refiner)
|
||||
{
|
||||
return opensubdiv_capi::getCAPIFVarLinearInterpolationFromOSD(
|
||||
return blender::opensubdiv::getCAPIFVarLinearInterpolationFromOSD(
|
||||
getOSDTopologyRefiner(topology_refiner)->GetFVarLinearInterpolation());
|
||||
}
|
||||
|
||||
@ -243,7 +243,7 @@ OpenSubdiv_TopologyRefiner *openSubdiv_createTopologyRefinerFromConverter(
|
||||
OpenSubdiv_Converter *converter, const OpenSubdiv_TopologyRefinerSettings *settings)
|
||||
{
|
||||
OpenSubdiv::Far::TopologyRefiner *osd_topology_refiner =
|
||||
opensubdiv_capi::createOSDTopologyRefinerFromConverter(converter);
|
||||
blender::opensubdiv::createOSDTopologyRefinerFromConverter(converter);
|
||||
if (osd_topology_refiner == NULL) {
|
||||
// Happens on empty or bad topology.
|
||||
return NULL;
|
||||
@ -265,7 +265,8 @@ void openSubdiv_deleteTopologyRefiner(OpenSubdiv_TopologyRefiner *topology_refin
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Comparison with converter.
|
||||
|
||||
namespace opensubdiv_capi {
|
||||
namespace blender {
|
||||
namespace opensubdiv {
|
||||
namespace {
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
@ -274,8 +275,8 @@ namespace {
|
||||
bool checkSchemeTypeMatches(const OpenSubdiv::Far::TopologyRefiner *topology_refiner,
|
||||
const OpenSubdiv_Converter *converter)
|
||||
{
|
||||
const OpenSubdiv::Sdc::SchemeType converter_scheme_type = opensubdiv_capi::getSchemeTypeFromCAPI(
|
||||
converter->getSchemeType(converter));
|
||||
const OpenSubdiv::Sdc::SchemeType converter_scheme_type =
|
||||
blender::opensubdiv::getSchemeTypeFromCAPI(converter->getSchemeType(converter));
|
||||
return (converter_scheme_type == topology_refiner->GetSchemeType());
|
||||
}
|
||||
|
||||
@ -286,7 +287,7 @@ bool checkOptionsMatches(const OpenSubdiv::Far::TopologyRefiner *topology_refine
|
||||
const Options options = topology_refiner->GetSchemeOptions();
|
||||
const Options::FVarLinearInterpolation fvar_interpolation = options.GetFVarLinearInterpolation();
|
||||
const Options::FVarLinearInterpolation converter_fvar_interpolation =
|
||||
opensubdiv_capi::getFVarLinearInterpolationFromCAPI(
|
||||
blender::opensubdiv::getFVarLinearInterpolationFromCAPI(
|
||||
converter->getFVarLinearInterpolation(converter));
|
||||
if (fvar_interpolation != converter_fvar_interpolation) {
|
||||
return false;
|
||||
@ -660,13 +661,14 @@ bool checkTopologyAttributesMatch(const OpenSubdiv::Far::TopologyRefiner *topolo
|
||||
}
|
||||
|
||||
} // namespace
|
||||
} // namespace opensubdiv_capi
|
||||
} // namespace opensubdiv
|
||||
} // namespace blender
|
||||
|
||||
bool openSubdiv_topologyRefinerCompareWithConverter(
|
||||
const OpenSubdiv_TopologyRefiner *topology_refiner, const OpenSubdiv_Converter *converter)
|
||||
{
|
||||
const OpenSubdiv::Far::TopologyRefiner *refiner = getOSDTopologyRefiner(topology_refiner);
|
||||
return (opensubdiv_capi::checkPreliminaryMatches(refiner, converter) &&
|
||||
opensubdiv_capi::checkGeometryMatches(refiner, converter) &&
|
||||
opensubdiv_capi::checkTopologyAttributesMatch(refiner, converter));
|
||||
return (blender::opensubdiv::checkPreliminaryMatches(refiner, converter) &&
|
||||
blender::opensubdiv::checkGeometryMatches(refiner, converter) &&
|
||||
blender::opensubdiv::checkTopologyAttributesMatch(refiner, converter));
|
||||
}
|
||||
|
@ -23,7 +23,8 @@
|
||||
# include <iso646.h>
|
||||
#endif
|
||||
|
||||
namespace opensubdiv_capi {
|
||||
namespace blender {
|
||||
namespace opensubdiv {
|
||||
|
||||
void stringSplit(vector<string> *tokens,
|
||||
const string &str,
|
||||
@ -56,4 +57,5 @@ void stringSplit(vector<string> *tokens,
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace opensubdiv_capi
|
||||
} // namespace opensubdiv
|
||||
} // namespace blender
|
||||
|
@ -27,7 +27,8 @@
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
namespace opensubdiv_capi {
|
||||
namespace blender {
|
||||
namespace opensubdiv {
|
||||
|
||||
using std::fill;
|
||||
using std::make_pair;
|
||||
@ -51,6 +52,7 @@ void stringSplit(vector<string> *tokens,
|
||||
const string &separators,
|
||||
bool skip_empty);
|
||||
|
||||
} // namespace opensubdiv_capi
|
||||
} // namespace opensubdiv
|
||||
} // namespace blender
|
||||
|
||||
#endif // OPENSUBDIV_UTIL_H_
|
||||
|
Loading…
Reference in New Issue
Block a user