module Waterfall.Internal.ToOpenCascade ( v3ToVertex , v3ToPnt , v3ToDir ) where import Linear (V3 (..)) import Data.Acquire (Acquire) import Foreign.Ptr (Ptr) import qualified OpenCascade.TopoDS as TopoDS import qualified OpenCascade.GP as GP import qualified OpenCascade.GP.Pnt as GP.Pnt import qualified OpenCascade.GP.Dir as GP.Dir import qualified OpenCascade.BRepBuilderAPI.MakeVertex as MakeVertex v3ToPnt :: V3 Double -> Acquire (Ptr GP.Pnt) v3ToPnt :: V3 Double -> Acquire (Ptr Pnt) v3ToPnt (V3 Double x Double y Double z) = Double -> Double -> Double -> Acquire (Ptr Pnt) GP.Pnt.new Double x Double y Double z v3ToDir :: V3 Double -> Acquire (Ptr GP.Dir) v3ToDir :: V3 Double -> Acquire (Ptr Dir) v3ToDir (V3 Double x Double y Double z) = Double -> Double -> Double -> Acquire (Ptr Dir) GP.Dir.new Double x Double y Double z v3ToVertex :: V3 Double -> Acquire (Ptr TopoDS.Vertex) v3ToVertex :: V3 Double -> Acquire (Ptr Vertex) v3ToVertex V3 Double v = do Ptr Pnt pnt <- V3 Double -> Acquire (Ptr Pnt) v3ToPnt V3 Double v Ptr MakeVertex builder <- Ptr Pnt -> Acquire (Ptr MakeVertex) MakeVertex.fromPnt Ptr Pnt pnt Ptr MakeVertex -> Acquire (Ptr Vertex) MakeVertex.vertex Ptr MakeVertex builder