{-# LANGUAGE CApiFFI #-} module OpenCascade.Poly.Triangulation (Triangulation , new , nbNodes , nbTriangles , node , setNode , triangle , setTriangle ) where import OpenCascade.Poly.Types (Triangle, Triangulation) import OpenCascade.Poly.Internal.Destructors (deleteHandleTriangulation, deleteTriangle) import OpenCascade.GP.Types as GP import OpenCascade.GP.Internal.Destructors (deletePnt) import OpenCascade.Handle (Handle) import Foreign.Ptr (Ptr) import Foreign.C (CInt (..), CBool (..)) import OpenCascade.Internal.Bool (boolToCBool) import Data.Acquire (Acquire, mkAcquire) foreign import capi unsafe "hs_Poly_Triangulation.h hs_new_Poly_Triangulation" rawNew :: CInt -> CInt -> CBool -> CBool -> IO (Ptr (Handle Triangulation)) new :: Int -> Int -> Bool -> Bool -> Acquire (Ptr (Handle Triangulation)) new :: Int -> Int -> Bool -> Bool -> Acquire (Ptr (Handle Triangulation)) new Int nNodes Int nTriangles Bool hasUVNodes Bool hasNormals = IO (Ptr (Handle Triangulation)) -> (Ptr (Handle Triangulation) -> IO ()) -> Acquire (Ptr (Handle Triangulation)) forall a. IO a -> (a -> IO ()) -> Acquire a mkAcquire (CInt -> CInt -> CBool -> CBool -> IO (Ptr (Handle Triangulation)) rawNew (Int -> CInt forall a b. (Integral a, Num b) => a -> b fromIntegral Int nNodes) (Int -> CInt forall a b. (Integral a, Num b) => a -> b fromIntegral Int nTriangles) (Bool -> CBool boolToCBool Bool hasUVNodes) (Bool -> CBool boolToCBool Bool hasNormals)) Ptr (Handle Triangulation) -> IO () deleteHandleTriangulation foreign import capi unsafe "hs_Poly_Triangulation.h hs_Poly_Triangulation_nbNodes" rawNbNodes :: Ptr (Handle Triangulation) -> IO CInt nbNodes :: Ptr (Handle Triangulation) -> IO Int nbNodes :: Ptr (Handle Triangulation) -> IO Int nbNodes Ptr (Handle Triangulation) tri = CInt -> Int forall a b. (Integral a, Num b) => a -> b fromIntegral (CInt -> Int) -> IO CInt -> IO Int forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Ptr (Handle Triangulation) -> IO CInt rawNbNodes Ptr (Handle Triangulation) tri foreign import capi unsafe "hs_Poly_Triangulation.h hs_Poly_Triangulation_nbTriangles" rawNbTriangles :: Ptr (Handle Triangulation) -> IO CInt nbTriangles :: Ptr (Handle Triangulation) -> IO Int nbTriangles :: Ptr (Handle Triangulation) -> IO Int nbTriangles Ptr (Handle Triangulation) tri = CInt -> Int forall a b. (Integral a, Num b) => a -> b fromIntegral (CInt -> Int) -> IO CInt -> IO Int forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Ptr (Handle Triangulation) -> IO CInt rawNbTriangles Ptr (Handle Triangulation) tri foreign import capi unsafe "hs_Poly_Triangulation.h hs_Poly_Triangulation_node" rawNode :: Ptr (Handle Triangulation) -> CInt -> IO (Ptr GP.Pnt) node :: Ptr (Handle Triangulation) -> Int -> Acquire (Ptr GP.Pnt) node :: Ptr (Handle Triangulation) -> Int -> Acquire (Ptr Pnt) node Ptr (Handle Triangulation) tri Int index = IO (Ptr Pnt) -> (Ptr Pnt -> IO ()) -> Acquire (Ptr Pnt) forall a. IO a -> (a -> IO ()) -> Acquire a mkAcquire (Ptr (Handle Triangulation) -> CInt -> IO (Ptr Pnt) rawNode Ptr (Handle Triangulation) tri (Int -> CInt forall a b. (Integral a, Num b) => a -> b fromIntegral Int index)) Ptr Pnt -> IO () deletePnt foreign import capi unsafe "hs_Poly_Triangulation.h hs_Poly_Triangulation_setNode" rawSetNode :: Ptr (Handle Triangulation) -> CInt -> Ptr GP.Pnt -> IO() setNode :: Ptr (Handle Triangulation) -> Int -> Ptr GP.Pnt -> IO () setNode :: Ptr (Handle Triangulation) -> Int -> Ptr Pnt -> IO () setNode Ptr (Handle Triangulation) tri Int index Ptr Pnt pnt = Ptr (Handle Triangulation) -> CInt -> Ptr Pnt -> IO () rawSetNode Ptr (Handle Triangulation) tri (Int -> CInt forall a b. (Integral a, Num b) => a -> b fromIntegral Int index) Ptr Pnt pnt foreign import capi unsafe "hs_Poly_Triangulation.h hs_Poly_Triangulation_triangle" rawTriangle :: Ptr (Handle Triangulation) -> CInt -> IO (Ptr Triangle) triangle :: Ptr (Handle Triangulation) -> Int -> Acquire (Ptr Triangle) triangle :: Ptr (Handle Triangulation) -> Int -> Acquire (Ptr Triangle) triangle Ptr (Handle Triangulation) tri Int index = IO (Ptr Triangle) -> (Ptr Triangle -> IO ()) -> Acquire (Ptr Triangle) forall a. IO a -> (a -> IO ()) -> Acquire a mkAcquire (Ptr (Handle Triangulation) -> CInt -> IO (Ptr Triangle) rawTriangle Ptr (Handle Triangulation) tri (Int -> CInt forall a b. (Integral a, Num b) => a -> b fromIntegral Int index)) Ptr Triangle -> IO () deleteTriangle foreign import capi unsafe "hs_Poly_Triangulation.h hs_Poly_Triangulation_setTriangle" rawSetTriangle :: Ptr (Handle Triangulation) -> CInt -> Ptr Triangle -> IO () setTriangle :: Ptr (Handle Triangulation) -> Int -> Ptr Triangle -> IO () setTriangle :: Ptr (Handle Triangulation) -> Int -> Ptr Triangle -> IO () setTriangle Ptr (Handle Triangulation) tri Int index Ptr Triangle theTriangle = Ptr (Handle Triangulation) -> CInt -> Ptr Triangle -> IO () rawSetTriangle Ptr (Handle Triangulation) tri (Int -> CInt forall a b. (Integral a, Num b) => a -> b fromIntegral Int index) Ptr Triangle theTriangle