{-# LANGUAGE CApiFFI #-} module OpenCascade.BRep.Tool ( curve , curveParamFirst , curveParamLast , triangulation ) where import qualified OpenCascade.Geom as Geom import qualified OpenCascade.TopoDS as TopoDS import qualified OpenCascade.TopLoc.Types as TopLoc import qualified OpenCascade.Poly.Types as Poly import OpenCascade.Poly.Internal.Destructors (deleteHandleTriangulation) import OpenCascade.Handle (Handle) import OpenCascade.Geom.Internal.Destructors (deleteHandleCurve) import Foreign.Ptr import Foreign.C import Data.Coerce import Data.Acquire (Acquire, mkAcquire) foreign import capi unsafe "hs_BRep_Tool.h hs_BRep_Tool_curve" rawCurve :: Ptr (TopoDS.Edge) -> IO(Ptr (Handle Geom.Curve)) curve :: Ptr TopoDS.Edge -> Acquire (Ptr (Handle Geom.Curve)) curve :: Ptr Edge -> Acquire (Ptr (Handle Curve)) curve Ptr Edge edge = IO (Ptr (Handle Curve)) -> (Ptr (Handle Curve) -> IO ()) -> Acquire (Ptr (Handle Curve)) forall a. IO a -> (a -> IO ()) -> Acquire a mkAcquire (Ptr Edge -> IO (Ptr (Handle Curve)) rawCurve Ptr Edge edge) Ptr (Handle Curve) -> IO () deleteHandleCurve foreign import capi unsafe "hs_BRep_Tool.h hs_BRep_Tool_curveParamFirst" rawCurveParamFirst :: Ptr (TopoDS.Edge) -> IO(CDouble) curveParamFirst :: Ptr TopoDS.Edge -> IO Double curveParamFirst :: Ptr Edge -> IO Double curveParamFirst = (Ptr Edge -> IO CDouble) -> Ptr Edge -> IO Double forall a b. Coercible a b => a -> b coerce Ptr Edge -> IO CDouble rawCurveParamFirst foreign import capi unsafe "hs_BRep_Tool.h hs_BRep_Tool_curveParamLast" rawCurveParamLast :: Ptr (TopoDS.Edge) -> IO(CDouble) curveParamLast :: Ptr TopoDS.Edge -> IO Double curveParamLast :: Ptr Edge -> IO Double curveParamLast = (Ptr Edge -> IO CDouble) -> Ptr Edge -> IO Double forall a b. Coercible a b => a -> b coerce Ptr Edge -> IO CDouble rawCurveParamLast foreign import capi unsafe "hs_BRep_Tool.h hs_BRep_Tool_triangulation" rawTriangulation :: Ptr (TopoDS.Face) -> Ptr TopLoc.Location -> IO(Ptr (Handle Poly.Triangulation)) triangulation :: Ptr TopoDS.Face -> Ptr TopLoc.Location -> Acquire (Ptr (Handle Poly.Triangulation)) triangulation :: Ptr Face -> Ptr Location -> Acquire (Ptr (Handle Triangulation)) triangulation Ptr Face face Ptr Location loc = IO (Ptr (Handle Triangulation)) -> (Ptr (Handle Triangulation) -> IO ()) -> Acquire (Ptr (Handle Triangulation)) forall a. IO a -> (a -> IO ()) -> Acquire a mkAcquire (Ptr Face -> Ptr Location -> IO (Ptr (Handle Triangulation)) rawTriangulation Ptr Face face Ptr Location loc) Ptr (Handle Triangulation) -> IO () deleteHandleTriangulation