{-# LANGUAGE CApiFFI #-}
module OpenCascade.GC.MakeArcOfCircle
( from3Pnts
, fromPntsAndVec
) where

import qualified OpenCascade.Geom.Internal.Destructors as Geom.Destructors
import qualified OpenCascade.GP as GP
import qualified OpenCascade.Geom as Geom
import OpenCascade.Handle
import Foreign.Ptr
import Data.Acquire 


-- from3Pnts

foreign import capi unsafe "hs_GC_MakeArcOfCircle.h hs_GC_MakeArcOfCircle_from3Pnts" rawFrom3Pnts :: Ptr GP.Pnt -> Ptr GP.Pnt -> Ptr GP.Pnt -> IO (Ptr (Handle (Geom.TrimmedCurve)))

from3Pnts :: Ptr GP.Pnt -> Ptr GP.Pnt -> Ptr GP.Pnt -> Acquire (Ptr (Handle Geom.TrimmedCurve))
from3Pnts :: Ptr Pnt
-> Ptr Pnt -> Ptr Pnt -> Acquire (Ptr (Handle TrimmedCurve))
from3Pnts Ptr Pnt
start Ptr Pnt
mid Ptr Pnt
end = IO (Ptr (Handle TrimmedCurve))
-> (Ptr (Handle TrimmedCurve) -> IO ())
-> Acquire (Ptr (Handle TrimmedCurve))
forall a. IO a -> (a -> IO ()) -> Acquire a
mkAcquire (Ptr Pnt -> Ptr Pnt -> Ptr Pnt -> IO (Ptr (Handle TrimmedCurve))
rawFrom3Pnts Ptr Pnt
start Ptr Pnt
mid Ptr Pnt
end) Ptr (Handle TrimmedCurve) -> IO ()
Geom.Destructors.deleteHandleTrimmedCurve


-- fromPntsAndVec

foreign import capi unsafe "hs_GC_MakeArcOfCircle.h hs_GC_MakeArcOfCircle_fromPntsAndVec" rawFromPntsAndVec :: Ptr GP.Pnt -> Ptr GP.Vec -> Ptr GP.Pnt -> IO (Ptr (Handle (Geom.TrimmedCurve)))

fromPntsAndVec :: Ptr GP.Pnt -> Ptr GP.Vec -> Ptr GP.Pnt -> Acquire (Ptr (Handle Geom.TrimmedCurve))
fromPntsAndVec :: Ptr Pnt
-> Ptr Vec -> Ptr Pnt -> Acquire (Ptr (Handle TrimmedCurve))
fromPntsAndVec Ptr Pnt
start Ptr Vec
dir Ptr Pnt
end = IO (Ptr (Handle TrimmedCurve))
-> (Ptr (Handle TrimmedCurve) -> IO ())
-> Acquire (Ptr (Handle TrimmedCurve))
forall a. IO a -> (a -> IO ()) -> Acquire a
mkAcquire (Ptr Pnt -> Ptr Vec -> Ptr Pnt -> IO (Ptr (Handle TrimmedCurve))
rawFromPntsAndVec Ptr Pnt
start Ptr Vec
dir Ptr Pnt
end) Ptr (Handle TrimmedCurve) -> IO ()
Geom.Destructors.deleteHandleTrimmedCurve