module TerraHS.TerraLib.TeGeometry
(
TeGeometry (..),
pointset2geometryset, lineset2geometryset, polygonset2geometryset, cellset2geometryset
)
where
import Foreign
import Foreign.C.String
import qualified Foreign.Ptr (Ptr)
import qualified System.IO.Unsafe (unsafePerformIO)
import TerraHS.Misc.Generic
import TerraHS.Misc.Object
import TerraHS.TerraLib.TePoint
import TerraHS.TerraLib.TeLine2D
import TerraHS.TerraLib.TeCell
import TerraHS.TerraLib.TeBox
import TerraHS.TerraLib.TePolygon
data TeGeometry = GPt TePoint
| GPg TePolygon
| GLn TeLine2D
| GCl TeCell
deriving (Show,Eq)
type TeGeometryPtr = Foreign.Ptr.Ptr TeGeometry
pointset2geometryset :: TePointSetPtr -> Int32 -> Int32 -> Prelude.IO [TeGeometry]
pointset2geometryset gs i size = do
if i >= size then return [] else (getElement gs i) >>= \x -> pointset2geometryset gs (i+1) size >>= \xs -> return ((GPt x) : xs)
lineset2geometryset :: TeLineSetPtr -> Int32 -> Int32 -> Prelude.IO [TeGeometry]
lineset2geometryset gs i size = do
if i >= size then return [] else (getElement gs i) >>= \x -> lineset2geometryset gs (i+1) size >>= \xs -> return ((GLn x) : xs)
polygonset2geometryset :: TePolygonSetPtr -> Int32 -> Int32 -> Prelude.IO [TeGeometry]
polygonset2geometryset gs i size = do
if i >= size then return [] else (getElement gs i) >>= \x -> polygonset2geometryset gs (i+1) size >>= \xs -> return ((GPg x) : xs)
cellset2geometryset :: TeCellSetPtr -> Int32 -> Int32 -> Prelude.IO [TeGeometry]
cellset2geometryset gs i size = do
if i >= size then return [] else (getElement gs i) >>= \x -> cellset2geometryset gs (i+1) size >>= \xs -> return ((GCl x) : xs)