opencascade-hs-0.6.3.0: src/OpenCascade/BRepOffsetAPI/MakeOffsetShape.hs
{-# LANGUAGE CApiFFI #-}
module OpenCascade.BRepOffsetAPI.MakeOffsetShape
( MakeOffsetShape
, new
, performBySimple
, performByJoin
) where
import OpenCascade.BRepOffsetAPI.Types (MakeOffsetShape)
import Data.Acquire
import OpenCascade.BRepOffsetAPI.Internal.Destructors (deleteMakeOffsetShape)
import Foreign (Ptr)
import qualified OpenCascade.TopoDS as TopoDS
import Foreign.C
import Data.Coerce (coerce)
import qualified OpenCascade.BRepOffset.Mode as BRepOffset.Mode
import qualified OpenCascade.GeomAbs.JoinType as GeomAbs.JoinType
import OpenCascade.Internal.Bool (boolToCBool)
import OpenCascade.Internal.Exception (wrapException)
foreign import capi unsafe "hs_BRepOffsetAPI_MakeOffsetShape.h hs_new_BRepOffsetAPI_MakeOffsetShape" rawNew :: IO (Ptr MakeOffsetShape)
new :: Acquire (Ptr MakeOffsetShape)
new = mkAcquire rawNew deleteMakeOffsetShape
foreign import capi unsafe "hs_BRepOffsetAPI_MakeOffsetShape.h hs_BRepOffsetAPI_MakeOffsetShape_performBySimple" rawPerformBySimple
:: Ptr MakeOffsetShape
-> Ptr TopoDS.Shape
-> CDouble
-> Ptr CInt
-> Ptr (Ptr ())
-> IO ()
performBySimple :: Ptr MakeOffsetShape -> Ptr TopoDS.Shape -> Double -> IO ()
performBySimple builder shape offset = wrapException $ rawPerformBySimple builder shape (coerce offset)
foreign import capi unsafe "hs_BRepOffsetAPI_MakeOffsetShape.h hs_BRepOffsetAPI_MakeOffsetShape_performByJoin" rawPerformByJoin
:: Ptr MakeOffsetShape
-> Ptr TopoDS.Shape
-> CDouble
-> CDouble
-> CInt
-> CBool
-> CBool
-> CInt
-> CBool
-> Ptr CInt
-> Ptr (Ptr ())
-> IO ()
-- | builder, shape, value, tol, mode intersection, selfInter, join, removeIntEdges
performByJoin :: Ptr MakeOffsetShape -> Ptr TopoDS.Shape -> Double -> Double -> BRepOffset.Mode.Mode -> Bool -> Bool -> GeomAbs.JoinType.JoinType -> Bool -> IO ()
performByJoin builder shape value tol mode intersection selfInter join removeIntEdges =
wrapException $ rawPerformByJoin builder shape (coerce value) (coerce tol) (fromIntegral $ fromEnum mode) (boolToCBool intersection) (boolToCBool selfInter) (fromIntegral . fromEnum $ join) (boolToCBool removeIntEdges)