packages feed

opencascade-hs 0.1.2.2 → 0.2.0.0

raw patch · 54 files changed

+739/−29 lines, 54 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ OpenCascade.BRepBndLib: add :: Ptr Shape -> Ptr Box -> Bool -> IO ()
+ OpenCascade.BRepBndLib: addOBB :: Ptr Shape -> Ptr OBB -> Bool -> Bool -> Bool -> IO ()
+ OpenCascade.BRepBndLib: addOptimal :: Ptr Shape -> Ptr Box -> Bool -> Bool -> IO ()
+ OpenCascade.BRepGProp: volumeProperties :: Ptr Shape -> Ptr GProps -> Bool -> Bool -> Bool -> IO ()
+ OpenCascade.Bnd.Box: cornerMax :: Ptr Box -> Acquire (Ptr Pnt)
+ OpenCascade.Bnd.Box: cornerMin :: Ptr Box -> Acquire (Ptr Pnt)
+ OpenCascade.Bnd.Box: data Box
+ OpenCascade.Bnd.Box: new :: Acquire (Ptr Box)
+ OpenCascade.Bnd.Internal.Destructors: deleteBox :: Ptr Box -> IO ()
+ OpenCascade.Bnd.Internal.Destructors: deleteOBB :: Ptr OBB -> IO ()
+ OpenCascade.Bnd.OBB: center :: Ptr OBB -> Acquire (Ptr XYZ)
+ OpenCascade.Bnd.OBB: data OBB
+ OpenCascade.Bnd.OBB: new :: Acquire (Ptr OBB)
+ OpenCascade.Bnd.OBB: position :: Ptr OBB -> Acquire (Ptr Ax3)
+ OpenCascade.Bnd.OBB: xDirection :: Ptr OBB -> Acquire (Ptr XYZ)
+ OpenCascade.Bnd.OBB: xHSize :: Ptr OBB -> IO Double
+ OpenCascade.Bnd.OBB: yDirection :: Ptr OBB -> Acquire (Ptr XYZ)
+ OpenCascade.Bnd.OBB: yHSize :: Ptr OBB -> IO Double
+ OpenCascade.Bnd.OBB: zDirection :: Ptr OBB -> Acquire (Ptr XYZ)
+ OpenCascade.Bnd.OBB: zHSize :: Ptr OBB -> IO Double
+ OpenCascade.Bnd.Types: data Box
+ OpenCascade.Bnd.Types: data OBB
+ OpenCascade.GP.Internal.Destructors: deleteXYZ :: Ptr XYZ -> IO ()
+ OpenCascade.GP.Trsf: setDisplacement :: Ptr Trsf -> Ptr Ax3 -> Ptr Ax3 -> IO ()
+ OpenCascade.GP.Types: data XYZ
+ OpenCascade.GP.XYZ: data XYZ
+ OpenCascade.GP.XYZ: fromDoubles :: Double -> Double -> Double -> Acquire (Ptr XYZ)
+ OpenCascade.GP.XYZ: newXYZ :: Acquire (Ptr XYZ)
+ OpenCascade.GP.XYZ: setX :: Ptr XYZ -> Double -> IO ()
+ OpenCascade.GP.XYZ: setY :: Ptr XYZ -> Double -> IO ()
+ OpenCascade.GP.XYZ: setZ :: Ptr XYZ -> Double -> IO ()
+ OpenCascade.GP.XYZ: x :: Ptr XYZ -> IO Double
+ OpenCascade.GP.XYZ: y :: Ptr XYZ -> IO Double
+ OpenCascade.GP.XYZ: z :: Ptr XYZ -> IO Double
+ OpenCascade.GProp.GProps: centreOfMass :: Ptr GProps -> Acquire (Ptr Pnt)
+ OpenCascade.GProp.GProps: data GProps
+ OpenCascade.GProp.GProps: fromSystemLocation :: Ptr Pnt -> Acquire (Ptr GProps)
+ OpenCascade.GProp.GProps: mass :: Ptr GProps -> IO Double
+ OpenCascade.GProp.GProps: momentOfInertia :: Ptr GProps -> Ptr Ax1 -> IO Double
+ OpenCascade.GProp.GProps: new :: Acquire (Ptr GProps)
+ OpenCascade.GProp.Internal.Destructors: deleteGProps :: Ptr GProps -> IO ()
+ OpenCascade.GProp.Types: data GProps

Files

CHANGELOG.md view
@@ -8,6 +8,18 @@  ## Unreleased +## 0.2.0.0++### Added++- Added OpenCascade.BRepGProp+- Added OpenCascade.GProp.GProps+- Added OpenCascade.BRepBndLib +- Added OpenCascade.Bnd.Box+- Added OpenCascade.Bnd.OBB+- Added OpenCascade.GP.XYZ (just the barebones Constructor and Getter/Setter methods)+- Added `setDisplacement` to OpenCascade.GP.Trsf+ ## 0.1.2.2 - 2024-01-09   ## 0.1.2.1 - 2024-01-09 
+ cpp/hs_BRepBndLib.cpp view
@@ -0,0 +1,14 @@+#include <BRepBndLib.hxx>+#include "hs_BRepBndLib.h"++void hs_BRepBndLib_add(TopoDS_Shape * shape, Bnd_Box * box, bool useTriangulation){+    BRepBndLib::Add(*shape, *box, useTriangulation);+}++void hs_BRepBndLib_addOptimal(TopoDS_Shape * shape, Bnd_Box * box, bool useTriangulation, bool useShapeTolerance){+    BRepBndLib::AddOptimal(*shape, *box, useTriangulation, useShapeTolerance);+}++void hs_BRepBndLib_addOBB(TopoDS_Shape *shape, Bnd_OBB * obb, bool isTriangulationUsed, bool isOptimal, bool isShapeToleranceUsed){+    BRepBndLib::AddOBB(*shape, *obb, isTriangulationUsed, isOptimal, isShapeToleranceUsed);+}
+ cpp/hs_BRepBndLib.h view
@@ -0,0 +1,20 @@+#ifndef HS_BREPBNDLIB_H+#define HS_BREPBNDLIB_H++#include "hs_types.h"++#ifdef __cplusplus+extern "C" {+#endif++void hs_BRepBndLib_add(TopoDS_Shape * shape, Bnd_Box * box, bool useTriangulation);++void hs_BRepBndLib_addOptimal(TopoDS_Shape * shape, Bnd_Box * box, bool useTriangulation, bool useShapeTolerance);++void hs_BRepBndLib_addOBB(TopoDS_Shape *shape, Bnd_OBB * obb, bool isTriangulationUsed, bool isOptimal, bool isShapeToleranceUsed);++#ifdef __cplusplus+}+#endif++#endif // HS_BREPBNDLIB_H
+ cpp/hs_BRepGProp.cpp view
@@ -0,0 +1,6 @@+#include <BRepGProp.hxx>+#include "hs_BRepGProp.h"++void hs_BRepGProp_VolumeProperties(TopoDS_Shape *shape, GProp_GProps *props, bool onlyClosed, bool skipShared, bool useTriangulation ){+    BRepGProp::VolumeProperties(*shape, *props, onlyClosed, skipShared, useTriangulation);+}
+ cpp/hs_BRepGProp.h view
@@ -0,0 +1,16 @@+#ifndef HS_BREPGPROP_H+#define HS_BREPGPROP_H++#include "hs_types.h"++#ifdef __cplusplus+extern "C" {+#endif++void hs_BRepGProp_VolumeProperties(TopoDS_Shape * shape, GProp_GProps * props, bool onlyClosed, bool skipShared, bool useTriangulation );++#ifdef __cplusplus+}+#endif++#endif // HS_BREPGPROP_H
+ cpp/hs_Bnd_Box.cpp view
@@ -0,0 +1,18 @@+#include <Bnd_Box.hxx>+#include "hs_Bnd_Box.h"++Bnd_Box * hs_new_Bnd_Box(){+    return new Bnd_Box();+}++void hs_delete_Bnd_Box(Bnd_Box * box){+    delete box;+}++gp_Pnt * hs_Bnd_Box_cornerMin(Bnd_Box * box){+    return new gp_Pnt(box->CornerMin());+}++gp_Pnt * hs_Bnd_Box_cornerMax(Bnd_Box * box){+    return new gp_Pnt(box->CornerMax());+}
+ cpp/hs_Bnd_Box.h view
@@ -0,0 +1,22 @@+#ifndef HS_BND_BOX_H+#define HS_BND_BOX_H++#include "hs_types.h"++#ifdef __cplusplus+extern "C" {+#endif++Bnd_Box * hs_new_Bnd_Box();++void hs_delete_Bnd_Box(Bnd_Box * box);++gp_Pnt * hs_Bnd_Box_cornerMin(Bnd_Box * box);++gp_Pnt * hs_Bnd_Box_cornerMax(Bnd_Box * box);++#ifdef __cplusplus+}+#endif++#endif // HS_BND_BOX_H
+ cpp/hs_Bnd_OBB.cpp view
@@ -0,0 +1,42 @@+#include <Bnd_OBB.hxx>+#include "hs_Bnd_OBB.h"++Bnd_OBB * hs_new_Bnd_OBB() {+    return new Bnd_OBB();+}++void hs_delete_Bnd_OBB(Bnd_OBB * obb){+    delete obb;+}++gp_XYZ * hs_Bnd_OBB_center(Bnd_OBB * obb){+    return new gp_XYZ(obb->Center());+}++gp_XYZ * hs_Bnd_OBB_xDirection(Bnd_OBB * obb){+    return new gp_XYZ(obb->XDirection());+}++gp_XYZ * hs_Bnd_OBB_yDirection(Bnd_OBB * obb){+    return new gp_XYZ(obb->YDirection());+}++gp_XYZ * hs_Bnd_OBB_zDirection(Bnd_OBB * obb){+    return new gp_XYZ(obb->ZDirection());+}++double hs_Bnd_OBB_xHSize(Bnd_OBB *obb){+    return obb->XHSize();+}++double hs_Bnd_OBB_yHSize(Bnd_OBB *obb){+    return obb->YHSize();+}++double hs_Bnd_OBB_zHSize(Bnd_OBB *obb){+    return obb->ZHSize();+}++gp_Ax3 * hs_Bnd_OBB_position(Bnd_OBB *obb){+    return new gp_Ax3(obb->Position());+}
+ cpp/hs_Bnd_OBB.h view
@@ -0,0 +1,34 @@+#ifndef HS_BND_OBB_H+#define HS_BND_OBB_H++#include "hs_types.h"++#ifdef __cplusplus+extern "C" {+#endif++Bnd_OBB * hs_new_Bnd_OBB();++void hs_delete_Bnd_OBB(Bnd_OBB * obb);++gp_XYZ * hs_Bnd_OBB_center(Bnd_OBB * obb);++gp_XYZ * hs_Bnd_OBB_xDirection(Bnd_OBB * obb);++gp_XYZ * hs_Bnd_OBB_yDirection(Bnd_OBB * obb);++gp_XYZ * hs_Bnd_OBB_zDirection(Bnd_OBB * obb);++double hs_Bnd_OBB_xHSize(Bnd_OBB *obb);++double hs_Bnd_OBB_yHSize(Bnd_OBB *obb);++double hs_Bnd_OBB_zHSize(Bnd_OBB *obb);++gp_Ax3 * hs_Bnd_OBB_position(Bnd_OBB *obb);++#ifdef __cplusplus+}+#endif++#endif // HS_BND_OBB_H
+ cpp/hs_GProp_GProps.cpp view
@@ -0,0 +1,26 @@+#include <GProp_GProps.hxx>+#include "hs_GProp_GProps.h"++GProp_GProps * hs_new_GProp_GProps(){+    return new GProp_GProps();+}++GProp_GProps * hs_new_GProp_GProps_fromSystemLocation(gp_Pnt * pnt){+    return new GProp_GProps(*pnt);+}++void  hs_delete_GProp_GProps(GProp_GProps * props){+    delete props;+}++double hs_GProp_GProps_mass(GProp_GProps * props){+    return props->Mass();+}++gp_Pnt * hs_GProp_GProps_centreOfMass(GProp_GProps * props){+    return new gp_Pnt(props->CentreOfMass());+}++double hs_GProp_GProps_momentOfInertia(GProp_GProps * props, gp_Ax1 * ax){+    return props->MomentOfInertia(*ax);+}
+ cpp/hs_GProp_GProps.h view
@@ -0,0 +1,26 @@+#ifndef HS_GPROP_GPROPS_H+#define HS_GPROP_GPROPS_H++#include "hs_types.h"++#ifdef __cplusplus+extern "C" {+#endif++GProp_GProps * hs_new_GProp_GProps();++GProp_GProps * hs_new_GProp_GProps_fromSystemLocation(gp_Pnt * pnt);++void  hs_delete_GProp_GProps(GProp_GProps * props);++double hs_GProp_GProps_mass(GProp_GProps * props);++gp_Pnt * hs_GProp_GProps_centreOfMass(GProp_GProps * props);++double hs_GProp_GProps_momentOfInertia(GProp_GProps * props, gp_Ax1 * ax);++#ifdef __cplusplus+}+#endif++#endif // HS_GPROP_GPROPS
cpp/hs_gp_Trsf.cpp view
@@ -45,6 +45,10 @@     trsf->SetScaleFactor(s); } +void hs_gp_Trsf_SetDisplacement(gp_Trsf * trsf, gp_Ax3 *from, gp_Ax3 * to){+    trsf->SetDisplacement(*from, *to);+}+ void hs_gp_Trsf_SetValues(gp_Trsf * trsf,          double a11, double a12, double a13, double a14,         double a21, double a22, double a23, double a24,
cpp/hs_gp_Trsf.h view
@@ -39,6 +39,8 @@  double hs_gp_Trsf_ScaleFactor(gp_Trsf * trsf); +void hs_gp_Trsf_SetDisplacement(gp_Trsf * trsf, gp_Ax3 *from, gp_Ax3 * to);+ double hs_gp_Trsf_Value(gp_Trsf* trsf, int row, int col);  void hs_gp_Trsf_Invert(gp_Trsf* trsf);
+ cpp/hs_gp_XYZ.cpp view
@@ -0,0 +1,39 @@+#include <gp_XYZ.hxx>+#include "hs_gp_XYZ.h"++gp_XYZ * hs_new_gp_XYZ(){+    return new gp_XYZ();+}++gp_XYZ * hs_new_gp_XYZ_fromDoubles(double x, double y, double z){+    return new gp_XYZ(x, y, z);+}++void hs_delete_gp_XYZ(gp_XYZ * xyz){+    delete xyz;+}++void hs_gp_XYZ_setX(gp_XYZ * xyz, double x){+    xyz->SetX(x);+}++void hs_gp_XYZ_setY(gp_XYZ * xyz, double y){+    xyz->SetY(y);+}++void hs_gp_XYZ_setZ(gp_XYZ * xyz, double z){+    xyz->SetZ(z);+}++double hs_gp_XYZ_x(gp_XYZ * xyz){+    return xyz->X();+}++double hs_gp_XYZ_y(gp_XYZ * xyz){+    return xyz->Y();+}++double hs_gp_XYZ_z(gp_XYZ * xyz){+    return xyz->Z();+}+
+ cpp/hs_gp_XYZ.h view
@@ -0,0 +1,33 @@+#ifndef HS_GP_XYZ_H+#define HS_GP_XYZ_H++#include "hs_types.h"++#ifdef __cplusplus+extern "C" {+#endif++gp_XYZ * hs_new_gp_XYZ();++gp_XYZ * hs_new_gp_XYZ_fromDoubles(double x, double y, double z);++void hs_delete_gp_XYZ(gp_XYZ * xyz);++void hs_gp_XYZ_setX(gp_XYZ * xyz, double x);++void hs_gp_XYZ_setY(gp_XYZ * xyz, double y);++void hs_gp_XYZ_setZ(gp_XYZ * xyz, double z);++double hs_gp_XYZ_x(gp_XYZ * xyz);++double hs_gp_XYZ_y(gp_XYZ * xyz);++double hs_gp_XYZ_z(gp_XYZ * xyz);++#ifdef __cplusplus+}+#endif++#endif // HS_GP_XYZ_H+
cpp/hs_types.h view
@@ -28,6 +28,7 @@ typedef void gp_Trsf; typedef void gp_GTrsf; typedef void gp_Trsf2d;+typedef void gp_XYZ; typedef void BRep_Builder; typedef void BRepBuilderAPI_Transform; typedef void BRepBuilderAPI_MakeWire;@@ -62,6 +63,9 @@ typedef void BRepOffsetAPI_MakeOffsetShape; typedef int BRepOffset_Mode; typedef int GeomAbs_JoinType;+typedef void GProp_GProps;+typedef void Bnd_Box;+typedef void Bnd_OBB; #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.1.2.2+version:        0.2.0.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@@ -21,10 +21,13 @@     LICENSE     README.md     CHANGELOG.md+    cpp/hs_Bnd_Box.h+    cpp/hs_Bnd_OBB.h     cpp/hs_BRep_Tool.h     cpp/hs_BRepAlgoAPI_Common.h     cpp/hs_BRepAlgoAPI_Cut.h     cpp/hs_BRepAlgoAPI_Fuse.h+    cpp/hs_BRepBndLib.h     cpp/hs_BRepBuilderAPI_GTransform.h     cpp/hs_BRepBuilderAPI_MakeEdge.h     cpp/hs_BRepBuilderAPI_MakeFace.h@@ -33,6 +36,7 @@     cpp/hs_BRepBuilderAPI_MakeWire.h     cpp/hs_BRepBuilderAPI_Transform.h     cpp/hs_BRepFilletAPI_MakeFillet.h+    cpp/hs_BRepGProp.h     cpp/hs_BRepMesh_IncrementalMesh.h     cpp/hs_BRepOffsetAPI_MakeOffsetShape.h     cpp/hs_BRepOffsetAPI_MakePipe.h@@ -64,6 +68,8 @@     cpp/hs_gp_Trsf2d.h     cpp/hs_gp_Vec.h     cpp/hs_gp_Vec2d.h+    cpp/hs_gp_XYZ.h+    cpp/hs_GProp_GProps.h     cpp/hs_NCollection_Array1.h     cpp/hs_STEPControl_Writer.h     cpp/hs_StlAPI_Writer.h@@ -86,10 +92,15 @@  library   exposed-modules:+      OpenCascade.Bnd.Box+      OpenCascade.Bnd.Internal.Destructors+      OpenCascade.Bnd.OBB+      OpenCascade.Bnd.Types       OpenCascade.BRep.Tool       OpenCascade.BRepAlgoAPI.Common       OpenCascade.BRepAlgoAPI.Cut       OpenCascade.BRepAlgoAPI.Fuse+      OpenCascade.BRepBndLib       OpenCascade.BRepBuilderAPI       OpenCascade.BRepBuilderAPI.FaceError       OpenCascade.BRepBuilderAPI.GTransform@@ -106,6 +117,7 @@       OpenCascade.BRepFilletAPI.Internal.Destructors       OpenCascade.BRepFilletAPI.MakeFillet       OpenCascade.BRepFilletAPI.Types+      OpenCascade.BRepGProp       OpenCascade.BRepMesh       OpenCascade.BRepMesh.IncrementalMesh       OpenCascade.BRepMesh.Internal.Destructors@@ -158,6 +170,10 @@       OpenCascade.GP.Types       OpenCascade.GP.Vec       OpenCascade.GP.Vec2d+      OpenCascade.GP.XYZ+      OpenCascade.GProp.GProps+      OpenCascade.GProp.Internal.Destructors+      OpenCascade.GProp.Types       OpenCascade.Graphic3D.HorizontalTextAlignment       OpenCascade.Graphic3D.VerticalTextAlignment       OpenCascade.Handle@@ -208,16 +224,19 @@       Paths_opencascade_hs   hs-source-dirs:       src-  ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints -optc -Werror-implicit-function-declaration+  ghc-options: -Wall -Werror=compat -Werror=identities -Werror=incomplete-record-updates -Werror=incomplete-uni-patterns -Werror=missing-home-modules -Werror=missing-export-lists -Werror=partial-fields -Werror=redundant-constraints -optc -Werror-implicit-function-declaration   cxx-options: --std=c++17 -Wall -Werror -Wno-deprecated   include-dirs:       cpp       /usr/include/opencascade   cxx-sources:+      cpp/hs_Bnd_Box.cpp+      cpp/hs_Bnd_OBB.cpp       cpp/hs_BRep_Tool.cpp       cpp/hs_BRepAlgoAPI_Common.cpp       cpp/hs_BRepAlgoAPI_Cut.cpp       cpp/hs_BRepAlgoAPI_Fuse.cpp+      cpp/hs_BRepBndLib.cpp       cpp/hs_BRepBuilderAPI_GTransform.cpp       cpp/hs_BRepBuilderAPI_MakeEdge.cpp       cpp/hs_BRepBuilderAPI_MakeFace.cpp@@ -226,6 +245,7 @@       cpp/hs_BRepBuilderAPI_MakeWire.cpp       cpp/hs_BRepBuilderAPI_Transform.cpp       cpp/hs_BRepFilletAPI_MakeFillet.cpp+      cpp/hs_BRepGProp.cpp       cpp/hs_BRepMesh_IncrementalMesh.cpp       cpp/hs_BRepOffsetAPI_MakeOffsetShape.cpp       cpp/hs_BRepOffsetAPI_MakePipe.cpp@@ -257,6 +277,8 @@       cpp/hs_gp_Trsf2d.cpp       cpp/hs_gp_Vec.cpp       cpp/hs_gp_Vec2d.cpp+      cpp/hs_gp_XYZ.cpp+      cpp/hs_GProp_GProps.cpp       cpp/hs_NCollection_Array1.cpp       cpp/hs_STEPControl_Writer.cpp       cpp/hs_StlAPI_Writer.cpp
+ src/OpenCascade/BRepBndLib.hs view
@@ -0,0 +1,34 @@+{-# LANGUAGE CApiFFI#-}+module OpenCascade.BRepBndLib +( add+, addOptimal+, addOBB+) where ++import OpenCascade.TopoDS.Types (Shape)+import OpenCascade.Bnd.Types (Box, OBB)+import Foreign.Ptr (Ptr)+import Foreign.C (CBool (..))+import OpenCascade.Internal.Bool (boolToCBool)++foreign import capi unsafe "hs_BRepBndLib.h hs_BRepBndLib_add" rawAdd ::  Ptr Shape -> Ptr Box -> CBool -> IO ()++add :: Ptr Shape  -> Ptr Box -> Bool -> IO ()+add shape box useTriangulation = rawAdd shape box (boolToCBool useTriangulation)++foreign import capi unsafe "hs_BRepBndLib.h hs_BRepBndLib_addOptimal" rawAddOptimal ::  Ptr Shape -> Ptr Box -> CBool -> CBool -> IO ()++addOptimal :: Ptr Shape  -> Ptr Box -> Bool -- ^ useTriangulation+    -> Bool -- ^ useShapeTolerance+    -> IO ()+addOptimal shape box useTriangulation useShapeTolerance = +    rawAddOptimal shape box (boolToCBool useTriangulation) (boolToCBool useShapeTolerance)++foreign import capi unsafe "hs_BRepBndLib.h hs_BRepBndLib_addOBB" rawAddOBB ::  Ptr Shape -> Ptr OBB -> CBool -> CBool -> CBool -> IO ()++addOBB :: Ptr Shape -> Ptr OBB -> Bool -- ^ isTriangulation used+    -> Bool -- ^ isOptimal+    -> Bool -- ^ is ShapeToleranceUsed+    -> IO ()+addOBB shape obb triangulationUsed optimal shapeToleranceUsed = +    rawAddOBB shape obb (boolToCBool triangulationUsed) (boolToCBool optimal) (boolToCBool shapeToleranceUsed)
src/OpenCascade/BRepBuilderAPI/Internal/Destructors.hs view
@@ -1,5 +1,9 @@ {-# LANGUAGE CApiFFI #-}-module OpenCascade.BRepBuilderAPI.Internal.Destructors where+module OpenCascade.BRepBuilderAPI.Internal.Destructors+( deleteMakeWire+, deleteMakeFace+, deleteMakeSolid+) where  import OpenCascade.BRepBuilderAPI.Types 
src/OpenCascade/BRepBuilderAPI/Types.hs view
@@ -1,6 +1,11 @@ {-# LANGUAGE MultiParamTypeClasses #-}  {-# LANGUAGE EmptyDataDecls #-}-module OpenCascade.BRepBuilderAPI.Types where+module OpenCascade.BRepBuilderAPI.Types +( MakeWire+, MakeFace+, MakeSolid+, MakeShape+) where  import qualified OpenCascade.Inheritance as Inheritance 
src/OpenCascade/BRepFilletAPI/Internal/Destructors.hs view
@@ -1,5 +1,7 @@ {-# LANGUAGE CApiFFI #-}-module OpenCascade.BRepFilletAPI.Internal.Destructors where+module OpenCascade.BRepFilletAPI.Internal.Destructors+( deleteMakeFillet+) where  import OpenCascade.BRepFilletAPI.Types 
+ src/OpenCascade/BRepGProp.hs view
@@ -0,0 +1,15 @@+{-# LANGUAGE CApiFFI #-}+module OpenCascade.BRepGProp (volumeProperties) where++import OpenCascade.TopoDS.Types (Shape)+import OpenCascade.GProp.Types (GProps)+import Foreign.Ptr (Ptr)+import Foreign.C (CBool (..))+import OpenCascade.Internal.Bool (boolToCBool)++foreign import capi unsafe "hs_BRepGProp.h hs_BRepGProp_VolumeProperties" rawVolumeProperties :: Ptr Shape -> Ptr GProps -> CBool -> CBool -> CBool -> IO ()++volumeProperties :: Ptr Shape -> Ptr GProps -> Bool -> Bool -> Bool -> IO ()+volumeProperties shape props onlyClosed skipShared useTriangulation =+    rawVolumeProperties shape props (boolToCBool onlyClosed) (boolToCBool skipShared) (boolToCBool useTriangulation)+ 
src/OpenCascade/BRepMesh/Internal/Destructors.hs view
@@ -1,5 +1,7 @@ {-# LANGUAGE CApiFFI #-}-module OpenCascade.BRepMesh.Internal.Destructors where+module OpenCascade.BRepMesh.Internal.Destructors +( deleteIncrementalMesh+) where  import OpenCascade.BRepMesh.Types 
src/OpenCascade/BRepMesh/Types.hs view
@@ -1,4 +1,6 @@ {-# LANGUAGE EmptyDataDecls #-}-module OpenCascade.BRepMesh.Types where+module OpenCascade.BRepMesh.Types +( IncrementalMesh+) where  data IncrementalMesh
src/OpenCascade/BRepOffsetAPI/Internal/Destructors.hs view
@@ -1,5 +1,8 @@ {-# LANGUAGE CApiFFI #-}-module OpenCascade.BRepOffsetAPI.Internal.Destructors where+module OpenCascade.BRepOffsetAPI.Internal.Destructors+( deleteMakePipe+, deleteMakeOffsetShape+) where  import OpenCascade.BRepOffsetAPI.Types 
src/OpenCascade/BRepPrimAPI/Internal/Destructors.hs view
@@ -1,5 +1,8 @@ {-# LANGUAGE CApiFFI #-}-module OpenCascade.BRepPrimAPI.Internal.Destructors where+module OpenCascade.BRepPrimAPI.Internal.Destructors +( deleteMakeBox+, deleteMakeRevol+) where  import OpenCascade.BRepPrimAPI.Types 
src/OpenCascade/BRepTools/Internal/Destructors.hs view
@@ -1,5 +1,7 @@ {-# LANGUAGE CApiFFI #-}-module OpenCascade.BRepTools.Internal.Destructors where+module OpenCascade.BRepTools.Internal.Destructors+( deleteWireExplorer+) where  import OpenCascade.BRepTools.Types 
src/OpenCascade/BRepTools/Types.hs view
@@ -1,4 +1,6 @@ {-# LANGUAGE EmptyDataDecls #-}-module OpenCascade.BRepTools.Types where+module OpenCascade.BRepTools.Types +( WireExplorer+) where  data WireExplorer
+ src/OpenCascade/Bnd/Box.hs view
@@ -0,0 +1,29 @@+{-# LANGUAGE CApiFFI #-}+module OpenCascade.Bnd.Box+( Box+, new+, cornerMin+, cornerMax+) where++import OpenCascade.Bnd.Types+import OpenCascade.Bnd.Internal.Destructors (deleteBox)+import OpenCascade.GP.Types (Pnt)+import OpenCascade.GP.Internal.Destructors (deletePnt)+import Data.Acquire (Acquire, mkAcquire)+import Foreign.Ptr (Ptr)++foreign import capi unsafe "hs_Bnd_Box.h hs_new_Bnd_Box" rawNew ::  IO (Ptr Box)++new :: Acquire (Ptr Box)+new = mkAcquire rawNew deleteBox++foreign import capi unsafe "hs_Bnd_Box.h hs_Bnd_Box_cornerMin" rawCornerMin :: Ptr Box -> IO (Ptr Pnt)++cornerMin :: Ptr Box -> Acquire (Ptr Pnt)+cornerMin box = mkAcquire (rawCornerMin box) deletePnt++foreign import capi unsafe "hs_Bnd_Box.h hs_Bnd_Box_cornerMax" rawCornerMax :: Ptr Box -> IO (Ptr Pnt)++cornerMax :: Ptr Box -> Acquire (Ptr Pnt)+cornerMax box = mkAcquire (rawCornerMax box) deletePnt
+ src/OpenCascade/Bnd/Internal/Destructors.hs view
@@ -0,0 +1,11 @@+{-# LANGUAGE CApiFFI #-}+module OpenCascade.Bnd.Internal.Destructors +( deleteBox+, deleteOBB+) where++import Foreign.Ptr+import OpenCascade.Bnd.Types ++foreign import capi unsafe "hs_Bnd_Box.h hs_delete_Bnd_Box" deleteBox :: Ptr Box -> IO ()+foreign import capi unsafe "hs_Bnd_OBB.h hs_delete_Bnd_OBB" deleteOBB :: Ptr OBB -> IO ()
+ src/OpenCascade/Bnd/OBB.hs view
@@ -0,0 +1,63 @@+{-# LANGUAGE CApiFFI #-}+module OpenCascade.Bnd.OBB+( OBB+, new+, center+, xDirection, yDirection, zDirection+, xHSize, yHSize, zHSize+, position+) where++import OpenCascade.Bnd.Types+import OpenCascade.Bnd.Internal.Destructors (deleteOBB)+import OpenCascade.GP.Types (XYZ, Ax3)+import OpenCascade.GP.Internal.Destructors (deleteXYZ, deleteAx3)+import Data.Acquire (Acquire, mkAcquire)+import Foreign.Ptr (Ptr)+import Foreign.C (CDouble (..))+import Data.Coerce (coerce)++foreign import capi unsafe "hs_Bnd_OBB.h hs_new_Bnd_OBB" rawNew ::  IO (Ptr OBB)++new :: Acquire (Ptr OBB)+new = mkAcquire rawNew deleteOBB++foreign import capi unsafe "hs_Bnd_OBB.h hs_Bnd_OBB_center" rawCenter :: Ptr OBB -> IO (Ptr XYZ)++center :: Ptr OBB -> Acquire (Ptr XYZ)+center obb = mkAcquire (rawCenter obb) deleteXYZ++foreign import capi unsafe "hs_Bnd_OBB.h hs_Bnd_OBB_xDirection" rawXDirection :: Ptr OBB -> IO (Ptr XYZ)++xDirection :: Ptr OBB -> Acquire (Ptr XYZ)+xDirection obb = mkAcquire (rawXDirection obb) deleteXYZ++foreign import capi unsafe "hs_Bnd_OBB.h hs_Bnd_OBB_yDirection" rawYDirection :: Ptr OBB -> IO (Ptr XYZ)++yDirection :: Ptr OBB -> Acquire (Ptr XYZ)+yDirection obb = mkAcquire (rawYDirection obb) deleteXYZ++foreign import capi unsafe "hs_Bnd_OBB.h hs_Bnd_OBB_zDirection" rawZDirection :: Ptr OBB -> IO (Ptr XYZ)++zDirection :: Ptr OBB -> Acquire (Ptr XYZ)+zDirection obb = mkAcquire (rawZDirection obb) deleteXYZ++foreign import capi unsafe "hs_Bnd_OBB.h hs_Bnd_OBB_xHSize" rawXHSize :: Ptr OBB -> IO (CDouble)++xHSize :: Ptr OBB -> IO Double +xHSize = coerce rawXHSize++foreign import capi unsafe "hs_Bnd_OBB.h hs_Bnd_OBB_yHSize" rawYHSize :: Ptr OBB -> IO (CDouble)++yHSize :: Ptr OBB -> IO Double +yHSize = coerce rawYHSize++foreign import capi unsafe "hs_Bnd_OBB.h hs_Bnd_OBB_zHSize" rawZHSize :: Ptr OBB -> IO (CDouble)++zHSize :: Ptr OBB -> IO Double +zHSize = coerce rawZHSize ++foreign import capi unsafe "hs_Bnd_OBB.h hs_Bnd_OBB_position" rawPosition :: Ptr OBB -> IO (Ptr Ax3)++position :: Ptr OBB -> Acquire (Ptr Ax3)+position obb = mkAcquire (rawPosition obb) deleteAx3
+ src/OpenCascade/Bnd/Types.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE EmptyDataDecls #-}+module OpenCascade.Bnd.Types+( Box+, OBB+) where++data Box+data OBB
src/OpenCascade/Font/Internal/Destructors.hs view
@@ -1,5 +1,8 @@ {-# LANGUAGE CApiFFI #-}-module OpenCascade.Font.Internal.Destructors where+module OpenCascade.Font.Internal.Destructors+( deleteBRepFont+, deleteBRepTextBuilder+) where   import OpenCascade.Font.Types
src/OpenCascade/Font/Types.hs view
@@ -1,5 +1,8 @@ {-# LANGUAGE EmptyDataDecls #-}-module OpenCascade.Font.Types where+module OpenCascade.Font.Types +( BRepFont+, BRepTextBuilder+) where  data BRepFont data BRepTextBuilder 
src/OpenCascade/GP/Internal/Destructors.hs view
@@ -1,5 +1,20 @@ {-# LANGUAGE CApiFFI #-}-module OpenCascade.GP.Internal.Destructors where+module OpenCascade.GP.Internal.Destructors+( deletePnt+, deletePnt2d+, deleteAx1+, deleteAx2+, deleteAx2d+, deleteAx3+, deleteDir+, deleteDir2d+, deleteVec+, deleteVec2d+, deleteTrsf+, deleteTrsf2d+, deleteGTrsf+, deleteXYZ+) where  import OpenCascade.GP.Types @@ -18,4 +33,5 @@ foreign import capi unsafe "hs_gp_Trsf.h hs_delete_gp_Trsf" deleteTrsf :: Ptr Trsf -> IO () foreign import capi unsafe "hs_gp_GTrsf.h hs_delete_gp_GTrsf" deleteGTrsf :: Ptr GTrsf -> IO () foreign import capi unsafe "hs_gp_Trsf2d.h hs_delete_gp_Trsf2d" deleteTrsf2d :: Ptr Trsf2d -> IO ()+foreign import capi unsafe "hs_gp_XYZ.h hs_delete_gp_XYZ" deleteXYZ :: Ptr XYZ -> IO () 
src/OpenCascade/GP/Trsf.hs view
@@ -9,6 +9,7 @@ , setRotationAboutAxisAngle , setScale , setTranslation+, setDisplacement , setScaleFactor , setTranslationPart , setValues@@ -71,6 +72,10 @@ foreign import capi unsafe "hs_gp_Trsf.h hs_gp_Trsf_SetTranslation" setTranslation :: Ptr Trsf -> Ptr Vec -> IO ()  foreign import capi unsafe "hs_gp_Trsf.h hs_gp_Trsf_SetTranslationPart" setTranslationPart :: Ptr Trsf -> Ptr Vec -> IO ()++-- setDisplacement++foreign import capi unsafe "hs_gp_Trsf.h hs_gp_Trsf_SetDisplacement" setDisplacement :: Ptr Trsf -> Ptr Ax3 -> Ptr Ax3 -> IO ()  -- scaleFactor 
src/OpenCascade/GP/Types.hs view
@@ -1,5 +1,20 @@ {-# LANGUAGE EmptyDataDecls #-}-module OpenCascade.GP.Types where+module OpenCascade.GP.Types+( Pnt+, Pnt2d+, Ax1+, Ax2+, Ax2d+, Ax3+, Dir+, Dir2d+, Vec+, Vec2d+, Trsf+, Trsf2d+, GTrsf+, XYZ+) where  data Pnt data Pnt2d@@ -14,4 +29,4 @@ data Trsf data Trsf2d data GTrsf-+data XYZ
+ src/OpenCascade/GP/XYZ.hs view
@@ -0,0 +1,55 @@+{-# LANGUAGE CApiFFI #-}+module OpenCascade.GP.XYZ +( XYZ+, newXYZ+, fromDoubles+, setX, setY, setZ+, x, y, z+) where++import OpenCascade.GP.Types (XYZ)+import OpenCascade.GP.Internal.Destructors (deleteXYZ)+import Foreign.Ptr (Ptr)+import Foreign.C (CDouble (..))+import Data.Acquire (Acquire, mkAcquire)+import Data.Coerce (coerce)++foreign import capi unsafe "hs_gp_XYZ.h hs_new_gp_XYZ" rawNewXYZ :: IO (Ptr XYZ)++newXYZ :: Acquire (Ptr XYZ)+newXYZ = mkAcquire rawNewXYZ deleteXYZ++foreign import capi unsafe "hs_gp_XYZ.h hs_new_gp_XYZ_fromDoubles" rawFromDoubles :: CDouble -> CDouble -> CDouble -> IO (Ptr XYZ)++fromDoubles :: Double -> Double -> Double -> Acquire (Ptr XYZ)+fromDoubles x' y' z' = mkAcquire ((coerce rawFromDoubles) x' y' z') (deleteXYZ)++foreign import capi unsafe "hs_gp_XYZ.h hs_gp_XYZ_setX" rawSetX :: Ptr XYZ -> CDouble -> IO ()++setX :: Ptr XYZ -> Double -> IO ()+setX = coerce  rawSetX++foreign import capi unsafe "hs_gp_XYZ.h hs_gp_XYZ_setY" rawSetY :: Ptr XYZ -> CDouble -> IO ()++setY :: Ptr XYZ -> Double -> IO ()+setY = coerce  rawSetY++foreign import capi unsafe "hs_gp_XYZ.h hs_gp_XYZ_setZ" rawSetZ :: Ptr XYZ -> CDouble -> IO ()++setZ :: Ptr XYZ -> Double -> IO ()+setZ = coerce rawSetZ++foreign import capi unsafe "hs_gp_XYZ.h hs_gp_XYZ_x" rawX :: Ptr XYZ -> IO (CDouble)++x :: Ptr XYZ -> IO Double+x = coerce rawX++foreign import capi unsafe "hs_gp_XYZ.h hs_gp_XYZ_y" rawY :: Ptr XYZ -> IO (CDouble)++y:: Ptr XYZ -> IO Double+y = coerce rawY++foreign import capi unsafe "hs_gp_XYZ.h hs_gp_XYZ_z" rawZ :: Ptr XYZ -> IO (CDouble)++z :: Ptr XYZ -> IO Double+z = coerce rawZ
+ src/OpenCascade/GProp/GProps.hs view
@@ -0,0 +1,43 @@+{-# LANGUAGE CApiFFI #-}+module OpenCascade.GProp.GProps+( GProps+, new+, fromSystemLocation+, mass+, centreOfMass+, momentOfInertia+) where++import Foreign.Ptr (Ptr)+import Foreign.C (CDouble (..))+import OpenCascade.GProp.Types (GProps)+import OpenCascade.GProp.Internal.Destructors (deleteGProps)+import OpenCascade.GP.Types (Pnt, Ax1)+import OpenCascade.GP.Internal.Destructors (deletePnt)+import Data.Acquire +import Data.Coerce (coerce)++foreign import capi unsafe "hs_GProp_GProps.h hs_new_GProp_GProps" rawNew :: IO (Ptr GProps)++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)++fromSystemLocation :: Ptr Pnt -> Acquire (Ptr GProps)+fromSystemLocation pnt = mkAcquire (rawFromSystemLocation pnt) deleteGProps++foreign import capi unsafe "hs_GProp_GProps.h hs_GProp_GProps_mass" rawMass :: Ptr GProps -> IO CDouble ++mass :: Ptr GProps -> IO Double+mass = coerce rawMass++foreign import capi unsafe "hs_GProp_GProps.h hs_GProp_GProps_centreOfMass" rawCentreOfMass :: Ptr GProps -> IO (Ptr Pnt)++centreOfMass :: Ptr GProps -> Acquire (Ptr Pnt)+centreOfMass gProps = mkAcquire (rawCentreOfMass gProps) deletePnt++foreign import capi unsafe "hs_GProp_GProps.h hs_GProp_GProps_momentOfInertia" rawMomentOfIntertia :: Ptr GProps -> Ptr Ax1 -> IO CDouble ++momentOfInertia :: Ptr GProps -> Ptr Ax1 -> IO Double+momentOfInertia = coerce rawMomentOfIntertia
+ src/OpenCascade/GProp/Internal/Destructors.hs view
@@ -0,0 +1,10 @@+{-# LANGUAGE CApiFFI #-}+module OpenCascade.GProp.Internal.Destructors +( deleteGProps+) where++import OpenCascade.GProp.Types++import Foreign.Ptr (Ptr)++foreign import capi unsafe "hs_GProp_GProps.h hs_delete_GProp_GProps" deleteGProps :: Ptr GProps-> IO ()
+ src/OpenCascade/GProp/Types.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE EmptyDataDecls #-}+module OpenCascade.GProp.Types+( GProps+) where++data GProps
src/OpenCascade/Geom/Internal/Destructors.hs view
@@ -1,5 +1,10 @@ {-# LANGUAGE CApiFFI #-}-module OpenCascade.Geom.Internal.Destructors where+module OpenCascade.Geom.Internal.Destructors +( deleteHandleCurve+, deleteHandleTrimmedCurve+, deleteHandleBezierCurve+, deleteBezierCurve+) where  import OpenCascade.Geom.Types 
src/OpenCascade/NCollection/Internal/Destructors.hs view
@@ -1,5 +1,7 @@ {-# LANGUAGE CApiFFI #-}-module OpenCascade.NCollection.Internal.Destructors where+module OpenCascade.NCollection.Internal.Destructors+( deletePntArray+) where  import OpenCascade.NCollection.Types import OpenCascade.GP.Types
src/OpenCascade/NCollection/Types.hs view
@@ -1,4 +1,6 @@ {-# LANGUAGE EmptyDataDecls #-}-module OpenCascade.NCollection.Types where+module OpenCascade.NCollection.Types +( Array1+) where  data Array1 a
src/OpenCascade/STEPControl/Internal/Destructors.hs view
@@ -1,5 +1,7 @@ {-# LANGUAGE CApiFFI #-}-module OpenCascade.STEPControl.Internal.Destructors where+module OpenCascade.STEPControl.Internal.Destructors +( deleteWriter+) where  import OpenCascade.STEPControl.Types 
src/OpenCascade/STEPControl/Types.hs view
@@ -1,4 +1,6 @@ {-# LANGUAGE EmptyDataDecls #-}-module OpenCascade.STEPControl.Types where+module OpenCascade.STEPControl.Types+( Writer+) where  data Writer
src/OpenCascade/StlAPI/Internal/Destructors.hs view
@@ -1,5 +1,7 @@ {-# LANGUAGE CApiFFI #-}-module OpenCascade.StlAPI.Internal.Destructors where+module OpenCascade.StlAPI.Internal.Destructors +( deleteWriter+) where  import OpenCascade.StlAPI.Types 
src/OpenCascade/StlAPI/Types.hs view
@@ -1,5 +1,7 @@  {-# LANGUAGE EmptyDataDecls #-}-module OpenCascade.StlAPI.Types where+module OpenCascade.StlAPI.Types +( Writer+) where  data Writer
src/OpenCascade/TopExp/Internal/Destructors.hs view
@@ -1,5 +1,7 @@ {-# LANGUAGE CApiFFI #-}-module OpenCascade.TopExp.Internal.Destructors where+module OpenCascade.TopExp.Internal.Destructors +( deleteExplorer+) where  import OpenCascade.TopExp.Types 
src/OpenCascade/TopExp/Types.hs view
@@ -1,4 +1,6 @@ {-# LANGUAGE EmptyDataDecls #-}-module OpenCascade.TopExp.Types where+module OpenCascade.TopExp.Types +( Explorer+) where  data Explorer
src/OpenCascade/TopLoc/Internal/Destructors.hs view
@@ -1,5 +1,7 @@ {-# LANGUAGE CApiFFI #-}-module OpenCascade.TopLoc.Internal.Destructors where+module OpenCascade.TopLoc.Internal.Destructors+( deleteLocation+) where  import OpenCascade.TopLoc.Types 
src/OpenCascade/TopLoc/Types.hs view
@@ -1,5 +1,7 @@ {-# LANGUAGE EmptyDataDecls #-}-module OpenCascade.TopLoc.Types where+module OpenCascade.TopLoc.Types +( Location+) where  data Location 
src/OpenCascade/TopTools/Types.hs view
@@ -1,4 +1,6 @@ {-# LANGUAGE EmptyDataDecls #-}-module OpenCascade.TopTools.Types where+module OpenCascade.TopTools.Types +( ListOfShape+) where  data ListOfShape
src/OpenCascade/TopoDS/Internal/Destructors.hs view
@@ -1,5 +1,7 @@ {-# LANGUAGE CApiFFI #-}-module OpenCascade.TopoDS.Internal.Destructors where+module OpenCascade.TopoDS.Internal.Destructors +( deleteShape+) where  import OpenCascade.TopoDS.Types