{-# LANGUAGE CApiFFI #-}
module OpenCascade.BRepFilletAPI.MakeFillet 
( MakeFillet
, fromShape
, addEdge
, addEdgeWithRadius
, addEdgeWithTwoRadiuses
) where

import OpenCascade.BRepFilletAPI.Types (MakeFillet)
import OpenCascade.BRepFilletAPI.Internal.Destructors (deleteMakeFillet)
import qualified OpenCascade.TopoDS as TopoDS
import Foreign.Ptr
import Foreign.C
import Data.Acquire
import Data.Coerce (coerce)

foreign import capi unsafe "hs_BRepFilletAPI_MakeFillet.h hs_new_BRepFilletAPI_MakeFillet_fromShape" rawFromShape :: Ptr TopoDS.Shape -> IO (Ptr MakeFillet)

fromShape :: Ptr TopoDS.Shape  -> Acquire (Ptr MakeFillet)
fromShape :: Ptr Shape -> Acquire (Ptr MakeFillet)
fromShape Ptr Shape
shape = IO (Ptr MakeFillet)
-> (Ptr MakeFillet -> IO ()) -> Acquire (Ptr MakeFillet)
forall a. IO a -> (a -> IO ()) -> Acquire a
mkAcquire (Ptr Shape -> IO (Ptr MakeFillet)
rawFromShape Ptr Shape
shape) Ptr MakeFillet -> IO ()
deleteMakeFillet

foreign import capi unsafe "hs_BRepFilletAPI_MakeFillet.h hs_BRepFilletAPI_MakeFillet_addEdge" addEdge :: Ptr MakeFillet -> Ptr TopoDS.Edge -> IO ()

foreign import capi unsafe "hs_BRepFilletAPI_MakeFillet.h hs_BRepFilletAPI_MakeFillet_addEdgeWithRadius" rawAddEdgeWithRadius :: Ptr MakeFillet -> CDouble -> Ptr TopoDS.Edge -> IO ()

addEdgeWithRadius :: Ptr MakeFillet -> Double -> Ptr TopoDS.Edge -> IO ()
addEdgeWithRadius :: Ptr MakeFillet -> Double -> Ptr Edge -> IO ()
addEdgeWithRadius = (Ptr MakeFillet -> CDouble -> Ptr Edge -> IO ())
-> Ptr MakeFillet -> Double -> Ptr Edge -> IO ()
forall a b. Coercible a b => a -> b
coerce Ptr MakeFillet -> CDouble -> Ptr Edge -> IO ()
rawAddEdgeWithRadius


foreign import capi unsafe "hs_BRepFilletAPI_MakeFillet.h hs_BRepFilletAPI_MakeFillet_addEdgeWithTwoRadiuses" rawAddEdgeWithTwoRadiuses :: Ptr MakeFillet -> CDouble -> CDouble -> Ptr TopoDS.Edge -> IO ()

addEdgeWithTwoRadiuses :: Ptr MakeFillet -> Double -> Double -> Ptr TopoDS.Edge -> IO ()
addEdgeWithTwoRadiuses :: Ptr MakeFillet -> Double -> Double -> Ptr Edge -> IO ()
addEdgeWithTwoRadiuses = (Ptr MakeFillet -> CDouble -> CDouble -> Ptr Edge -> IO ())
-> Ptr MakeFillet -> Double -> Double -> Ptr Edge -> IO ()
forall a b. Coercible a b => a -> b
coerce Ptr MakeFillet -> CDouble -> CDouble -> Ptr Edge -> IO ()
rawAddEdgeWithTwoRadiuses