{-# LANGUAGE CApiFFI #-} module OpenCascade.ShapeConstruct.Curve ( Curve , new , convertToBSpline ) where import OpenCascade.ShapeConstruct.Types (Curve) import OpenCascade.ShapeConstruct.Internal.Destructors (deleteCurve) import qualified OpenCascade.Geom.Types as Geom import OpenCascade.Geom.Internal.Destructors (deleteHandleBSplineCurve) import OpenCascade.Handle (Handle) import Foreign.Ptr import Foreign.C (CDouble (..)) import Data.Acquire (Acquire, mkAcquire) import Data.Coerce (coerce) foreign import capi unsafe "hs_ShapeConstruct_Curve.h hs_new_ShapeConstruct_Curve" rawNew :: IO (Ptr Curve) new :: Acquire (Ptr Curve) new :: Acquire (Ptr Curve) new = IO (Ptr Curve) -> (Ptr Curve -> IO ()) -> Acquire (Ptr Curve) forall a. IO a -> (a -> IO ()) -> Acquire a mkAcquire IO (Ptr Curve) rawNew Ptr Curve -> IO () deleteCurve foreign import capi unsafe "hs_ShapeConstruct_Curve.h hs_ShapeConstruct_Curve_convertToBSpline" rawConvertToBSpline :: Ptr Curve -> Ptr (Handle Geom.Curve) -> CDouble -> CDouble -> CDouble -> IO (Ptr (Handle Geom.BSplineCurve)) convertToBSpline :: Ptr Curve -> Ptr (Handle Geom.Curve) -> Double -> Double -> Double -> Acquire (Ptr (Handle Geom.BSplineCurve)) convertToBSpline :: Ptr Curve -> Ptr (Handle Curve) -> Double -> Double -> Double -> Acquire (Ptr (Handle BSplineCurve)) convertToBSpline Ptr Curve shapeConstruct Ptr (Handle Curve) handleCurve Double firstParam Double lastParam Double precision = IO (Ptr (Handle BSplineCurve)) -> (Ptr (Handle BSplineCurve) -> IO ()) -> Acquire (Ptr (Handle BSplineCurve)) forall a. IO a -> (a -> IO ()) -> Acquire a mkAcquire (Ptr Curve -> Ptr (Handle Curve) -> CDouble -> CDouble -> CDouble -> IO (Ptr (Handle BSplineCurve)) rawConvertToBSpline Ptr Curve shapeConstruct Ptr (Handle Curve) handleCurve (Double -> CDouble forall a b. Coercible a b => a -> b coerce Double firstParam) (Double -> CDouble forall a b. Coercible a b => a -> b coerce Double lastParam) (Double -> CDouble forall a b. Coercible a b => a -> b coerce Double precision)) Ptr (Handle BSplineCurve) -> IO () deleteHandleBSplineCurve