module Waterfall.Internal.FromOpenCascade ( gpPntToV3 , gpVecToV3 , gpXYZToV3 ) where import qualified OpenCascade.GP.Pnt as GP.Pnt import qualified OpenCascade.GP.Vec as GP.Vec import qualified OpenCascade.GP.XYZ as GP.XYZ import qualified OpenCascade.GP as GP import Linear (V3 (..)) import Foreign.Ptr gpPntToV3 :: Ptr GP.Pnt -> IO (V3 Double) gpPntToV3 :: Ptr Pnt -> IO (V3 Double) gpPntToV3 Ptr Pnt pnt = Double -> Double -> Double -> V3 Double forall a. a -> a -> a -> V3 a V3 (Double -> Double -> Double -> V3 Double) -> IO Double -> IO (Double -> Double -> V3 Double) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Ptr Pnt -> IO Double GP.Pnt.getX Ptr Pnt pnt IO (Double -> Double -> V3 Double) -> IO Double -> IO (Double -> V3 Double) forall a b. IO (a -> b) -> IO a -> IO b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Ptr Pnt -> IO Double GP.Pnt.getY Ptr Pnt pnt IO (Double -> V3 Double) -> IO Double -> IO (V3 Double) forall a b. IO (a -> b) -> IO a -> IO b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Ptr Pnt -> IO Double GP.Pnt.getZ Ptr Pnt pnt gpVecToV3 :: Ptr GP.Vec -> IO (V3 Double) gpVecToV3 :: Ptr Vec -> IO (V3 Double) gpVecToV3 Ptr Vec vec = Double -> Double -> Double -> V3 Double forall a. a -> a -> a -> V3 a V3 (Double -> Double -> Double -> V3 Double) -> IO Double -> IO (Double -> Double -> V3 Double) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Ptr Vec -> IO Double GP.Vec.getX Ptr Vec vec IO (Double -> Double -> V3 Double) -> IO Double -> IO (Double -> V3 Double) forall a b. IO (a -> b) -> IO a -> IO b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Ptr Vec -> IO Double GP.Vec.getY Ptr Vec vec IO (Double -> V3 Double) -> IO Double -> IO (V3 Double) forall a b. IO (a -> b) -> IO a -> IO b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Ptr Vec -> IO Double GP.Vec.getZ Ptr Vec vec gpXYZToV3 :: Ptr GP.XYZ -> IO (V3 Double) gpXYZToV3 :: Ptr XYZ -> IO (V3 Double) gpXYZToV3 Ptr XYZ xyz = Double -> Double -> Double -> V3 Double forall a. a -> a -> a -> V3 a V3 (Double -> Double -> Double -> V3 Double) -> IO Double -> IO (Double -> Double -> V3 Double) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Ptr XYZ -> IO Double GP.XYZ.x Ptr XYZ xyz IO (Double -> Double -> V3 Double) -> IO Double -> IO (Double -> V3 Double) forall a b. IO (a -> b) -> IO a -> IO b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Ptr XYZ -> IO Double GP.XYZ.y Ptr XYZ xyz IO (Double -> V3 Double) -> IO Double -> IO (V3 Double) forall a b. IO (a -> b) -> IO a -> IO b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Ptr XYZ -> IO Double GP.XYZ.z Ptr XYZ xyz