packages feed

opencascade-hs-0.5.0.0: src/OpenCascade/Geom/Curve.hs

{-# LANGUAGE CApiFFI #-}
module OpenCascade.Geom.Curve 
( value
, firstParameter
, lastParameter
, dn
, reversedParameter
, reversed
) where
import Foreign.Ptr
import Foreign.C
import Data.Coerce
import Data.Acquire
import OpenCascade.Geom.Types (Curve)
import OpenCascade.GP (Pnt, Vec)
import OpenCascade.GP.Internal.Destructors (deletePnt, deleteVec)
import OpenCascade.Geom.Internal.Destructors (deleteHandleCurve)
import OpenCascade.Handle (Handle)

foreign import capi unsafe "hs_Geom_Curve.h hs_Geom_Curve_value" rawValue :: Ptr (Handle Curve) -> CDouble -> IO(Ptr Pnt)

value :: Ptr (Handle Curve) -> Double -> Acquire (Ptr Pnt)
value curve u = mkAcquire (rawValue curve (coerce u)) deletePnt

foreign import capi unsafe "hs_Geom_Curve.h hs_Geom_Curve_firstParameter" rawFirstParameter :: Ptr (Handle Curve)-> IO (CDouble)

firstParameter :: Ptr (Handle Curve) -> IO Double
firstParameter = coerce rawFirstParameter

foreign import capi unsafe "hs_Geom_Curve.h hs_Geom_Curve_lastParameter" rawLastParameter :: Ptr (Handle Curve)-> IO (CDouble)

lastParameter :: Ptr (Handle Curve) -> IO Double
lastParameter = coerce rawLastParameter

foreign import capi unsafe "hs_Geom_Curve.h hs_Geom_Curve_dn" rawDN :: Ptr (Handle Curve) -> CDouble -> CInt -> IO (Ptr Vec)

dn :: Ptr (Handle Curve) -> Double -> Int -> Acquire (Ptr Vec)
dn curve u n = mkAcquire (rawDN curve (coerce u) (fromIntegral n)) deleteVec

foreign import capi unsafe "hs_Geom_Curve.h hs_Geom_Curve_reversedParameter" rawReversedParameter :: Ptr (Handle Curve) -> CDouble -> IO CDouble

reversedParameter :: Ptr (Handle Curve) -> Double -> IO Double
reversedParameter = coerce rawReversedParameter

foreign import capi unsafe "hs_Geom_Curve.h hs_Geom_Curve_reversed" rawReversed :: Ptr (Handle Curve) -> IO (Ptr (Handle Curve))

reversed :: Ptr (Handle Curve) -> Acquire (Ptr (Handle Curve))
reversed c = mkAcquire (rawReversed c) deleteHandleCurve