{-# LANGUAGE CApiFFI #-} module OpenCascade.Geom.BezierCurve ( fromPnts , toHandle , nbPoles , pole , isRational , segment ) where import Foreign.Ptr import Foreign.C (CInt (..), CBool (..), CDouble (..)) import Data.Acquire import Data.Coerce (coerce) import OpenCascade.Geom.Types (BezierCurve) import OpenCascade.Geom.Internal.Destructors (deleteBezierCurve, deleteHandleBezierCurve) import OpenCascade.GP.Internal.Destructors (deletePnt) import OpenCascade.GP (Pnt) import OpenCascade.NCollection (Array1) import OpenCascade.Handle (Handle) import OpenCascade.Internal.Bool (cBoolToBool) foreign import capi unsafe "hs_Geom_BezierCurve.h hs_new_Geom_BezierCurve_fromPnts" rawFromPnts :: Ptr (Array1 Pnt) -> IO(Ptr BezierCurve) fromPnts :: Ptr (Array1 Pnt) -> Acquire (Ptr BezierCurve) fromPnts :: Ptr (Array1 Pnt) -> Acquire (Ptr BezierCurve) fromPnts Ptr (Array1 Pnt) arr = IO (Ptr BezierCurve) -> (Ptr BezierCurve -> IO ()) -> Acquire (Ptr BezierCurve) forall a. IO a -> (a -> IO ()) -> Acquire a mkAcquire (Ptr (Array1 Pnt) -> IO (Ptr BezierCurve) rawFromPnts Ptr (Array1 Pnt) arr) (Ptr BezierCurve -> IO () deleteBezierCurve) foreign import capi unsafe "hs_Geom_BezierCurve.h hs_Geom_BezierCurve_toHandle" rawToHandle :: Ptr BezierCurve -> IO (Ptr (Handle BezierCurve)) toHandle :: Ptr BezierCurve -> Acquire (Ptr (Handle BezierCurve)) toHandle :: Ptr BezierCurve -> Acquire (Ptr (Handle BezierCurve)) toHandle Ptr BezierCurve curve = IO (Ptr (Handle BezierCurve)) -> (Ptr (Handle BezierCurve) -> IO ()) -> Acquire (Ptr (Handle BezierCurve)) forall a. IO a -> (a -> IO ()) -> Acquire a mkAcquire (Ptr BezierCurve -> IO (Ptr (Handle BezierCurve)) rawToHandle Ptr BezierCurve curve) Ptr (Handle BezierCurve) -> IO () deleteHandleBezierCurve foreign import capi unsafe "hs_Geom_BezierCurve.h hs_Geom_BezierCurve_nbPoles" rawNbPoles :: Ptr (Handle BezierCurve) -> IO (CInt) nbPoles :: Ptr (Handle (BezierCurve)) -> IO Int nbPoles :: Ptr (Handle BezierCurve) -> IO Int nbPoles Ptr (Handle BezierCurve) h = CInt -> Int forall a b. (Integral a, Num b) => a -> b fromIntegral (CInt -> Int) -> IO CInt -> IO Int forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Ptr (Handle BezierCurve) -> IO CInt rawNbPoles Ptr (Handle BezierCurve) h foreign import capi unsafe "hs_Geom_BezierCurve.h hs_Geom_BezierCurve_pole" rawPole :: Ptr (Handle BezierCurve) -> CInt -> IO (Ptr Pnt) pole :: Ptr (Handle BezierCurve) -> Int -> Acquire (Ptr Pnt) pole :: Ptr (Handle BezierCurve) -> Int -> Acquire (Ptr Pnt) pole Ptr (Handle BezierCurve) h Int n = IO (Ptr Pnt) -> (Ptr Pnt -> IO ()) -> Acquire (Ptr Pnt) forall a. IO a -> (a -> IO ()) -> Acquire a mkAcquire (Ptr (Handle BezierCurve) -> CInt -> IO (Ptr Pnt) rawPole Ptr (Handle BezierCurve) h (Int -> CInt forall a b. (Integral a, Num b) => a -> b fromIntegral Int n)) Ptr Pnt -> IO () deletePnt foreign import capi unsafe "hs_Geom_BezierCurve.h hs_Geom_BezierCurve_isRational" rawIsRational :: Ptr (Handle BezierCurve) -> IO (CBool) isRational :: Ptr (Handle (BezierCurve)) -> IO Bool isRational :: Ptr (Handle BezierCurve) -> IO Bool isRational Ptr (Handle BezierCurve) h = CBool -> Bool cBoolToBool (CBool -> Bool) -> IO CBool -> IO Bool forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Ptr (Handle BezierCurve) -> IO CBool rawIsRational Ptr (Handle BezierCurve) h foreign import capi unsafe "hs_Geom_BezierCurve.h hs_Geom_BezierCurve_segment" rawSegment :: Ptr (Handle BezierCurve) -> CDouble -> CDouble -> IO () segment :: Ptr (Handle BezierCurve) -> Double -> Double -> IO () segment :: Ptr (Handle BezierCurve) -> Double -> Double -> IO () segment = (Ptr (Handle BezierCurve) -> CDouble -> CDouble -> IO ()) -> Ptr (Handle BezierCurve) -> Double -> Double -> IO () forall a b. Coercible a b => a -> b coerce Ptr (Handle BezierCurve) -> CDouble -> CDouble -> IO () rawSegment