From 869d1a8d6a07f4486b40238813ab7e4394b4990b Mon Sep 17 00:00:00 2001 From: Matt Williams Date: Thu, 21 Jun 2012 22:24:04 +0100 Subject: [PATCH] Re-enable more of the bindings This should enable enough of the bindings to be able to extract a surface mesh. --- library/bindings/Density.i | 2 ++ library/bindings/PolyVoxCore.i | 43 +++++++++++++++++------------ library/bindings/SimpleVolume.i | 5 +++- library/bindings/SurfaceExtractor.i | 23 ++------------- library/bindings/Vector.i | 29 ++++++++++++++++++- 5 files changed, 61 insertions(+), 41 deletions(-) diff --git a/library/bindings/Density.i b/library/bindings/Density.i index 39b2541c..73c9169b 100644 --- a/library/bindings/Density.i +++ b/library/bindings/Density.i @@ -3,6 +3,8 @@ #include "Density.h" %} +%include "Voxel.h" +%include "SurfaceExtractor.h" %include "Density.h" %template(Density8) PolyVox::Density; diff --git a/library/bindings/PolyVoxCore.i b/library/bindings/PolyVoxCore.i index b4270caf..bb44ba52 100644 --- a/library/bindings/PolyVoxCore.i +++ b/library/bindings/PolyVoxCore.i @@ -2,33 +2,40 @@ #define POLYVOX_API -%rename(equals) operator==; -%rename(notEqualTo) operator!=; -%rename(lessThan) operator<; -%rename(greaterThan) operator>; -%rename(lessThanOrEqualTo) operator<=; -%rename(greaterThanOrEqualTo) operator>=; -%rename(assignment) operator=; -%rename(additionAssignment) operator+=; -%rename(subtractionAssignment) operator-=; -%rename(multiplicationAssignment) operator*=; -%rename(divisionAssignment) operator/=; -%rename(arrayOperator) operator[]; +//This macro allows us to use Python properties on our classes +%define PROPERTY(type,name,getter,setter) +%extend type { + %pythoncode %{ + __swig_getmethods__["name"] = getter + __swig_setmethods__["name"] = setter + if _newclass: name = property(getter, setter) + %} +}; +%enddef + +//Put this in an %extend section to wrap operator<< as __str__ +%define STR() +const char* __str__() { + std::ostringstream out; + out << *$self; + return out.str().c_str(); +} +%enddef %include "stdint.i" %include "std_vector.i" %include "Vector.i" +%include "Density.i" //%include "Material.i" -//%include "Density.i" -//%include "Region.i" -//%include "SimpleVolume.i" +%include "Region.i" +%include "SimpleVolume.i" //%include "TypeDef.i" //%include "SubArray.i" //%include "Array.i" -//%include "VertexTypes.i" -//%include "SurfaceMesh.i" +%include "VertexTypes.i" +%include "SurfaceMesh.i" //%include "SimpleVolumeSampler.i" -//%include "SurfaceExtractor.i" +%include "SurfaceExtractor.i" //%include "CubicSurfaceExtractor.i" //%include "CubicSurfaceExtractorWithNormals.i" //%include "MeshDecimator.i" \ No newline at end of file diff --git a/library/bindings/SimpleVolume.i b/library/bindings/SimpleVolume.i index 2e2f7f2f..465de208 100644 --- a/library/bindings/SimpleVolume.i +++ b/library/bindings/SimpleVolume.i @@ -5,9 +5,12 @@ #include "SimpleVolume.h" %} +%import "BaseVolume.h" %include "Material.h" %include "Density.h" %include "SimpleVolume.h" -%template(SimpleVolumeMaterial8) PolyVox::SimpleVolume; +%template(BaseVolumeDensity8) PolyVox::BaseVolume; + +//%template(SimpleVolumeMaterial8) PolyVox::SimpleVolume; %template(SimpleVolumeDensity8) PolyVox::SimpleVolume; \ No newline at end of file diff --git a/library/bindings/SurfaceExtractor.i b/library/bindings/SurfaceExtractor.i index 8e34a278..a2ff4c73 100644 --- a/library/bindings/SurfaceExtractor.i +++ b/library/bindings/SurfaceExtractor.i @@ -1,30 +1,11 @@ %module SurfaceExtractor %{ #include "SimpleVolume.h" +#include "Material.h" #include "SurfaceExtractor.h" -#include "PolyVoxCore/Material.h" - -namespace PolyVox -{ - class SurfaceExtractorSimpleVolumeMaterial8 : public SurfaceExtractor - { - public: - SurfaceExtractorSimpleVolumeMaterial8(SimpleVolume* volData, Region region, SurfaceMesh* result) - : SurfaceExtractor(volData, region, result) {} - void execute() { SurfaceExtractor::execute(); } - }; -}; %} %include "SimpleVolume.h" %include "SurfaceExtractor.h" -namespace PolyVox -{ - class SurfaceExtractorSimpleVolumeMaterial8 : public SurfaceExtractor - { - public: - SurfaceExtractorSimpleVolumeMaterial8(SimpleVolume* volData, Region region, SurfaceMesh* result); - void execute(); - }; -}; +%template(SurfaceExtractorSimpleVolumeDensity8) PolyVox::SurfaceExtractor >; diff --git a/library/bindings/Vector.i b/library/bindings/Vector.i index e8d808d6..b84b9003 100644 --- a/library/bindings/Vector.i +++ b/library/bindings/Vector.i @@ -1,10 +1,37 @@ %module Vector %{ #include "Vector.h" +#include %} %include "Vector.h" +PROPERTY(PolyVox::Vector, x, getX, setX) +PROPERTY(PolyVox::Vector, y, getY, setY) +PROPERTY(PolyVox::Vector, z, getZ, setZ) + +%extend PolyVox::Vector { + PolyVox::Vector __add__(const PolyVox::Vector& rhs) { + return *$self + rhs; + } + PolyVox::Vector __sub__(const PolyVox::Vector& rhs) { + return *$self - rhs; + } + PolyVox::Vector __div__(const PolyVox::Vector& rhs) { + return *$self / rhs; + } + PolyVox::Vector __div__(const Type& rhs) { + return *$self / rhs; + } + PolyVox::Vector __mul__(const PolyVox::Vector& rhs) { + return *$self * rhs; + } + PolyVox::Vector __mul__(const Type& rhs) { + return *$self * rhs; + } + STR() +}; + %template(Vector3DFloat) PolyVox::Vector<3,float>; %template(Vector3DDouble) PolyVox::Vector<3,double>; %template(Vector3DInt8) PolyVox::Vector<3,int8_t>; @@ -14,4 +41,4 @@ %template(Vector3DInt32) PolyVox::Vector<3,int32_t>; %template(Vector3DUint32) PolyVox::Vector<3,uint32_t>; -%rename(assign) Vector3DFloat::operator=; +//%rename(assign) Vector3DFloat::operator=;