opencascade-hs 0.2.1.0 → 0.2.2.0
raw patch · 78 files changed
+1351/−21 lines, 78 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ OpenCascade.BRep.Tool: triangulation :: Ptr Face -> Ptr Location -> Acquire (Ptr (Handle Triangulation))
+ OpenCascade.BRepBuilderAPI.Copy: copy :: Ptr Shape -> Bool -> Bool -> Acquire (Ptr Shape)
+ OpenCascade.BRepBuilderAPI.Internal.Destructors: deleteSewing :: Ptr Sewing -> IO ()
+ OpenCascade.BRepBuilderAPI.MakePolygon: from3Pnts :: Ptr Pnt -> Ptr Pnt -> Ptr Pnt -> Bool -> Acquire (Ptr Wire)
+ OpenCascade.BRepBuilderAPI.Sewing: add :: Ptr Sewing -> Ptr Shape -> IO ()
+ OpenCascade.BRepBuilderAPI.Sewing: data Sewing
+ OpenCascade.BRepBuilderAPI.Sewing: load :: Ptr Sewing -> Ptr Shape -> IO ()
+ OpenCascade.BRepBuilderAPI.Sewing: nbContigousEdges :: Ptr Sewing -> IO Int
+ OpenCascade.BRepBuilderAPI.Sewing: nbFreeEdges :: Ptr Sewing -> IO Int
+ OpenCascade.BRepBuilderAPI.Sewing: nbMultipleEdges :: Ptr Sewing -> IO Int
+ OpenCascade.BRepBuilderAPI.Sewing: new :: Double -> Bool -> Bool -> Bool -> Bool -> Acquire (Ptr Sewing)
+ OpenCascade.BRepBuilderAPI.Sewing: perform :: Ptr Sewing -> IO ()
+ OpenCascade.BRepBuilderAPI.Sewing: sewedShape :: Ptr Sewing -> Acquire (Ptr Shape)
+ OpenCascade.BRepBuilderAPI.Types: data Sewing
+ OpenCascade.BRepLib: orientClosedSolid :: Ptr Solid -> IO Bool
+ OpenCascade.IFSelect.ReturnStatus: instance GHC.Classes.Eq OpenCascade.IFSelect.ReturnStatus.ReturnStatus
+ OpenCascade.IFSelect.ReturnStatus: instance GHC.Show.Show OpenCascade.IFSelect.ReturnStatus.ReturnStatus
+ OpenCascade.Poly.Internal.Destructors: deleteHandleTriangulation :: Ptr (Handle Triangulation) -> IO ()
+ OpenCascade.Poly.Internal.Destructors: deleteTriangle :: Ptr Triangle -> IO ()
+ OpenCascade.Poly.Triangle: data Triangle
+ OpenCascade.Poly.Triangle: fromIndices :: Int -> Int -> Int -> Acquire (Ptr Triangle)
+ OpenCascade.Poly.Triangle: setValue :: Ptr Triangle -> Int -> Int -> IO ()
+ OpenCascade.Poly.Triangle: value :: Ptr Triangle -> Int -> IO Int
+ OpenCascade.Poly.Triangulation: data Triangulation
+ OpenCascade.Poly.Triangulation: nbNodes :: Ptr (Handle Triangulation) -> IO Int
+ OpenCascade.Poly.Triangulation: nbTriangles :: Ptr (Handle Triangulation) -> IO Int
+ OpenCascade.Poly.Triangulation: new :: Int -> Int -> Bool -> Bool -> Acquire (Ptr (Handle Triangulation))
+ OpenCascade.Poly.Triangulation: node :: Ptr (Handle Triangulation) -> Int -> Acquire (Ptr Pnt)
+ OpenCascade.Poly.Triangulation: setNode :: Ptr (Handle Triangulation) -> Int -> Ptr Pnt -> IO ()
+ OpenCascade.Poly.Triangulation: setTriangle :: Ptr (Handle Triangulation) -> Int -> Ptr Triangle -> IO ()
+ OpenCascade.Poly.Triangulation: triangle :: Ptr (Handle Triangulation) -> Int -> Acquire (Ptr Triangle)
+ OpenCascade.Poly.Types: data Triangle
+ OpenCascade.Poly.Types: data Triangulation
+ OpenCascade.RWGltf.CafReader: data CafReader
+ OpenCascade.RWGltf.CafReader: new :: Acquire (Ptr CafReader)
+ OpenCascade.RWGltf.CafReader: setDoublePrecision :: Ptr CafReader -> Bool -> IO ()
+ OpenCascade.RWGltf.Internal.Destructors: deleteCafReader :: Ptr CafReader -> IO ()
+ OpenCascade.RWGltf.Types: data CafReader
+ OpenCascade.RWGltf.Types: instance OpenCascade.Inheritance.SubTypeOf OpenCascade.RWMesh.Types.CafReader OpenCascade.RWGltf.Types.CafReader
+ OpenCascade.RWMesh.CafReader: data CafReader
+ OpenCascade.RWMesh.CafReader: perform :: Ptr CafReader -> String -> Ptr ProgressRange -> IO Bool
+ OpenCascade.RWMesh.CafReader: setDocument :: Ptr CafReader -> Ptr (Handle Document) -> IO ()
+ OpenCascade.RWMesh.CafReader: setFileLengthUnit :: Ptr CafReader -> Double -> IO ()
+ OpenCascade.RWMesh.CafReader: singleShape :: Ptr CafReader -> Acquire (Ptr Shape)
+ OpenCascade.RWMesh.Types: data CafReader
+ OpenCascade.RWObj.CafReader: data CafReader
+ OpenCascade.RWObj.CafReader: new :: Acquire (Ptr CafReader)
+ OpenCascade.RWObj.CafReader: setSinglePrecision :: Ptr CafReader -> Bool -> IO ()
+ OpenCascade.RWObj.CafWriter: data CafWriter
+ OpenCascade.RWObj.CafWriter: new :: String -> Acquire (Ptr CafWriter)
+ OpenCascade.RWObj.CafWriter: perform :: Ptr CafWriter -> Ptr (Handle Document) -> Ptr IndexedDataMapOfStringString -> Ptr ProgressRange -> IO ()
+ OpenCascade.RWObj.Internal.Destructors: deleteCafReader :: Ptr CafReader -> IO ()
+ OpenCascade.RWObj.Internal.Destructors: deleteCafWriter :: Ptr CafWriter -> IO ()
+ OpenCascade.RWObj.Types: data CafReader
+ OpenCascade.RWObj.Types: data CafWriter
+ OpenCascade.RWObj.Types: instance OpenCascade.Inheritance.SubTypeOf OpenCascade.RWMesh.Types.CafReader OpenCascade.RWObj.Types.CafReader
+ OpenCascade.STEPControl.Internal.Destructors: deleteReader :: Ptr Reader -> IO ()
+ OpenCascade.STEPControl.Reader: data Reader
+ OpenCascade.STEPControl.Reader: new :: Acquire (Ptr Reader)
+ OpenCascade.STEPControl.Types: data Reader
+ OpenCascade.STEPControl.Types: instance OpenCascade.Inheritance.SubTypeOf OpenCascade.XSControl.Types.Reader OpenCascade.STEPControl.Types.Reader
+ OpenCascade.ShapeExtend.Status: DONE :: Status
+ OpenCascade.ShapeExtend.Status: DONE1 :: Status
+ OpenCascade.ShapeExtend.Status: DONE2 :: Status
+ OpenCascade.ShapeExtend.Status: DONE3 :: Status
+ OpenCascade.ShapeExtend.Status: DONE4 :: Status
+ OpenCascade.ShapeExtend.Status: DONE5 :: Status
+ OpenCascade.ShapeExtend.Status: DONE6 :: Status
+ OpenCascade.ShapeExtend.Status: DONE7 :: Status
+ OpenCascade.ShapeExtend.Status: DONE8 :: Status
+ OpenCascade.ShapeExtend.Status: FAIL :: Status
+ OpenCascade.ShapeExtend.Status: FAIL1 :: Status
+ OpenCascade.ShapeExtend.Status: FAIL2 :: Status
+ OpenCascade.ShapeExtend.Status: FAIL3 :: Status
+ OpenCascade.ShapeExtend.Status: FAIL4 :: Status
+ OpenCascade.ShapeExtend.Status: FAIL5 :: Status
+ OpenCascade.ShapeExtend.Status: FAIL6 :: Status
+ OpenCascade.ShapeExtend.Status: FAIL7 :: Status
+ OpenCascade.ShapeExtend.Status: FAIL8 :: Status
+ OpenCascade.ShapeExtend.Status: OK :: Status
+ OpenCascade.ShapeExtend.Status: data Status
+ OpenCascade.ShapeExtend.Status: instance GHC.Classes.Eq OpenCascade.ShapeExtend.Status.Status
+ OpenCascade.ShapeExtend.Status: instance GHC.Enum.Enum OpenCascade.ShapeExtend.Status.Status
+ OpenCascade.ShapeExtend.Status: instance GHC.Show.Show OpenCascade.ShapeExtend.Status.Status
+ OpenCascade.ShapeFix.Internal.Destructors: deleteSolid :: Ptr Solid -> IO ()
+ OpenCascade.ShapeFix.Solid: data Solid
+ OpenCascade.ShapeFix.Solid: fromSolid :: Ptr Solid -> Acquire (Ptr Solid)
+ OpenCascade.ShapeFix.Solid: new :: Acquire (Ptr Solid)
+ OpenCascade.ShapeFix.Solid: perform :: Ptr Solid -> Ptr ProgressRange -> IO Bool
+ OpenCascade.ShapeFix.Solid: solid :: Ptr Solid -> Acquire (Ptr Shape)
+ OpenCascade.ShapeFix.Solid: solidFromShell :: Ptr Solid -> Ptr Shell -> Acquire (Ptr Solid)
+ OpenCascade.ShapeFix.Solid: status :: Ptr Solid -> Status -> IO Bool
+ OpenCascade.ShapeFix.Types: data Solid
+ OpenCascade.StlAPI.Internal.Destructors: deleteReader :: Ptr Reader -> IO ()
+ OpenCascade.StlAPI.Reader: data Reader
+ OpenCascade.StlAPI.Reader: new :: Acquire (Ptr Reader)
+ OpenCascade.StlAPI.Reader: read :: Ptr Reader -> Ptr Shape -> String -> IO Bool
+ OpenCascade.StlAPI.Types: data Reader
+ OpenCascade.StlAPI.Writer: data Writer
+ OpenCascade.TopAbs.Orientation: instance GHC.Classes.Eq OpenCascade.TopAbs.Orientation.Orientation
+ OpenCascade.TopoDS.Builder: add :: Ptr Builder -> Ptr Shape -> Ptr Shape -> IO ()
+ OpenCascade.TopoDS.Builder: data Builder
+ OpenCascade.TopoDS.Builder: makeCompSolid :: Ptr Builder -> Ptr CompSolid -> IO ()
+ OpenCascade.TopoDS.Builder: makeCompound :: Ptr Builder -> Ptr Compound -> IO ()
+ OpenCascade.TopoDS.Builder: makeShell :: Ptr Builder -> Ptr Shell -> IO ()
+ OpenCascade.TopoDS.Builder: makeSolid :: Ptr Builder -> Ptr Solid -> IO ()
+ OpenCascade.TopoDS.Builder: makeWire :: Ptr Builder -> Ptr Wire -> IO ()
+ OpenCascade.TopoDS.Builder: new :: Acquire (Ptr Builder)
+ OpenCascade.TopoDS.Builder: remove :: Ptr Builder -> Ptr Shape -> Ptr Shape -> IO ()
+ OpenCascade.TopoDS.Internal.Destructors: deleteBuilder :: Ptr Builder -> IO ()
+ OpenCascade.TopoDS.Types: data Builder
+ OpenCascade.XSControl.Reader: data Reader
+ OpenCascade.XSControl.Reader: oneShape :: Ptr Reader -> Acquire (Ptr Shape)
+ OpenCascade.XSControl.Reader: readFile :: Ptr Reader -> String -> IO ReturnStatus
+ OpenCascade.XSControl.Reader: transferRoots :: Ptr Reader -> IO Bool
+ OpenCascade.XSControl.Types: data Reader
Files
- CHANGELOG.md +26/−0
- README.md +2/−0
- cpp/hs_BRepBuilderAPI_Copy.cpp +6/−0
- cpp/hs_BRepBuilderAPI_Copy.h +19/−0
- cpp/hs_BRepBuilderAPI_MakePolygon.cpp +8/−0
- cpp/hs_BRepBuilderAPI_MakePolygon.h +16/−0
- cpp/hs_BRepBuilderAPI_Sewing.cpp +40/−0
- cpp/hs_BRepBuilderAPI_Sewing.h +32/−0
- cpp/hs_BRepLib.cpp +6/−0
- cpp/hs_BRepLib.h +16/−0
- cpp/hs_BRep_Tool.cpp +4/−0
- cpp/hs_BRep_Tool.h +2/−0
- cpp/hs_GC_MakeArcOfCircle.cpp +1/−0
- cpp/hs_Poly_Triangle.cpp +18/−0
- cpp/hs_Poly_Triangle.h +22/−0
- cpp/hs_Poly_Triangulation.cpp +35/−0
- cpp/hs_Poly_Triangulation.h +30/−0
- cpp/hs_RWGltf_CafReader.cpp +14/−0
- cpp/hs_RWGltf_CafReader.h +20/−0
- cpp/hs_RWMesh_CafReader.cpp +18/−0
- cpp/hs_RWMesh_CafReader.h +22/−0
- cpp/hs_RWObj_CafReader.cpp +14/−0
- cpp/hs_RWObj_CafReader.h +20/−0
- cpp/hs_RWObj_CafWriter.cpp +14/−0
- cpp/hs_RWObj_CafWriter.h +20/−0
- cpp/hs_STEPControl_Reader.cpp +10/−0
- cpp/hs_STEPControl_Reader.h +18/−0
- cpp/hs_ShapeFix_Solid.cpp +32/−0
- cpp/hs_ShapeFix_Solid.h +28/−0
- cpp/hs_StlAPI_Reader.cpp +18/−0
- cpp/hs_StlAPI_Reader.h +22/−0
- cpp/hs_StlAPI_Writer.cpp +8/−12
- cpp/hs_TopoDS_Builder.cpp +44/−0
- cpp/hs_TopoDS_Builder.h +34/−0
- cpp/hs_XSControl_Reader.cpp +14/−0
- cpp/hs_XSControl_Reader.h +20/−0
- cpp/hs_types.h +13/−0
- opencascade-hs.cabal +57/−1
- src/OpenCascade/BRep/Tool.hs +11/−3
- src/OpenCascade/BRepBuilderAPI/Copy.hs +16/−0
- src/OpenCascade/BRepBuilderAPI/Internal/Destructors.hs +2/−0
- src/OpenCascade/BRepBuilderAPI/MakePolygon.hs +18/−0
- src/OpenCascade/BRepBuilderAPI/MakeSolid.hs +1/−1
- src/OpenCascade/BRepBuilderAPI/Sewing.hs +55/−0
- src/OpenCascade/BRepBuilderAPI/Types.hs +3/−0
- src/OpenCascade/BRepLib.hs +14/−0
- src/OpenCascade/GProp/GProps.hs +1/−1
- src/OpenCascade/IFSelect/ReturnStatus.hs +1/−1
- src/OpenCascade/Poly/Internal/Destructors.hs +13/−0
- src/OpenCascade/Poly/Triangle.hs +28/−0
- src/OpenCascade/Poly/Triangulation.hs +56/−0
- src/OpenCascade/Poly/Types.hs +8/−0
- src/OpenCascade/RWGltf/CafReader.hs +24/−0
- src/OpenCascade/RWGltf/Internal/Destructors.hs +2/−0
- src/OpenCascade/RWGltf/Types.hs +8/−0
- src/OpenCascade/RWMesh/CafReader.hs +39/−0
- src/OpenCascade/RWMesh/Types.hs +6/−0
- src/OpenCascade/RWObj/CafReader.hs +24/−0
- src/OpenCascade/RWObj/CafWriter.hs +23/−0
- src/OpenCascade/RWObj/Internal/Destructors.hs +12/−0
- src/OpenCascade/RWObj/Types.hs +14/−0
- src/OpenCascade/STEPControl/Internal/Destructors.hs +2/−0
- src/OpenCascade/STEPControl/Reader.hs +16/−0
- src/OpenCascade/STEPControl/Types.hs +7/−0
- src/OpenCascade/ShapeExtend/Status.hs +25/−0
- src/OpenCascade/ShapeFix/Internal/Destructors.hs +7/−0
- src/OpenCascade/ShapeFix/Solid.hs +53/−0
- src/OpenCascade/ShapeFix/Types.hs +6/−0
- src/OpenCascade/StlAPI/Internal/Destructors.hs +2/−0
- src/OpenCascade/StlAPI/Reader.hs +25/−0
- src/OpenCascade/StlAPI/Types.hs +2/−0
- src/OpenCascade/StlAPI/Writer.hs +2/−1
- src/OpenCascade/TopAbs/Orientation.hs +1/−1
- src/OpenCascade/TopoDS/Builder.hs +36/−0
- src/OpenCascade/TopoDS/Internal/Destructors.hs +2/−0
- src/OpenCascade/TopoDS/Types.hs +3/−0
- src/OpenCascade/XSControl/Reader.hs +34/−0
- src/OpenCascade/XSControl/Types.hs +6/−0
CHANGELOG.md view
@@ -8,6 +8,32 @@ ## Unreleased +## 0.2.2.0++### Fixed++- Fix `OpenCascade.GProps.fromSystemLocation`++### Added ++- Added OpenCascade.StlAPI.Reader+- Added OpenCascade.ShapeFix.Solid+- Added OpenCascade.ShapeExtend.Status+- Added OpenCascade.STEPControl.Reader+- Added OpenCascade.XSControl.Reader+- Added OpenCascade.RWGltf.CafReader+- Added OpenCascade.RWMesh.CafReader+- Added OpenCascade.TopoDS.Builder+- Added OpenCascade.BRepBuilderAPI.Copy+- Added OpenCascade.BRepBuilderAPI.Sewing+- Added OpenCascade.Poly.Triangulation+- Added OpenCascade.Poly.Triangle+- Added OpenCascade.BRep.Tool.triangulation+- Added OpenCascade.BRepBuilderAPI.MakePolygon+- Added OpenCascade.RWObj.CafWriter+- Added OpenCascade.RWObj.CafReader+- Added OpenCascade.BRepLib (orientClosedSolid)+ ## 0.2.1.0 ### Added
README.md view
@@ -1,5 +1,7 @@ # OpenCASCADE-hs ++ A third party Haskell wrapper to [Open CASCADE](https://dev.opencascade.org) ([wiki](https://en.wikipedia.org/wiki/Open_Cascade_Technology)), which is the underlying framework behind [FreeCAD](https://www.freecad.org/). The API is only partially complete, and largely consists of the modeling functionality (BRep/Boolean Ops/Curves/etc), ignoring the visualization components.
+ cpp/hs_BRepBuilderAPI_Copy.cpp view
@@ -0,0 +1,6 @@+#include <BRepBuilderAPI_Copy.hxx>+#include "hs_BRepBuilderAPI_Copy.h"++TopoDS_Shape * hs_BRepBuilderAPI_Copy_copy(TopoDS_Shape *shape, bool copyGeom, bool copyMesh){+ return new TopoDS_Shape(BRepBuilderAPI_Copy(*shape, copyGeom, copyMesh).Shape());+}
+ cpp/hs_BRepBuilderAPI_Copy.h view
@@ -0,0 +1,19 @@++#ifndef HS_BREPBUILDERAPI_COPY_H+#define HS_BREPBUILDERAPI_COPY_H++#include "hs_types.h"++#ifdef __cplusplus+extern "C" {+#endif++TopoDS_Shape * hs_BRepBuilderAPI_Copy_copy(TopoDS_Shape *shape, bool copyGeom, bool copyMesh);++#ifdef __cplusplus+}+#endif++#endif // BREPBUILDERAPI_COPY++
+ cpp/hs_BRepBuilderAPI_MakePolygon.cpp view
@@ -0,0 +1,8 @@+#include <BRepBuilderAPI_MakePolygon.hxx>+#include <TopoDS_Wire.hxx>+#include "hs_BRepBuilderAPI_MakePolygon.h"++TopoDS_Wire * hs_BRepBuilderAPI_MakePolygon_from3Pnts(gp_Pnt * n1, gp_Pnt *n2, gp_Pnt * n3, bool close){+ auto builder = BRepBuilderAPI_MakePolygon(*n1, *n2, *n3, close);+ return new TopoDS_Wire(builder.Wire());+}
+ cpp/hs_BRepBuilderAPI_MakePolygon.h view
@@ -0,0 +1,16 @@+#ifndef HS_BREPBUILDERAPI_MAKEPOLYGON_H+#define HS_BREPBUILDERAPI_MAKEPOLYGON_H++#include "hs_types.h"++#ifdef __cplusplus+ extern "C" {+#endif++TopoDS_Wire * hs_BRepBuilderAPI_MakePolygon_from3Pnts(gp_Pnt * n1, gp_Pnt *n2, gp_Pnt * n3, bool close);++#ifdef __cplusplus+ }+#endif++#endif // HS_BREPBUILDERAPI_MAKEPOLYGON_H
+ cpp/hs_BRepBuilderAPI_Sewing.cpp view
@@ -0,0 +1,40 @@+#include <BRepBuilderAPI_Sewing.hxx>+#include "hs_BRepBuilderAPI_Sewing.h"++BRepBuilderAPI_Sewing * hs_new_BRepBuilderAPI_Sewing(double tolerance , bool option1, bool option2, bool option3, bool option4){+ return new BRepBuilderAPI_Sewing(tolerance, option1, option2, option3, option4);+}++void hs_delete_BRepBuilderAPI_Sewing(BRepBuilderAPI_Sewing * builder){+ delete builder;+}++void hs_BRepBuilderAPI_Sewing_load(BRepBuilderAPI_Sewing * builder, TopoDS_Shape * shape){+ builder->Load(*shape);+}++void hs_BRepBuilderAPI_Sewing_add(BRepBuilderAPI_Sewing * builder, TopoDS_Shape * shape){+ builder->Add(*shape);+}++void hs_BRepBuilderAPI_Sewing_perform(BRepBuilderAPI_Sewing * builder){+ builder->Perform();+}++TopoDS_Shape * hs_BRepBuilderAPI_Sewing_sewedShape(BRepBuilderAPI_Sewing * builder){+ return new TopoDS_Shape(builder->SewedShape());+}+++int hs_BRepBuilderAPI_Sewing_nbFreeEdges(BRepBuilderAPI_Sewing * builder){+ return builder->NbFreeEdges();+}+++int hs_BRepBuilderAPI_Sewing_nbContigousEdges(BRepBuilderAPI_Sewing * builder){+ return builder->NbContigousEdges();+}++int hs_BRepBuilderAPI_Sewing_nbMultipleEdges(BRepBuilderAPI_Sewing * builder){+ return builder->NbMultipleEdges();+}
+ cpp/hs_BRepBuilderAPI_Sewing.h view
@@ -0,0 +1,32 @@+#ifndef HS_BREPBUILDERAPI_SEWING_H+#define HS_BREPBUILDERAPI_SEWING_H++#include "hs_types.h"++#ifdef __cplusplus+extern "C" {+#endif++BRepBuilderAPI_Sewing * hs_new_BRepBuilderAPI_Sewing(double tolerance , bool option1, bool option2, bool option3, bool option4);++void hs_delete_BRepBuilderAPI_Sewing(BRepBuilderAPI_Sewing * builder);++void hs_BRepBuilderAPI_Sewing_load(BRepBuilderAPI_Sewing * builder, TopoDS_Shape * shape);++void hs_BRepBuilderAPI_Sewing_add(BRepBuilderAPI_Sewing * builder, TopoDS_Shape * shape);++void hs_BRepBuilderAPI_Sewing_perform(BRepBuilderAPI_Sewing * builder);++TopoDS_Shape * hs_BRepBuilderAPI_Sewing_sewedShape(BRepBuilderAPI_Sewing * builder);++int hs_BRepBuilderAPI_Sewing_nbFreeEdges(BRepBuilderAPI_Sewing * builder);++int hs_BRepBuilderAPI_Sewing_nbContigousEdges(BRepBuilderAPI_Sewing * builder);++int hs_BRepBuilderAPI_Sewing_nbMultipleEdges(BRepBuilderAPI_Sewing * builder);++#ifdef __cplusplus+}+#endif++#endif // HS_BREPBUILDERAPI_SEWING_H
+ cpp/hs_BRepLib.cpp view
@@ -0,0 +1,6 @@+#include <BRepLib.hxx>+#include "hs_BRepLib.h"++bool hs_BRepLib_orientClosedSolid(TopoDS_Solid * solid){+ return BRepLib::OrientClosedSolid(*solid);+}
+ cpp/hs_BRepLib.h view
@@ -0,0 +1,16 @@+#ifndef HS_BREPLIB_H+#define HS_BREPLIB_H++#include "hs_types.h"++#ifdef __cplusplus+extern "C" {+#endif++bool hs_BRepLib_orientClosedSolid(TopoDS_Solid * solid);++#ifdef __cplusplus+}+#endif++#endif // HS_BREPLIB_H
cpp/hs_BRep_Tool.cpp view
@@ -19,4 +19,8 @@ return e; } +Handle(Poly_Triangulation) * hs_BRep_Tool_triangulation(TopoDS_Face * face, TopLoc_Location * loc){+ return new opencascade::handle<Poly_Triangulation>(BRep_Tool::Triangulation(*face, *loc));+}+
cpp/hs_BRep_Tool.h view
@@ -13,6 +13,8 @@ double hs_BRep_Tool_curveParamLast(TopoDS_Edge * edge); +Handle(Poly_Triangulation) * hs_BRep_Tool_triangulation(TopoDS_Face * face, TopLoc_Location * loc);+ #ifdef __cplusplus } #endif
cpp/hs_GC_MakeArcOfCircle.cpp view
@@ -8,3 +8,4 @@ Handle(Geom_TrimmedCurve) * hs_GC_MakeArcOfCircle_fromPntsAndVec(gp_Pnt * a, gp_Vec * b, gp_Pnt * c){ return new opencascade::handle(GC_MakeArcOfCircle(*a, *b, *c).Value()); }+
+ cpp/hs_Poly_Triangle.cpp view
@@ -0,0 +1,18 @@+#include <Poly_Triangle.hxx>+#include "hs_Poly_Triangle.h"++Poly_Triangle * hs_new_Poly_Triangle_fromIndices(int n1, int n2, int n3){+ return new Poly_Triangle(n1, n2, n3);+}++void hs_delete_Poly_Triangle(Poly_Triangle * triangle){+ delete triangle;+}++int hs_Poly_Triangle_value(Poly_Triangle * triangle, int index){+ return triangle->Value(index);+}++void hs_Poly_Triangle_setValue(Poly_Triangle * triangle, int index, int node){+ triangle->Set(index, node);+}
+ cpp/hs_Poly_Triangle.h view
@@ -0,0 +1,22 @@+#ifndef HS_POLY_TRIANGLE_H+#define HS_POLY_TRIANGLE_H++#include "hs_types.h"++#ifdef __cplusplus+extern "C" {+#endif++Poly_Triangle * hs_new_Poly_Triangle_fromIndices(int n1, int n2, int n3);++void hs_delete_Poly_Triangle(Poly_Triangle * triangle);++int hs_Poly_Triangle_value(Poly_Triangle * triangle, int index);++void hs_Poly_Triangle_setValue(Poly_Triangle * triangle, int index, int node);++#ifdef __cplusplus+}+#endif++#endif // HS_POLY_TRIANGLE_H
+ cpp/hs_Poly_Triangulation.cpp view
@@ -0,0 +1,35 @@+#include <Poly_Triangulation.hxx>+#include "hs_Poly_Triangulation.h"++Handle(Poly_Triangulation) * hs_new_Poly_Triangulation(int nbNodes, int nbTriangles, bool hasUVNodes, bool hasNormals){+ return new opencascade::handle<Poly_Triangulation>(new Poly_Triangulation(nbNodes, nbTriangles, hasUVNodes, hasNormals));+}++void hs_delete_Poly_Triangulation(Handle(Poly_Triangulation) * triangulation){+ delete triangulation;+}++int hs_Poly_Triangulation_nbNodes(Handle(Poly_Triangulation) * triangulation){+ return triangulation->get()->NbNodes();+}++int hs_Poly_Triangulation_nbTriangles(Handle(Poly_Triangulation) * triangulation){+ return triangulation->get()->NbTriangles();+}+++gp_Pnt * hs_Poly_Triangulation_node(Handle(Poly_Triangulation) * triangulation, int index){+ return new gp_Pnt(triangulation->get()->Node(index));+}++void hs_Poly_Triangulation_setNode(Handle(Poly_Triangulation) * triangulation, int index, gp_Pnt * pnt){+ triangulation->get()->SetNode(index, *pnt);+}++Poly_Triangle * hs_Poly_Triangulation_triangle(Handle(Poly_Triangulation) * triangulation, int index){+ return new Poly_Triangle(triangulation->get()->Triangle(index));+}++void hs_Poly_Triangulation_setTriangle(Handle(Poly_Triangulation) * triangulation, int index, Poly_Triangle * triangle){+ triangulation->get()->SetTriangle(index, *triangle);+}
+ cpp/hs_Poly_Triangulation.h view
@@ -0,0 +1,30 @@+#ifndef HS_POLY_TRIANGULATION_H+#define HS_POLY_TRIANGULATION_H++#include "hs_types.h"++#ifdef __cplusplus+extern "C" {+#endif++Handle(Poly_Triangulation) * hs_new_Poly_Triangulation(int nbNodes, int nbTriangles, bool hasUVNodes, bool hasNormals);++void hs_delete_Poly_Triangulation(Handle(Poly_Triangulation) * triangulation);++int hs_Poly_Triangulation_nbNodes(Handle(Poly_Triangulation) * triangulation);++int hs_Poly_Triangulation_nbTriangles(Handle(Poly_Triangulation) * triangulation);++gp_Pnt * hs_Poly_Triangulation_node(Handle(Poly_Triangulation) * triangulation, int index);++void hs_Poly_Triangulation_setNode(Handle(Poly_Triangulation) * triangulation, int index, gp_Pnt * pnt);++Poly_Triangle * hs_Poly_Triangulation_triangle(Handle(Poly_Triangulation) * triangulation, int index);++void hs_Poly_Triangulation_setTriangle(Handle(Poly_Triangulation) * triangulation, int index, Poly_Triangle * triangle);++#ifdef __cplusplus+}+#endif++#endif // HS_POLY_TRIANGULATION_H
+ cpp/hs_RWGltf_CafReader.cpp view
@@ -0,0 +1,14 @@+#include <RWGltf_CafReader.hxx>+#include "hs_RWGltf_CafReader.h"++RWGltf_CafReader * hs_new_RWGltf_CafReader(void){+ return new RWGltf_CafReader();+}++void hs_RWGltf_CafReader_setDoublePrecision(RWGltf_CafReader *reader, bool isDouble){+ reader->SetDoublePrecision(isDouble);+}++void hs_delete_RWGltf_CafReader(RWGltf_CafReader *reader){+ delete reader;+}
+ cpp/hs_RWGltf_CafReader.h view
@@ -0,0 +1,20 @@+#ifndef HS_RWGLTF_CAFREADER_H+#define HS_RWGLTF_CAFREADER_H++#include "hs_types.h"++#ifdef __cplusplus+extern "C" {+#endif++RWGltf_CafReader * hs_new_RWGltf_CafReader(void);++void hs_RWGltf_CafReader_setDoublePrecision(RWGltf_CafReader *reader, bool isDouble);++void hs_delete_RWGltf_CafReader(RWGltf_CafReader *reader);++#ifdef __cplusplus+}+#endif++#endif // HS_RWGLTF_CAFREADER_H
+ cpp/hs_RWMesh_CafReader.cpp view
@@ -0,0 +1,18 @@+#include <RWMesh_CafReader.hxx>+#include "hs_RWMesh_CafReader.h"++void hs_RWMesh_CafReader_setDocument(RWMesh_CafReader * reader, Handle(TDocStd_Document) * document){+ reader->SetDocument(*document);+}++void hs_RWMesh_CafReader_setFileLengthUnit(RWMesh_CafReader * reader, double scale){+ reader->SetFileLengthUnit(scale);+}++TopoDS_Shape * hs_RWMesh_CafReader_singleShape(RWMesh_CafReader * reader){+ return new TopoDS_Shape(reader->SingleShape());+}++bool hs_RWMesh_CafReader_perform(RWMesh_CafReader * reader, char * filename, Message_ProgressRange * progress){+ return reader->Perform(filename, *progress);+}
+ cpp/hs_RWMesh_CafReader.h view
@@ -0,0 +1,22 @@+#ifndef HS_RWMESH_CAFREADER_H+#define HS_RWMESH_CAFREADER_H++#include "hs_types.h"++#ifdef __cplusplus+extern "C" {+#endif++void hs_RWMesh_CafReader_setDocument(RWMesh_CafReader * reader, Handle(TDocStd_Document) * document);++void hs_RWMesh_CafReader_setFileLengthUnit(RWMesh_CafReader * reader, double scale);++TopoDS_Shape * hs_RWMesh_CafReader_singleShape(RWMesh_CafReader * reader);++bool hs_RWMesh_CafReader_perform(RWMesh_CafReader * reader, char * filename, Message_ProgressRange * progress);++#ifdef __cplusplus+}+#endif++#endif // HS_RWMESH_CAFREADER_H
+ cpp/hs_RWObj_CafReader.cpp view
@@ -0,0 +1,14 @@+#include <RWObj_CafReader.hxx>+#include "hs_RWObj_CafReader.h"++RWObj_CafReader * hs_new_RWObj_CafReader(void){+ return new RWObj_CafReader();+}++void hs_RWObj_CafReader_setSinglePrecision(RWObj_CafReader *reader, bool isSingle){+ reader->SetSinglePrecision(isSingle);+}++void hs_delete_RWObj_CafReader(RWObj_CafReader *reader){+ delete reader;+}
+ cpp/hs_RWObj_CafReader.h view
@@ -0,0 +1,20 @@+#ifndef HS_RWOBJ_CAFREADER_H+#define HS_RWOBJ_CAFREADER_H++#include "hs_types.h"++#ifdef __cplusplus+extern "C" {+#endif++RWObj_CafReader * hs_new_RWObj_CafReader(void);++void hs_RWObj_CafReader_setSinglePrecision(RWObj_CafReader *reader, bool isSingle);++void hs_delete_RWObj_CafReader(RWObj_CafReader *reader);++#ifdef __cplusplus+}+#endif++#endif // HS_RWOBJ_CAFREADER_H
+ cpp/hs_RWObj_CafWriter.cpp view
@@ -0,0 +1,14 @@+#include <RWObj_CafWriter.hxx>+#include "hs_RWObj_CafWriter.h"++RWObj_CafWriter * hs_new_RWObj_CafWriter(char * filename){+ return new RWObj_CafWriter(filename);+}++void hs_delete_RWObj_CafWriter(RWObj_CafWriter * writer){+ delete writer;+}++void hs_RWObj_CafWriter_Perform(RWObj_CafWriter * theWriter, Handle(TDocStd_Document) * theDocument, TColStd_IndexedDataMapOfStringString * theFileInfo, Message_ProgressRange * theProgress){+ theWriter->Perform(*theDocument, *theFileInfo, *theProgress);+}
+ cpp/hs_RWObj_CafWriter.h view
@@ -0,0 +1,20 @@+#ifndef HS_RWOBJ_CAFWRITER_H+#define HS_RWOBJ_CAFWRITER_H++#include "hs_types.h"++#ifdef __cplusplus+ extern "C" {+#endif++RWObj_CafWriter * hs_new_RWObj_CafWriter(char * theFile);++void hs_delete_RWObj_CafWriter(RWObj_CafWriter * theWriter);++void hs_RWObj_CafWriter_Perform(RWObj_CafWriter * theWriter, Handle(TDocStd_Document) * theDocument, TColStd_IndexedDataMapOfStringString * theFileInfo, Message_ProgressRange * theProgress);++#ifdef __cplusplus+ }+#endif++#endif // HS_RWOBJ_CAFWRITER_H
+ cpp/hs_STEPControl_Reader.cpp view
@@ -0,0 +1,10 @@+#include <STEPControl_Reader.hxx>+#include "hs_STEPControl_Reader.h"++STEPControl_Reader * hs_new_STEPControl_Reader(void){+ return new STEPControl_Reader();+}++void hs_delete_STEPControl_Reader(STEPControl_Reader * reader){+ delete reader;+}
+ cpp/hs_STEPControl_Reader.h view
@@ -0,0 +1,18 @@+#ifndef HS_STEPCONTROL_READER_H+#define HS_STEPCONTROL_READER_H++#include "hs_types.h"++#ifdef __cplusplus+extern "C" {+#endif++STEPControl_Reader * hs_new_STEPControl_Reader(void);++void hs_delete_STEPControl_Reader(STEPControl_Reader * reader);++#ifdef __cplusplus+}+#endif++#endif // HS_STEPCONTROL_READER_H
+ cpp/hs_ShapeFix_Solid.cpp view
@@ -0,0 +1,32 @@+#include <Message_ProgressRange.hxx>+#include <ShapeFix_Solid.hxx>+#include <TopoDS_Solid.hxx>+#include "hs_ShapeFix_Solid.h"++ShapeFix_Solid * hs_new_ShapeFix_Solid(){+ return new ShapeFix_Solid();+}++ShapeFix_Solid * hs_new_ShapeFix_Solid_fromSolid(TopoDS_Solid * solid){+ return new ShapeFix_Solid(*solid);+}++void hs_delete_ShapeFix_Solid(ShapeFix_Solid * shapeFix){+ delete shapeFix;+}++TopoDS_Solid * hs_ShapeFix_Solid_solidFromShell(ShapeFix_Solid * shapeFix, TopoDS_Shell * shell){+ return new TopoDS_Solid(shapeFix->SolidFromShell(*shell));+}++bool hs_ShapeFix_Solid_perform(ShapeFix_Solid * shapeFix, Message_ProgressRange * progress){+ return shapeFix->Perform(*progress);+}++TopoDS_Shape * hs_ShapeFix_Solid_solid(ShapeFix_Solid * shapeFix){+ return new TopoDS_Shape(shapeFix->Solid());+}++bool hs_ShapeFix_Solid_status(ShapeFix_Solid * shapeFix, ShapeExtend_Status status){+ return shapeFix->Status(status);+}
+ cpp/hs_ShapeFix_Solid.h view
@@ -0,0 +1,28 @@+#ifndef HS_SHAPEFIX_SOLID_H+#define HS_SHAPEFIX_SOLID_H++#include "hs_types.h"++#ifdef __cplusplus+extern "C" {+#endif++ShapeFix_Solid * hs_new_ShapeFix_Solid();++ShapeFix_Solid * hs_new_ShapeFix_Solid_fromSolid(TopoDS_Solid * solid);++void hs_delete_ShapeFix_Solid(ShapeFix_Solid * shapeFix);++TopoDS_Solid * hs_ShapeFix_Solid_solidFromShell(ShapeFix_Solid * shapeFix, TopoDS_Shell * shell);++bool hs_ShapeFix_Solid_perform(ShapeFix_Solid * shapeFix, Message_ProgressRange * progress);++TopoDS_Shape * hs_ShapeFix_Solid_solid(ShapeFix_Solid * shapeFix);++bool hs_ShapeFix_Solid_status(ShapeFix_Solid * shapeFix, ShapeExtend_Status status);++#ifdef __cplusplus+}+#endif++#endif // HS_SHAPEFIX_SOLID_H
+ cpp/hs_StlAPI_Reader.cpp view
@@ -0,0 +1,18 @@+#include <StlAPI_Writer.hxx>+#include "hs_StlAPI_Writer.h"++StlAPI_Writer * hs_new_StlAPI_Writer(){+ return new StlAPI_Writer();+}++void hs_delete_StlAPI_Writer(StlAPI_Writer * writer){+ delete writer;+}++void hs_StlAPI_Writer_setAsciiMode(StlAPI_Writer * writer, bool asciiMode){+ writer->ASCIIMode() = asciiMode;+}++bool hs_StlAPI_Writer_write(StlAPI_Writer * writer, TopoDS_Shape * shape, char* filename){+ return writer->Write(*shape, filename);+}
+ cpp/hs_StlAPI_Reader.h view
@@ -0,0 +1,22 @@++#ifndef HS_STLAPI_READER_H+#define HS_STLAPI_READER_H++#include "hs_types.h"++#ifdef __cplusplus+extern "C" {+#endif+++StlAPI_Reader * hs_new_StlAPI_Reader();++void hs_delete_StlAPI_Reader(StlAPI_Reader * reader);++bool hs_StlAPI_Reader_read(StlAPI_Reader * reader, TopoDS_Shape * shape, char* filename);++#ifdef __cplusplus+}+#endif++#endif // HS_STLAPI_READER_H
cpp/hs_StlAPI_Writer.cpp view
@@ -1,18 +1,14 @@-#include <StlAPI_Writer.hxx>-#include "hs_StlAPI_Writer.h"--StlAPI_Writer * hs_new_StlAPI_Writer(){- return new StlAPI_Writer();-}+#include <StlAPI_Reader.hxx>+#include "hs_StlAPI_Reader.h" -void hs_delete_StlAPI_Writer(StlAPI_Writer * writer){- delete writer;+StlAPI_Reader * hs_new_StlAPI_Reader(){+ return new StlAPI_Reader(); } -void hs_StlAPI_Writer_setAsciiMode(StlAPI_Writer * writer, bool asciiMode){- writer->ASCIIMode() = asciiMode;+void hs_delete_StlAPI_Reader(StlAPI_Reader * reader){+ delete reader; } -bool hs_StlAPI_Writer_write(StlAPI_Writer * writer, TopoDS_Shape * shape, char* filename){- return writer->Write(*shape, filename);+bool hs_StlAPI_Reader_read(StlAPI_Reader * reader, TopoDS_Shape * shape, char* filename){+ return reader->Read(*shape, filename); }
+ cpp/hs_TopoDS_Builder.cpp view
@@ -0,0 +1,44 @@+#include <TopoDS_Builder.hxx>+#include "hs_TopoDS_Builder.h"++TopoDS_Builder * hs_new_TopoDS_Builder(void){+ return new TopoDS_Builder();+}++void hs_delete_TopoDS_Builder(TopoDS_Builder * builder){+ delete builder;+}+++void hs_TopoDS_Builder_makeWire(TopoDS_Builder * builder, TopoDS_Wire * wire){+ builder->MakeWire(*wire);+}+++void hs_TopoDS_Builder_makeShell(TopoDS_Builder * builder, TopoDS_Shell * shell){+ builder->MakeShell(*shell);+}++void hs_TopoDS_Builder_makeSolid(TopoDS_Builder * builder, TopoDS_Solid * solid){+ builder->MakeSolid(*solid);+}++void hs_TopoDS_Builder_makeCompSolid(TopoDS_Builder * builder, TopoDS_CompSolid * solid){+ builder->MakeCompSolid(*solid);+}++void hs_TopoDS_Builder_makeCompound(TopoDS_Builder * builder, TopoDS_Compound * compound){+ builder->MakeCompound(*compound);+}++void hs_TopoDS_Builder_add(TopoDS_Builder * builder, TopoDS_Shape * s, TopoDS_Shape * c){+ builder->Add(*s, *c);+}++void hs_TopoDS_Builder_remove(TopoDS_Builder * builder, TopoDS_Shape * s, TopoDS_Shape * c){+ builder->Remove(*s, *c);+}++++
+ cpp/hs_TopoDS_Builder.h view
@@ -0,0 +1,34 @@+#ifndef HS_TOPODS_BUILDER_H+#define HS_TOPODS_BUILDER_H++#include "hs_types.h"++#ifdef __cplusplus+extern "C" {+#endif++TopoDS_Builder * hs_new_TopoDS_Builder(void);++void hs_delete_TopoDS_Builder(TopoDS_Builder * builder);++void hs_TopoDS_Builder_makeWire(TopoDS_Builder * builder, TopoDS_Wire * wire);++void hs_TopoDS_Builder_makeShell(TopoDS_Builder * builder, TopoDS_Shell * shell);++void hs_TopoDS_Builder_makeSolid(TopoDS_Builder * builder, TopoDS_Solid * solid);++void hs_TopoDS_Builder_makeCompSolid(TopoDS_Builder * builder, TopoDS_CompSolid * solid);++void hs_TopoDS_Builder_makeCompound(TopoDS_Builder * builder, TopoDS_Compound * compound);++void hs_TopoDS_Builder_add(TopoDS_Builder * builder, TopoDS_Shape * s, TopoDS_Shape * c);++void hs_TopoDS_Builder_remove(TopoDS_Builder * builder, TopoDS_Shape * s, TopoDS_Shape * c);++#ifdef __cplusplus+}+#endif++#endif // HS_TOPODS_BUILDER_H++
+ cpp/hs_XSControl_Reader.cpp view
@@ -0,0 +1,14 @@+#include <XSControl_Reader.hxx>+#include "hs_XSControl_Reader.h"++IFSelect_ReturnStatus hs_XSControl_Reader_readFile(XSControl_Reader * reader, char * filename){+ return reader->ReadFile(filename);+}++bool hs_XSControl_Reader_transferRoots(XSControl_Reader * reader){+ return reader->TransferRoots();+}++TopoDS_Shape * hs_XSControl_Reader_oneShape(XSControl_Reader * reader){+ return new TopoDS_Shape(reader->OneShape());+}
+ cpp/hs_XSControl_Reader.h view
@@ -0,0 +1,20 @@+#ifndef HS_XSCONTROL_READER_H+#define HS_XSCONTROL_READER_H++#include "hs_types.h"++#ifdef __cplusplus+extern "C" {+#endif++IFSelect_ReturnStatus hs_XSControl_Reader_readFile(XSControl_Reader * reader, char * filename);++bool hs_XSControl_Reader_transferRoots(XSControl_Reader * reader);++TopoDS_Shape * hs_XSControl_Reader_oneShape(XSControl_Reader * reader);++#ifdef __cplusplus+}+#endif++#endif // HS_XSCONTROL_READER_H
cpp/hs_types.h view
@@ -12,6 +12,7 @@ typedef void TopoDS_CompSolid; typedef void TopoDS_Solid; typedef void TopoDS_Shell;+typedef void TopoDS_Builder; typedef void TopLoc_Location; typedef int TopAbs_Orientation; typedef int TopAbs_ShapeEnum;@@ -35,6 +36,7 @@ typedef void BRepBuilderAPI_MakeFace; typedef void BRepBuilderAPI_MakeSolid; typedef void BRepBuilderAPI_MakeShape;+typedef void BRepBuilderAPI_Sewing; typedef int BRepBuilderAPI_WireError; typedef int BRepBuilderAPI_FaceError; typedef void BRepFilletAPI_MakeFillet;@@ -52,8 +54,11 @@ typedef void BRepOffsetAPI_ThruSections; typedef void BRepMesh_IncrementalMesh; typedef void StlAPI_Writer;+typedef void StlAPI_Reader; typedef void STEPControl_Writer;+typedef void STEPControl_Reader; typedef int STEPControl_StepModelType;+typedef void XSControl_Reader; typedef int IFSelect_ReturnStatus; typedef void Font_BRepFont; typedef void Font_BRepTextBuilder;@@ -68,10 +73,18 @@ typedef void Bnd_OBB; typedef void Message_ProgressRange; typedef void RWGltf_CafWriter;+typedef void RWGltf_CafReader;+typedef void RWObj_CafWriter;+typedef void RWObj_CafReader;+typedef void RWMesh_CafReader; typedef void TColStd_IndexedDataMapOfStringString; typedef void TDF_Label; typedef void TDocStd_Document; typedef void XCAFDoc_ShapeTool;+typedef void ShapeFix_Solid;+typedef int ShapeExtend_Status;+typedef void Poly_Triangulation;+typedef void Poly_Triangle; #define Handle(X) void #define ARRAY_1(X) void #else // __cplusplus
opencascade-hs.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack name: opencascade-hs-version: 0.2.1.0+version: 0.2.2.0 synopsis: Thin Wrapper for the OpenCASCADE CAD Kernel description: Please see the README on GitHub at <https://github.com/joe-warren/opencascade-hs#readme> category: Graphics,FFI@@ -28,15 +28,19 @@ cpp/hs_BRepAlgoAPI_Cut.h cpp/hs_BRepAlgoAPI_Fuse.h cpp/hs_BRepBndLib.h+ cpp/hs_BRepBuilderAPI_Copy.h cpp/hs_BRepBuilderAPI_GTransform.h cpp/hs_BRepBuilderAPI_MakeEdge.h cpp/hs_BRepBuilderAPI_MakeFace.h+ cpp/hs_BRepBuilderAPI_MakePolygon.h cpp/hs_BRepBuilderAPI_MakeShape.h cpp/hs_BRepBuilderAPI_MakeSolid.h cpp/hs_BRepBuilderAPI_MakeWire.h+ cpp/hs_BRepBuilderAPI_Sewing.h cpp/hs_BRepBuilderAPI_Transform.h cpp/hs_BRepFilletAPI_MakeFillet.h cpp/hs_BRepGProp.h+ cpp/hs_BRepLib.h cpp/hs_BRepMesh_IncrementalMesh.h cpp/hs_BRepOffsetAPI_MakeOffsetShape.h cpp/hs_BRepOffsetAPI_MakePipe.h@@ -72,14 +76,24 @@ cpp/hs_GProp_GProps.h cpp/hs_Message_ProgressRange.h cpp/hs_NCollection_Array1.h+ cpp/hs_Poly_Triangle.h+ cpp/hs_Poly_Triangulation.h+ cpp/hs_RWGltf_CafReader.h cpp/hs_RWGltf_CafWriter.h+ cpp/hs_RWMesh_CafReader.h+ cpp/hs_RWObj_CafReader.h+ cpp/hs_RWObj_CafWriter.h+ cpp/hs_ShapeFix_Solid.h+ cpp/hs_STEPControl_Reader.h cpp/hs_STEPControl_Writer.h+ cpp/hs_StlAPI_Reader.h cpp/hs_StlAPI_Writer.h cpp/hs_TColStd_IndexedDataMapOfStringString.h cpp/hs_TDF_Label.h cpp/hs_TDocStd_Document.h cpp/hs_TopExp_Explorer.h cpp/hs_TopLoc_Location.h+ cpp/hs_TopoDS_Builder.h cpp/hs_TopoDS_Compound.h cpp/hs_TopoDS_CompSolid.h cpp/hs_TopoDS_Edge.h@@ -92,6 +106,7 @@ cpp/hs_types.h cpp/hs_XCAFDoc_DocumentTool.h cpp/hs_XCAFDoc_ShapeTool.h+ cpp/hs_XSControl_Reader.h source-repository head type: git@@ -109,14 +124,17 @@ OpenCascade.BRepAlgoAPI.Fuse OpenCascade.BRepBndLib OpenCascade.BRepBuilderAPI+ OpenCascade.BRepBuilderAPI.Copy OpenCascade.BRepBuilderAPI.FaceError OpenCascade.BRepBuilderAPI.GTransform OpenCascade.BRepBuilderAPI.Internal.Destructors OpenCascade.BRepBuilderAPI.MakeEdge OpenCascade.BRepBuilderAPI.MakeFace+ OpenCascade.BRepBuilderAPI.MakePolygon OpenCascade.BRepBuilderAPI.MakeShape OpenCascade.BRepBuilderAPI.MakeSolid OpenCascade.BRepBuilderAPI.MakeWire+ OpenCascade.BRepBuilderAPI.Sewing OpenCascade.BRepBuilderAPI.Transform OpenCascade.BRepBuilderAPI.Types OpenCascade.BRepBuilderAPI.WireError@@ -125,6 +143,7 @@ OpenCascade.BRepFilletAPI.MakeFillet OpenCascade.BRepFilletAPI.Types OpenCascade.BRepGProp+ OpenCascade.BRepLib OpenCascade.BRepMesh OpenCascade.BRepMesh.IncrementalMesh OpenCascade.BRepMesh.Internal.Destructors@@ -194,16 +213,33 @@ OpenCascade.NCollection.Array1 OpenCascade.NCollection.Internal.Destructors OpenCascade.NCollection.Types+ OpenCascade.Poly.Internal.Destructors+ OpenCascade.Poly.Triangle+ OpenCascade.Poly.Triangulation+ OpenCascade.Poly.Types+ OpenCascade.RWGltf.CafReader OpenCascade.RWGltf.CafWriter OpenCascade.RWGltf.Internal.Destructors OpenCascade.RWGltf.Types+ OpenCascade.RWMesh.CafReader+ OpenCascade.RWMesh.Types+ OpenCascade.RWObj.CafReader+ OpenCascade.RWObj.CafWriter+ OpenCascade.RWObj.Internal.Destructors+ OpenCascade.RWObj.Types+ OpenCascade.ShapeExtend.Status+ OpenCascade.ShapeFix.Internal.Destructors+ OpenCascade.ShapeFix.Solid+ OpenCascade.ShapeFix.Types OpenCascade.STEPControl OpenCascade.STEPControl.Internal.Destructors+ OpenCascade.STEPControl.Reader OpenCascade.STEPControl.StepModelType OpenCascade.STEPControl.Types OpenCascade.STEPControl.Writer OpenCascade.StlAPI OpenCascade.StlAPI.Internal.Destructors+ OpenCascade.StlAPI.Reader OpenCascade.StlAPI.Types OpenCascade.StlAPI.Writer OpenCascade.TColStd.IndexedDataMapOfStringString@@ -226,6 +262,7 @@ OpenCascade.TopLoc.Location OpenCascade.TopLoc.Types OpenCascade.TopoDS+ OpenCascade.TopoDS.Builder OpenCascade.TopoDS.Compound OpenCascade.TopoDS.CompSolid OpenCascade.TopoDS.Edge@@ -243,6 +280,8 @@ OpenCascade.XCAFDoc.Internal.Destructors OpenCascade.XCAFDoc.ShapeTool OpenCascade.XCAFDoc.Types+ OpenCascade.XSControl.Reader+ OpenCascade.XSControl.Types other-modules: Paths_opencascade_hs autogen-modules:@@ -262,15 +301,19 @@ cpp/hs_BRepAlgoAPI_Cut.cpp cpp/hs_BRepAlgoAPI_Fuse.cpp cpp/hs_BRepBndLib.cpp+ cpp/hs_BRepBuilderAPI_Copy.cpp cpp/hs_BRepBuilderAPI_GTransform.cpp cpp/hs_BRepBuilderAPI_MakeEdge.cpp cpp/hs_BRepBuilderAPI_MakeFace.cpp+ cpp/hs_BRepBuilderAPI_MakePolygon.cpp cpp/hs_BRepBuilderAPI_MakeShape.cpp cpp/hs_BRepBuilderAPI_MakeSolid.cpp cpp/hs_BRepBuilderAPI_MakeWire.cpp+ cpp/hs_BRepBuilderAPI_Sewing.cpp cpp/hs_BRepBuilderAPI_Transform.cpp cpp/hs_BRepFilletAPI_MakeFillet.cpp cpp/hs_BRepGProp.cpp+ cpp/hs_BRepLib.cpp cpp/hs_BRepMesh_IncrementalMesh.cpp cpp/hs_BRepOffsetAPI_MakeOffsetShape.cpp cpp/hs_BRepOffsetAPI_MakePipe.cpp@@ -306,14 +349,24 @@ cpp/hs_GProp_GProps.cpp cpp/hs_Message_ProgressRange.cpp cpp/hs_NCollection_Array1.cpp+ cpp/hs_Poly_Triangle.cpp+ cpp/hs_Poly_Triangulation.cpp+ cpp/hs_RWGltf_CafReader.cpp cpp/hs_RWGltf_CafWriter.cpp+ cpp/hs_RWMesh_CafReader.cpp+ cpp/hs_RWObj_CafReader.cpp+ cpp/hs_RWObj_CafWriter.cpp+ cpp/hs_ShapeFix_Solid.cpp+ cpp/hs_STEPControl_Reader.cpp cpp/hs_STEPControl_Writer.cpp+ cpp/hs_StlAPI_Reader.cpp cpp/hs_StlAPI_Writer.cpp cpp/hs_TColStd_IndexedDataMapOfStringString.cpp cpp/hs_TDF_Label.cpp cpp/hs_TDocStd_Document.cpp cpp/hs_TopExp_Explorer.cpp cpp/hs_TopLoc_Location.cpp+ cpp/hs_TopoDS_Builder.cpp cpp/hs_TopoDS_Compound.cpp cpp/hs_TopoDS_CompSolid.cpp cpp/hs_TopoDS_Edge.cpp@@ -325,6 +378,7 @@ cpp/hs_TopoDS_Wire.cpp cpp/hs_XCAFDoc_DocumentTool.cpp cpp/hs_XCAFDoc_ShapeTool.cpp+ cpp/hs_XSControl_Reader.cpp extra-libraries: stdc++ TKGeomBase@@ -348,6 +402,8 @@ TKLCAF TKXCAF TKService+ TKShHealing+ TKXSBase build-depends: base >=4.7 && <5 , resourcet >=1.2 && <1.4
src/OpenCascade/BRep/Tool.hs view
@@ -3,21 +3,25 @@ ( curve , curveParamFirst , curveParamLast+, triangulation ) where import qualified OpenCascade.Geom as Geom import qualified OpenCascade.TopoDS as TopoDS++import qualified OpenCascade.TopLoc.Types as TopLoc+import qualified OpenCascade.Poly.Types as Poly+import OpenCascade.Poly.Internal.Destructors (deleteHandleTriangulation) import OpenCascade.Handle (Handle) import OpenCascade.Geom.Internal.Destructors (deleteHandleCurve) import Foreign.Ptr import Foreign.C import Data.Coerce-import Data.Acquire-import qualified Data.Acquire as Data+import Data.Acquire (Acquire, mkAcquire) foreign import capi unsafe "hs_BRep_Tool.h hs_BRep_Tool_curve" rawCurve :: Ptr (TopoDS.Edge) -> IO(Ptr (Handle Geom.Curve)) -curve :: Ptr TopoDS.Edge -> Data.Acquire (Ptr (Handle Geom.Curve))+curve :: Ptr TopoDS.Edge -> Acquire (Ptr (Handle Geom.Curve)) curve edge = mkAcquire (rawCurve edge) deleteHandleCurve foreign import capi unsafe "hs_BRep_Tool.h hs_BRep_Tool_curveParamFirst" rawCurveParamFirst :: Ptr (TopoDS.Edge) -> IO(CDouble)@@ -30,3 +34,7 @@ curveParamLast :: Ptr TopoDS.Edge -> IO Double curveParamLast = coerce rawCurveParamLast +foreign import capi unsafe "hs_BRep_Tool.h hs_BRep_Tool_triangulation" rawTriangulation :: Ptr (TopoDS.Face) -> Ptr TopLoc.Location -> IO(Ptr (Handle Poly.Triangulation))++triangulation :: Ptr TopoDS.Face -> Ptr TopLoc.Location -> Acquire (Ptr (Handle Poly.Triangulation))+triangulation face loc = mkAcquire (rawTriangulation face loc) deleteHandleTriangulation
+ src/OpenCascade/BRepBuilderAPI/Copy.hs view
@@ -0,0 +1,16 @@+{-# LANGUAGE CApiFFI #-}+module OpenCascade.BRepBuilderAPI.Copy+( copy+) where++import qualified OpenCascade.TopoDS as TopoDS+import OpenCascade.Internal.Bool+import qualified OpenCascade.TopoDS.Internal.Destructors as TopoDS.Destructors+import Foreign.C+import Foreign.Ptr+import Data.Acquire ++foreign import capi unsafe "hs_BRepBuilderAPI_Copy.h hs_BRepBuilderAPI_Copy_copy" rawCopy :: Ptr TopoDS.Shape -> CBool -> CBool -> IO (Ptr TopoDS.Shape)++copy :: Ptr TopoDS.Shape -> Bool -> Bool -> Acquire (Ptr TopoDS.Shape)+copy shape copyGeom copyMesh = mkAcquire (rawCopy shape (boolToCBool copyMesh) (boolToCBool copyGeom)) TopoDS.Destructors.deleteShape
src/OpenCascade/BRepBuilderAPI/Internal/Destructors.hs view
@@ -3,6 +3,7 @@ ( deleteMakeWire , deleteMakeFace , deleteMakeSolid+, deleteSewing ) where import OpenCascade.BRepBuilderAPI.Types@@ -12,5 +13,6 @@ foreign import capi unsafe "hs_BRepBuilderAPI_MakeWire.h hs_delete_BRepBuilderAPI_MakeWire" deleteMakeWire :: Ptr MakeWire -> IO () foreign import capi unsafe "hs_BRepBuilderAPI_MakeFace.h hs_delete_BRepBuilderAPI_MakeFace" deleteMakeFace :: Ptr MakeFace -> IO () foreign import capi unsafe "hs_BRepBuilderAPI_MakeSolid.h hs_delete_BRepBuilderAPI_MakeSolid" deleteMakeSolid :: Ptr MakeSolid -> IO ()+foreign import capi unsafe "hs_BRepBuilderAPI_Sewing.h hs_delete_BRepBuilderAPI_Sewing" deleteSewing :: Ptr Sewing -> IO ()
+ src/OpenCascade/BRepBuilderAPI/MakePolygon.hs view
@@ -0,0 +1,18 @@+{-# LANGUAGE CApiFFI #-}+module OpenCascade.BRepBuilderAPI.MakePolygon+( from3Pnts +) where++import qualified OpenCascade.GP as GP+import qualified OpenCascade.TopoDS as TopoDS+import OpenCascade.TopoDS.Internal.Destructors (deleteShape)+import OpenCascade.Inheritance (upcast)+import Foreign.C (CBool (..))+import Foreign.Ptr (Ptr)+import Data.Acquire (Acquire, mkAcquire)+import OpenCascade.Internal.Bool (boolToCBool)++foreign import capi unsafe "hs_BRepBuilderAPI_MakePolygon.h hs_BRepBuilderAPI_MakePolygon_from3Pnts" rawFrom3Pnts :: Ptr GP.Pnt -> Ptr GP.Pnt -> Ptr GP.Pnt -> CBool -> IO (Ptr TopoDS.Wire)++from3Pnts :: Ptr GP.Pnt -> Ptr GP.Pnt -> Ptr GP.Pnt -> Bool -> Acquire (Ptr TopoDS.Wire)+from3Pnts p1 p2 p3 close = mkAcquire (rawFrom3Pnts p1 p2 p3 (boolToCBool close)) (deleteShape . upcast)
src/OpenCascade/BRepBuilderAPI/MakeSolid.hs view
@@ -26,5 +26,5 @@ foreign import capi unsafe "hs_BRepBuilderAPI_MakeSolid.h hs_BRepBuilderAPI_MakeSolid_solid" rawSolid :: Ptr MakeSolid -> IO (Ptr TopoDS.Solid) solid :: Ptr MakeSolid -> Acquire (Ptr TopoDS.Solid)-solid builder = mkAcquire (rawSolid builder) (deleteShape . upcast) +solid builder = mkAcquire (rawSolid builder) (deleteShape . upcast)
+ src/OpenCascade/BRepBuilderAPI/Sewing.hs view
@@ -0,0 +1,55 @@+{-# LANGUAGE CApiFFI #-}+module OpenCascade.BRepBuilderAPI.Sewing+( Sewing+, new+, load+, add+, perform+, sewedShape+, nbFreeEdges+, nbContigousEdges+, nbMultipleEdges+) where ++import qualified OpenCascade.TopoDS.Types as TopoDS+import OpenCascade.TopoDS.Internal.Destructors (deleteShape)+import OpenCascade.BRepBuilderAPI.Internal.Destructors (deleteSewing)+import OpenCascade.BRepBuilderAPI.Types (Sewing)+import Foreign.Ptr (Ptr)+import Foreign.C (CBool (..), CDouble (..), CInt (..))+import OpenCascade.Internal.Bool (boolToCBool)+import Data.Acquire (Acquire, mkAcquire)+import Data.Coerce (coerce)++foreign import capi unsafe "hs_BRepBuilderAPI_Sewing.h hs_new_BRepBuilderAPI_Sewing" rawNew :: CDouble -> CBool -> CBool -> CBool -> CBool -> IO (Ptr Sewing)++new :: Double -> Bool -> Bool -> Bool -> Bool -> Acquire (Ptr Sewing)+new tolerance opt1 opt2 opt3 opt4 = mkAcquire (rawNew (coerce tolerance) (boolToCBool opt1) (boolToCBool opt2) (boolToCBool opt3) (boolToCBool opt4)) deleteSewing++foreign import capi unsafe "hs_BRepBuilderAPI_Sewing.h hs_BRepBuilderAPI_Sewing_load" load :: Ptr Sewing -> Ptr TopoDS.Shape -> IO ()++foreign import capi unsafe "hs_BRepBuilderAPI_Sewing.h hs_BRepBuilderAPI_Sewing_add" add :: Ptr Sewing -> Ptr TopoDS.Shape -> IO ()++foreign import capi unsafe "hs_BRepBuilderAPI_Sewing.h hs_BRepBuilderAPI_Sewing_perform" perform :: Ptr Sewing -> IO ()++foreign import capi unsafe "hs_BRepBuilderAPI_Sewing.h hs_BRepBuilderAPI_Sewing_sewedShape" rawSewedShape :: Ptr Sewing -> IO (Ptr TopoDS.Shape)++sewedShape :: Ptr Sewing -> Acquire (Ptr TopoDS.Shape)+sewedShape sewing = mkAcquire (rawSewedShape sewing) (deleteShape)++foreign import capi unsafe "hs_BRepBuilderAPI_Sewing.h hs_BRepBuilderAPI_Sewing_nbFreeEdges" rawNbFreeEdges:: Ptr Sewing -> IO (CInt)++nbFreeEdges :: Ptr Sewing -> IO Int+nbFreeEdges = fmap fromIntegral <$> rawNbFreeEdges+++foreign import capi unsafe "hs_BRepBuilderAPI_Sewing.h hs_BRepBuilderAPI_Sewing_nbContigousEdges" rawNbContigousEdges:: Ptr Sewing -> IO (CInt)++nbContigousEdges :: Ptr Sewing -> IO Int+nbContigousEdges = fmap fromIntegral <$> rawNbContigousEdges+++foreign import capi unsafe "hs_BRepBuilderAPI_Sewing.h hs_BRepBuilderAPI_Sewing_nbMultipleEdges" rawNbMultipleEdges:: Ptr Sewing -> IO (CInt)++nbMultipleEdges :: Ptr Sewing -> IO Int+nbMultipleEdges = fmap fromIntegral <$> rawNbMultipleEdges
src/OpenCascade/BRepBuilderAPI/Types.hs view
@@ -5,6 +5,7 @@ , MakeFace , MakeSolid , MakeShape+, Sewing ) where import qualified OpenCascade.Inheritance as Inheritance@@ -14,6 +15,8 @@ data MakeSolid data MakeShape++data Sewing instance Inheritance.SubTypeOf MakeShape MakeWire instance Inheritance.SubTypeOf MakeShape MakeSolid
+ src/OpenCascade/BRepLib.hs view
@@ -0,0 +1,14 @@+{-# LANGUAGE CApiFFI#-}+module OpenCascade.BRepLib +( orientClosedSolid+) where ++import OpenCascade.TopoDS.Types (Solid)+import Foreign.Ptr (Ptr)+import Foreign.C (CBool (..))+import OpenCascade.Internal.Bool (cBoolToBool)++foreign import capi unsafe "hs_BRepLib.h hs_BRepLib_orientClosedSolid" rawOrientClosedSolid :: Ptr Solid -> IO (CBool)++orientClosedSolid :: Ptr Solid -> IO Bool+orientClosedSolid s = cBoolToBool <$> rawOrientClosedSolid s
src/OpenCascade/GProp/GProps.hs view
@@ -22,7 +22,7 @@ new :: Acquire (Ptr GProps) new = mkAcquire rawNew deleteGProps -foreign import capi unsafe "hs_GProp_GProps.h hs_new_GProp_GProps" rawFromSystemLocation :: Ptr Pnt -> IO (Ptr GProps)+foreign import capi unsafe "hs_GProp_GProps.h hs_new_GProp_GProps_fromSystemLocation" rawFromSystemLocation :: Ptr Pnt -> IO (Ptr GProps) fromSystemLocation :: Ptr Pnt -> Acquire (Ptr GProps) fromSystemLocation pnt = mkAcquire (rawFromSystemLocation pnt) deleteGProps
src/OpenCascade/IFSelect/ReturnStatus.hs view
@@ -3,4 +3,4 @@ ) where -- Should match the order in IFSelect_ReturnStatus.hxx-data ReturnStatus = Void | Done | Error | Fail | Stop deriving Enum+data ReturnStatus = Void | Done | Error | Fail | Stop deriving (Eq, Enum, Show)
+ src/OpenCascade/Poly/Internal/Destructors.hs view
@@ -0,0 +1,13 @@+{-# LANGUAGE CApiFFI #-}+module OpenCascade.Poly.Internal.Destructors+( deleteHandleTriangulation+, deleteTriangle+) where++import OpenCascade.Poly.Types +import OpenCascade.Handle (Handle)+import Foreign.Ptr (Ptr)++foreign import capi unsafe "hs_Poly_Triangulation.h hs_delete_Poly_Triangulation" deleteHandleTriangulation :: Ptr (Handle Triangulation) -> IO ()++foreign import capi unsafe "hs_Poly_Triangle.h hs_delete_Poly_Triangle" deleteTriangle :: Ptr Triangle -> IO ()
+ src/OpenCascade/Poly/Triangle.hs view
@@ -0,0 +1,28 @@+{-# LANGUAGE CApiFFI #-}+module OpenCascade.Poly.Triangle +( Triangle+, fromIndices+, value+, setValue+) where++import OpenCascade.Poly.Types (Triangle)+import OpenCascade.Poly.Internal.Destructors (deleteTriangle)+import Foreign.C (CInt (..))+import Foreign.Ptr (Ptr)+import Data.Acquire (Acquire, mkAcquire)++foreign import capi unsafe "hs_Poly_Triangle.h hs_new_Poly_Triangle_fromIndices" rawFromIndices :: CInt -> CInt -> CInt -> IO (Ptr Triangle)++fromIndices :: Int -> Int -> Int -> Acquire (Ptr Triangle)+fromIndices n1 n2 n3 = mkAcquire (rawFromIndices (fromIntegral n1) (fromIntegral n2) (fromIntegral n3)) deleteTriangle++foreign import capi unsafe "hs_Poly_Triangle.h hs_Poly_Triangle_value" rawValue :: Ptr Triangle -> CInt -> IO CInt++value :: Ptr Triangle -> Int -> IO Int+value tri index = fromIntegral <$> rawValue tri (fromIntegral index)++foreign import capi unsafe "hs_Poly_Triangle.h hs_Poly_Triangle_setValue" rawSetValue :: Ptr Triangle -> CInt -> CInt -> IO ()++setValue :: Ptr Triangle -> Int -> Int -> IO ()+setValue tri index node = rawSetValue tri (fromIntegral index) (fromIntegral node)
+ src/OpenCascade/Poly/Triangulation.hs view
@@ -0,0 +1,56 @@+{-# LANGUAGE CApiFFI #-}+module OpenCascade.Poly.Triangulation +(Triangulation+, new+, nbNodes+, nbTriangles+, node +, setNode+, triangle+, setTriangle+) where++import OpenCascade.Poly.Types (Triangle, Triangulation)+import OpenCascade.Poly.Internal.Destructors (deleteHandleTriangulation, deleteTriangle)+import OpenCascade.GP.Types as GP+import OpenCascade.GP.Internal.Destructors (deletePnt)+import OpenCascade.Handle (Handle)+import Foreign.Ptr (Ptr)+import Foreign.C (CInt (..), CBool (..))+import OpenCascade.Internal.Bool (boolToCBool)+import Data.Acquire (Acquire, mkAcquire)++foreign import capi unsafe "hs_Poly_Triangulation.h hs_new_Poly_Triangulation" rawNew :: CInt -> CInt -> CBool -> CBool -> IO (Ptr (Handle Triangulation))++new :: Int -> Int -> Bool -> Bool -> Acquire (Ptr (Handle Triangulation))+new nNodes nTriangles hasUVNodes hasNormals = mkAcquire (rawNew (fromIntegral nNodes) (fromIntegral nTriangles) (boolToCBool hasUVNodes) (boolToCBool hasNormals)) deleteHandleTriangulation++foreign import capi unsafe "hs_Poly_Triangulation.h hs_Poly_Triangulation_nbNodes" rawNbNodes :: Ptr (Handle Triangulation) -> IO CInt++nbNodes :: Ptr (Handle Triangulation) -> IO Int+nbNodes tri = fromIntegral <$> rawNbNodes tri++foreign import capi unsafe "hs_Poly_Triangulation.h hs_Poly_Triangulation_nbTriangles" rawNbTriangles :: Ptr (Handle Triangulation) -> IO CInt++nbTriangles :: Ptr (Handle Triangulation) -> IO Int+nbTriangles tri = fromIntegral <$> rawNbTriangles tri++foreign import capi unsafe "hs_Poly_Triangulation.h hs_Poly_Triangulation_node" rawNode :: Ptr (Handle Triangulation) -> CInt -> IO (Ptr GP.Pnt)++node :: Ptr (Handle Triangulation) -> Int -> Acquire (Ptr GP.Pnt)+node tri index = mkAcquire (rawNode tri (fromIntegral index)) deletePnt++foreign import capi unsafe "hs_Poly_Triangulation.h hs_Poly_Triangulation_setNode" rawSetNode :: Ptr (Handle Triangulation) -> CInt -> Ptr GP.Pnt -> IO()++setNode :: Ptr (Handle Triangulation) -> Int -> Ptr GP.Pnt -> IO ()+setNode tri index pnt = rawSetNode tri (fromIntegral index) pnt++foreign import capi unsafe "hs_Poly_Triangulation.h hs_Poly_Triangulation_triangle" rawTriangle :: Ptr (Handle Triangulation) -> CInt -> IO (Ptr Triangle)++triangle :: Ptr (Handle Triangulation) -> Int -> Acquire (Ptr Triangle)+triangle tri index = mkAcquire (rawTriangle tri (fromIntegral index)) deleteTriangle++foreign import capi unsafe "hs_Poly_Triangulation.h hs_Poly_Triangulation_setTriangle" rawSetTriangle :: Ptr (Handle Triangulation) -> CInt -> Ptr Triangle -> IO ()++setTriangle :: Ptr (Handle Triangulation) -> Int -> Ptr Triangle -> IO ()+setTriangle tri index theTriangle = rawSetTriangle tri (fromIntegral index) theTriangle
+ src/OpenCascade/Poly/Types.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE EmptyDataDecls #-}+module OpenCascade.Poly.Types +(Triangulation+, Triangle+) where++data Triangulation+data Triangle
+ src/OpenCascade/RWGltf/CafReader.hs view
@@ -0,0 +1,24 @@+{-# LANGUAGE CApiFFI #-}+module OpenCascade.RWGltf.CafReader +( CafReader+, new+, setDoublePrecision+) where++import OpenCascade.RWGltf.Types (CafReader)+import OpenCascade.RWGltf.Internal.Destructors (deleteCafReader)+import Data.Acquire (Acquire, mkAcquire)+import OpenCascade.Internal.Bool (boolToCBool)+import Foreign.C (CBool (..))+import Foreign.Ptr (Ptr)++foreign import capi unsafe "hs_RWGltf_CafReader.h hs_new_RWGltf_CafReader" rawNew :: IO (Ptr CafReader)++new :: Acquire (Ptr CafReader)+new = mkAcquire rawNew deleteCafReader+++foreign import capi unsafe "hs_RWGltf_CafReader.h hs_RWGltf_CafReader_setDoublePrecision" rawSetDoublePrecision :: Ptr CafReader -> CBool -> IO ()++setDoublePrecision :: Ptr CafReader -> Bool -> IO ()+setDoublePrecision reader isDouble = rawSetDoublePrecision reader (boolToCBool isDouble)
src/OpenCascade/RWGltf/Internal/Destructors.hs view
@@ -1,9 +1,11 @@ {-# LANGUAGE CApiFFI #-} module OpenCascade.RWGltf.Internal.Destructors ( deleteCafWriter+, deleteCafReader ) where import OpenCascade.RWGltf.Types import Foreign.Ptr foreign import capi unsafe "hs_RWGltf_CafWriter.h hs_delete_RWGltf_CafWriter" deleteCafWriter :: Ptr CafWriter -> IO ()+foreign import capi unsafe "hs_RWGltf_CafReader.h hs_delete_RWGltf_CafReader" deleteCafReader :: Ptr CafReader -> IO ()
src/OpenCascade/RWGltf/Types.hs view
@@ -1,6 +1,14 @@ {-# LANGUAGE EmptyDataDecls #-}+{-# LANGUAGE MultiParamTypeClasses #-} module OpenCascade.RWGltf.Types ( CafWriter+, CafReader ) where +import OpenCascade.Inheritance (SubTypeOf)+import qualified OpenCascade.RWMesh.Types as RWMesh+ data CafWriter+data CafReader++instance SubTypeOf RWMesh.CafReader CafReader
+ src/OpenCascade/RWMesh/CafReader.hs view
@@ -0,0 +1,39 @@+{-# LANGUAGE CApiFFI #-}+module OpenCascade.RWMesh.CafReader+( CafReader+, setDocument+, perform+, singleShape+, setFileLengthUnit+) where++import OpenCascade.RWMesh.Types (CafReader)+import qualified OpenCascade.TDocStd.Types as TDocStd+import qualified OpenCascade.Message.Types as Message+import qualified OpenCascade.TopoDS.Types as TopoDS+import OpenCascade.TopoDS.Internal.Destructors (deleteShape)+import OpenCascade.Handle (Handle)+import OpenCascade.Internal.Bool (cBoolToBool)+import Foreign.C (CBool (..), CDouble (..))+import Foreign.C.String (CString, withCString)+import Foreign.Ptr (Ptr)+import Data.Coerce (coerce)+import Data.Acquire (Acquire, mkAcquire)++foreign import capi unsafe "hs_RWMesh_CafReader.h hs_RWMesh_CafReader_setDocument" setDocument :: Ptr CafReader -> Ptr (Handle TDocStd.Document) -> IO ()++foreign import capi unsafe "hs_RWMesh_CafReader.h hs_RWMesh_CafReader_setFileLengthUnit" rawSetFileLengthUnit :: Ptr CafReader -> CDouble -> IO ()++setFileLengthUnit :: Ptr CafReader -> Double -> IO ()+setFileLengthUnit = coerce rawSetFileLengthUnit++foreign import capi unsafe "hs_RWMesh_CafReader.h hs_RWMesh_CafReader_perform" rawPerform :: Ptr CafReader -> CString -> Ptr Message.ProgressRange -> IO CBool++perform :: Ptr CafReader -> String -> Ptr Message.ProgressRange -> IO Bool+perform reader filename progress = cBoolToBool <$> (withCString filename $ \str -> rawPerform reader str progress)++foreign import capi unsafe "hs_RWMesh_CafReader.h hs_RWMesh_CafReader_singleShape" rawSingleShape :: Ptr CafReader -> IO (Ptr TopoDS.Shape)++singleShape :: Ptr CafReader -> Acquire (Ptr TopoDS.Shape)+singleShape reader = mkAcquire (rawSingleShape reader) deleteShape+
+ src/OpenCascade/RWMesh/Types.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE EmptyDataDecls #-}+module OpenCascade.RWMesh.Types +( CafReader+) where++data CafReader
+ src/OpenCascade/RWObj/CafReader.hs view
@@ -0,0 +1,24 @@+{-# LANGUAGE CApiFFI #-}+module OpenCascade.RWObj.CafReader +( CafReader+, new+, setSinglePrecision+) where++import OpenCascade.RWObj.Types (CafReader)+import OpenCascade.RWObj.Internal.Destructors (deleteCafReader)+import Data.Acquire (Acquire, mkAcquire)+import OpenCascade.Internal.Bool (boolToCBool)+import Foreign.C (CBool (..))+import Foreign.Ptr (Ptr)++foreign import capi unsafe "hs_RWObj_CafReader.h hs_new_RWObj_CafReader" rawNew :: IO (Ptr CafReader)++new :: Acquire (Ptr CafReader)+new = mkAcquire rawNew deleteCafReader+++foreign import capi unsafe "hs_RWObj_CafReader.h hs_RWObj_CafReader_setSinglePrecision" rawSetSinglePrecision :: Ptr CafReader -> CBool -> IO ()++setSinglePrecision :: Ptr CafReader -> Bool -> IO ()+setSinglePrecision reader isSingle = rawSetSinglePrecision reader (boolToCBool isSingle)
+ src/OpenCascade/RWObj/CafWriter.hs view
@@ -0,0 +1,23 @@+{-# LANGUAGE CApiFFI #-}+module OpenCascade.RWObj.CafWriter+( CafWriter+, new+, perform+) where++import OpenCascade.RWObj.Types (CafWriter)+import OpenCascade.RWObj.Internal.Destructors (deleteCafWriter)+import Foreign.Ptr (Ptr)+import Foreign.C.String (CString, withCString)+import Data.Acquire (Acquire, mkAcquire)+import OpenCascade.Handle (Handle)+import qualified OpenCascade.TDocStd.Types as TDocStd+import qualified OpenCascade.TColStd.Types as TColStd+import qualified OpenCascade.Message.Types as Message++foreign import capi unsafe "hs_RWObj_CafWriter.h hs_new_RWObj_CafWriter" rawNew :: CString -> IO (Ptr CafWriter)++new :: String -> Acquire (Ptr CafWriter)+new filepath = mkAcquire (withCString filepath rawNew) deleteCafWriter++foreign import capi unsafe "hs_RWObj_CafWriter.h hs_RWObj_CafWriter_Perform" perform :: Ptr CafWriter -> Ptr (Handle TDocStd.Document) -> Ptr (TColStd.IndexedDataMapOfStringString) -> Ptr (Message.ProgressRange) -> IO ()
+ src/OpenCascade/RWObj/Internal/Destructors.hs view
@@ -0,0 +1,12 @@++{-# LANGUAGE CApiFFI #-}+module OpenCascade.RWObj.Internal.Destructors+( deleteCafWriter+, deleteCafReader+) where++import OpenCascade.RWObj.Types+import Foreign.Ptr ++foreign import capi unsafe "hs_RWObj_CafWriter.h hs_delete_RWObj_CafWriter" deleteCafWriter :: Ptr CafWriter -> IO ()+foreign import capi unsafe "hs_RWObj_CafReader.h hs_delete_RWObj_CafReader" deleteCafReader :: Ptr CafReader -> IO ()
+ src/OpenCascade/RWObj/Types.hs view
@@ -0,0 +1,14 @@+{-# LANGUAGE EmptyDataDecls #-}+{-# LANGUAGE MultiParamTypeClasses #-}+module OpenCascade.RWObj.Types +( CafWriter+, CafReader+) where++import OpenCascade.Inheritance (SubTypeOf)+import qualified OpenCascade.RWMesh.Types as RWMesh++data CafWriter+data CafReader++instance SubTypeOf RWMesh.CafReader CafReader
src/OpenCascade/STEPControl/Internal/Destructors.hs view
@@ -1,6 +1,7 @@ {-# LANGUAGE CApiFFI #-} module OpenCascade.STEPControl.Internal.Destructors ( deleteWriter+, deleteReader ) where import OpenCascade.STEPControl.Types@@ -8,3 +9,4 @@ import Foreign.Ptr foreign import capi unsafe "hs_STEPControl_Writer.h hs_delete_STEPControl_Writer" deleteWriter :: Ptr Writer -> IO ()+foreign import capi unsafe "hs_STEPControl_Reader.h hs_delete_STEPControl_Reader" deleteReader :: Ptr Reader -> IO ()
+ src/OpenCascade/STEPControl/Reader.hs view
@@ -0,0 +1,16 @@+{-# LANGUAGE CApiFFI #-}+module OpenCascade.STEPControl.Reader+( Reader+, new+) where++import OpenCascade.STEPControl.Types (Reader)+import OpenCascade.STEPControl.Internal.Destructors (deleteReader)+import Foreign.Ptr (Ptr)+import Data.Acquire (Acquire, mkAcquire)+++foreign import capi unsafe "hs_STEPControl_Reader.h hs_new_STEPControl_Reader" rawNew :: IO (Ptr Reader)++new :: Acquire (Ptr Reader)+new = mkAcquire rawNew deleteReader
src/OpenCascade/STEPControl/Types.hs view
@@ -1,6 +1,13 @@ {-# LANGUAGE EmptyDataDecls #-}+{-# LANGUAGE MultiParamTypeClasses #-} module OpenCascade.STEPControl.Types ( Writer+, Reader ) where +import OpenCascade.Inheritance+import qualified OpenCascade.XSControl.Types as XSControl data Writer+data Reader++instance SubTypeOf XSControl.Reader Reader
+ src/OpenCascade/ShapeExtend/Status.hs view
@@ -0,0 +1,25 @@+module OpenCascade.ShapeExtend.Status +( Status (..)+) where++-- This needs to match the definition in ShapeExtend_Status.hxx+data Status = + OK |+ DONE1 |+ DONE2 |+ DONE3 |+ DONE4 |+ DONE5 |+ DONE6 |+ DONE7 |+ DONE8 |+ DONE |+ FAIL1 |+ FAIL2 |+ FAIL3 |+ FAIL4 |+ FAIL5 |+ FAIL6 |+ FAIL7 |+ FAIL8 |+ FAIL deriving (Show, Eq, Enum)
+ src/OpenCascade/ShapeFix/Internal/Destructors.hs view
@@ -0,0 +1,7 @@+{-# LANGUAGE CApiFFI #-}+module OpenCascade.ShapeFix.Internal.Destructors (deleteSolid) where++import OpenCascade.ShapeFix.Types (Solid)+import Foreign.Ptr (Ptr)++foreign import capi unsafe "hs_ShapeFix_Solid.h hs_delete_ShapeFix_Solid" deleteSolid :: Ptr Solid -> IO ()
+ src/OpenCascade/ShapeFix/Solid.hs view
@@ -0,0 +1,53 @@+{-# LANGUAGE CApiFFI #-}+module OpenCascade.ShapeFix.Solid+( Solid+, new+, fromSolid+, solidFromShell+, perform+, solid+, status+) where++import OpenCascade.ShapeFix.Types (Solid)+import OpenCascade.ShapeFix.Internal.Destructors (deleteSolid)+import OpenCascade.TopoDS.Internal.Destructors (deleteShape)+import qualified OpenCascade.TopoDS.Types as TopoDS+import qualified OpenCascade.Message.Types as Message+import Data.Acquire (Acquire, mkAcquire)+import Foreign.Ptr (Ptr)+import Foreign.C (CInt (..), CBool (..))+import OpenCascade.Internal.Bool (cBoolToBool)+import OpenCascade.ShapeExtend.Status (Status)+import OpenCascade.Inheritance (upcast)+++foreign import capi unsafe "hs_ShapeFix_Solid.h hs_new_ShapeFix_Solid" rawNew :: IO (Ptr Solid)++new :: Acquire (Ptr Solid)+new = mkAcquire rawNew deleteSolid++foreign import capi unsafe "hs_ShapeFix_Solid.h hs_new_ShapeFix_Solid_fromSolid" rawFromSolid :: Ptr TopoDS.Solid -> IO (Ptr Solid)++fromSolid :: Ptr TopoDS.Solid -> Acquire (Ptr Solid)+fromSolid s = mkAcquire (rawFromSolid s) deleteSolid++foreign import capi unsafe "hs_ShapeFix_Solid.h hs_ShapeFix_Solid_perform" rawPerform :: Ptr Solid -> Ptr Message.ProgressRange -> IO (CBool)++perform :: Ptr Solid -> Ptr Message.ProgressRange-> IO Bool+perform = (fmap cBoolToBool .) . rawPerform++foreign import capi unsafe "hs_ShapeFix_Solid.h hs_ShapeFix_Solid_solid" rawSolid :: Ptr Solid -> IO (Ptr TopoDS.Shape)++solid :: Ptr Solid -> Acquire (Ptr TopoDS.Shape)+solid s = mkAcquire (rawSolid s) deleteShape++foreign import capi unsafe "hs_ShapeFix_Solid.h hs_ShapeFix_Solid_solidFromShell" rawSolidFromShell :: Ptr Solid -> Ptr TopoDS.Shell -> IO (Ptr TopoDS.Solid)++solidFromShell :: Ptr Solid -> Ptr TopoDS.Shell -> Acquire (Ptr TopoDS.Solid)+solidFromShell s shell = mkAcquire (rawSolidFromShell s shell) (deleteShape . upcast)++foreign import capi unsafe "hs_ShapeFix_Solid.h hs_ShapeFix_Solid_status" rawStatus :: Ptr Solid -> CInt -> IO CBool++status :: Ptr Solid -> Status -> IO Bool+status s toCheck = cBoolToBool <$> rawStatus s (fromIntegral . fromEnum $ toCheck)
+ src/OpenCascade/ShapeFix/Types.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE EmptyDataDecls #-}+module OpenCascade.ShapeFix.Types+( Solid+) where++data Solid
src/OpenCascade/StlAPI/Internal/Destructors.hs view
@@ -1,6 +1,7 @@ {-# LANGUAGE CApiFFI #-} module OpenCascade.StlAPI.Internal.Destructors ( deleteWriter+, deleteReader ) where import OpenCascade.StlAPI.Types@@ -8,3 +9,4 @@ import Foreign.Ptr foreign import capi unsafe "hs_StlAPI_Writer.h hs_delete_StlAPI_Writer" deleteWriter :: Ptr Writer -> IO ()+foreign import capi unsafe "hs_StlAPI_Reader.h hs_delete_StlAPI_Reader" deleteReader :: Ptr Reader -> IO ()
+ src/OpenCascade/StlAPI/Reader.hs view
@@ -0,0 +1,25 @@+{-# LANGUAGE CApiFFI #-}+module OpenCascade.StlAPI.Reader+( Reader+, new+, read+) where++import Prelude hiding (read)+import OpenCascade.StlAPI.Types (Reader)+import OpenCascade.StlAPI.Internal.Destructors (deleteReader)+import qualified OpenCascade.TopoDS as TopoDS+import Foreign.C+import Foreign.Ptr+import Data.Acquire+import OpenCascade.Internal.Bool (cBoolToBool)++foreign import capi unsafe "hs_StlAPI_Reader.h hs_new_StlAPI_Reader" rawNew :: IO (Ptr Reader)++new :: Acquire (Ptr Reader)+new = mkAcquire rawNew deleteReader++foreign import capi unsafe "hs_StlAPI_Reader.h hs_StlAPI_Reader_read" rawRead :: Ptr Reader -> Ptr TopoDS.Shape -> CString -> IO (CBool)++read :: Ptr Reader -> Ptr TopoDS.Shape -> String -> IO (Bool)+read reader shape filename = cBoolToBool <$> withCString filename (rawRead reader shape)
src/OpenCascade/StlAPI/Types.hs view
@@ -2,6 +2,8 @@ {-# LANGUAGE EmptyDataDecls #-} module OpenCascade.StlAPI.Types ( Writer+, Reader ) where data Writer+data Reader
src/OpenCascade/StlAPI/Writer.hs view
@@ -1,6 +1,7 @@ {-# LANGUAGE CApiFFI #-} module OpenCascade.StlAPI.Writer-( new+( Writer+, new , setAsciiMode , write ) where
src/OpenCascade/TopAbs/Orientation.hs view
@@ -3,4 +3,4 @@ ) where -- this should match the orientation in TopAbs_Orientation-data Orientation = Forward | Reversed | Internal | External deriving (Show, Enum)+data Orientation = Forward | Reversed | Internal | External deriving (Show, Enum, Eq)
+ src/OpenCascade/TopoDS/Builder.hs view
@@ -0,0 +1,36 @@+{-# LANGUAGE CApiFFI #-}+module OpenCascade.TopoDS.Builder +( Builder +, new+, makeWire+, makeShell+, makeSolid+, makeCompSolid+, makeCompound+, add+, remove+) where++import OpenCascade.TopoDS.Types +import OpenCascade.TopoDS.Internal.Destructors (deleteBuilder)+import Foreign.Ptr (Ptr)+import Data.Acquire (Acquire, mkAcquire)++foreign import capi unsafe "hs_TopoDS_Builder.h hs_new_TopoDS_Builder" rawNew :: IO (Ptr Builder)++new :: Acquire (Ptr Builder)+new = mkAcquire rawNew deleteBuilder++foreign import capi unsafe "hs_TopoDS_Builder.h hs_TopoDS_Builder_makeWire" makeWire :: Ptr Builder -> Ptr Wire -> IO ()++foreign import capi unsafe "hs_TopoDS_Builder.h hs_TopoDS_Builder_makeShell" makeShell :: Ptr Builder -> Ptr Shell -> IO ()++foreign import capi unsafe "hs_TopoDS_Builder.h hs_TopoDS_Builder_makeSolid" makeSolid :: Ptr Builder -> Ptr Solid -> IO ()++foreign import capi unsafe "hs_TopoDS_Builder.h hs_TopoDS_Builder_makeCompSolid" makeCompSolid :: Ptr Builder -> Ptr CompSolid -> IO ()++foreign import capi unsafe "hs_TopoDS_Builder.h hs_TopoDS_Builder_makeCompound" makeCompound :: Ptr Builder -> Ptr Compound -> IO ()++foreign import capi unsafe "hs_TopoDS_Builder.h hs_TopoDS_Builder_add" add :: Ptr Builder -> Ptr Shape -> Ptr Shape -> IO ()++foreign import capi unsafe "hs_TopoDS_Builder.h hs_TopoDS_Builder_remove" remove :: Ptr Builder -> Ptr Shape -> Ptr Shape -> IO ()
src/OpenCascade/TopoDS/Internal/Destructors.hs view
@@ -1,6 +1,7 @@ {-# LANGUAGE CApiFFI #-} module OpenCascade.TopoDS.Internal.Destructors ( deleteShape+, deleteBuilder ) where import OpenCascade.TopoDS.Types@@ -9,4 +10,5 @@ foreign import capi unsafe "hs_TopoDS_Shape.h hs_delete_TopoDS_Shape" deleteShape :: Ptr Shape -> IO () +foreign import capi unsafe "hs_TopoDS_Builder.h hs_delete_TopoDS_Builder" deleteBuilder :: Ptr Builder -> IO ()
src/OpenCascade/TopoDS/Types.hs view
@@ -11,6 +11,7 @@ , Solid , Vertex , Wire+, Builder ) where@@ -32,6 +33,8 @@ data Solid data Vertex data Wire++data Builder -- duplicate definition of shape type from TopoDS.Shape -- to simultaniously avoid Orphan Instances + circular dependencies
+ src/OpenCascade/XSControl/Reader.hs view
@@ -0,0 +1,34 @@+{-# LANGUAGE CApiFFI #-}+module OpenCascade.XSControl.Reader +( Reader+, readFile+, transferRoots+, oneShape+) where++import Prelude hiding (readFile)+import OpenCascade.XSControl.Types (Reader)+import OpenCascade.IFSelect.ReturnStatus (ReturnStatus)+import qualified OpenCascade.TopoDS.Types as TopoDS+import OpenCascade.TopoDS.Internal.Destructors (deleteShape)+import OpenCascade.Internal.Bool (cBoolToBool)+import Foreign.C.String (CString, withCString)+import Foreign.C (CInt (..), CBool (..))+import Foreign.Ptr (Ptr)+import Data.Acquire (Acquire, mkAcquire)++foreign import capi unsafe "hs_XSControl_Reader.h hs_XSControl_Reader_readFile" rawReadFile :: Ptr Reader -> CString -> IO CInt++readFile :: Ptr Reader -> String -> IO ReturnStatus+readFile reader s = toEnum . fromIntegral <$> withCString s (rawReadFile reader)+++foreign import capi unsafe "hs_XSControl_Reader.h hs_XSControl_Reader_transferRoots" rawTransferRoots :: Ptr Reader -> IO (CBool)++transferRoots :: Ptr Reader -> IO Bool+transferRoots reader = cBoolToBool <$> rawTransferRoots reader++foreign import capi unsafe "hs_XSControl_Reader.h hs_XSControl_Reader_oneShape" rawOneShape :: Ptr Reader -> IO (Ptr TopoDS.Shape) ++oneShape :: Ptr Reader -> Acquire (Ptr TopoDS.Shape)+oneShape reader = mkAcquire (rawOneShape reader) deleteShape
+ src/OpenCascade/XSControl/Types.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE EmptyDataDecls #-}+module OpenCascade.XSControl.Types+( Reader+) where++data Reader