module Waterfall.TwoD.Internal.Shape
(Shape(..)
) where

import qualified OpenCascade.TopoDS as TopoDS
import Foreign.Ptr

-- | A Region in 2D Space 
-- 
-- In general, this is used as a face, and extruded along some sort of path
--
-- Under the hood, this is represented by an OpenCascade `TopoDS.Shape`
-- 
-- This should be of type `TopoDS.Face`, constrained to the plane \( z=0 \).
--
-- Please feel free to report a bug if you're able to construct a `Shape`
-- which does not lie on this plane (without using Internal functions).
-- Or which is not either a `TopoDS.Face`, or a composite of faces.
newtype Shape = Shape { Shape -> Ptr Shape
rawShape :: Ptr TopoDS.Shape }