packages feed

opencascade-hs-0.5.0.0: src/OpenCascade/GeomConvert/BSplineCurveToBezierCurve.hs

{-# LANGUAGE CApiFFI #-}
module OpenCascade.GeomConvert.BSplineCurveToBezierCurve
( BSplineCurveToBezierCurve
, fromHandle 
, fromHandleParametersAndTolerance
, nbArcs
, arc
) where

import OpenCascade.GeomConvert.Types (BSplineCurveToBezierCurve)
import OpenCascade.GeomConvert.Internal.Destructors (deleteBSplineCurveToBezierCurve)
import OpenCascade.Geom.Internal.Destructors (deleteHandleBezierCurve)
import qualified OpenCascade.Geom.Types as Geom
import OpenCascade.Handle (Handle)
import Foreign.Ptr (Ptr)
import Foreign.C (CInt (..), CDouble (..))
import Data.Coerce (coerce)
import Data.Acquire (Acquire, mkAcquire)

foreign import capi unsafe "hs_GeomConvert_BSplineCurveToBezierCurve.h hs_new_GeomConvert_BSplineCurveToBezierCurve_fromHandle" rawFromHandle :: Ptr (Handle Geom.BSplineCurve) -> IO(Ptr BSplineCurveToBezierCurve)

fromHandle :: Ptr (Handle Geom.BSplineCurve) -> Acquire (Ptr BSplineCurveToBezierCurve)
fromHandle h = mkAcquire (rawFromHandle h) (deleteBSplineCurveToBezierCurve)

foreign import capi unsafe "hs_GeomConvert_BSplineCurveToBezierCurve.h hs_new_GeomConvert_BSplineCurveToBezierCurve_fromHandleParametersAndTolerance" rawFromHandleParametersAndTolerance :: Ptr (Handle Geom.BSplineCurve) -> CDouble -> CDouble -> CDouble -> IO(Ptr BSplineCurveToBezierCurve)

fromHandleParametersAndTolerance :: Ptr (Handle Geom.BSplineCurve) -> Double -> Double -> Double -> Acquire (Ptr BSplineCurveToBezierCurve)
fromHandleParametersAndTolerance h firstParam secondParam tolerance= mkAcquire (rawFromHandleParametersAndTolerance h (coerce firstParam) (coerce secondParam) (coerce tolerance)) (deleteBSplineCurveToBezierCurve)

foreign import capi unsafe "hs_GeomConvert_BSplineCurveToBezierCurve.h hs_GeomConvert_BSplineCurveToBezierCurve_nbArcs" rawNbArcs :: Ptr (BSplineCurveToBezierCurve) -> IO CInt

nbArcs :: Ptr BSplineCurveToBezierCurve -> IO Int
nbArcs p = fromIntegral <$> rawNbArcs p

foreign import capi unsafe "hs_GeomConvert_BSplineCurveToBezierCurve.h hs_GeomConvert_BSplineCurveToBezierCurve_arc" rawArc :: Ptr (BSplineCurveToBezierCurve) -> CInt -> IO (Ptr (Handle Geom.BezierCurve))

arc :: Ptr BSplineCurveToBezierCurve -> Int -> Acquire (Ptr (Handle Geom.BezierCurve))
arc p n = mkAcquire (rawArc p (fromIntegral n)) deleteHandleBezierCurve