module TerraHS.TerraLib.TeOverlay
where
import Foreign
import Foreign.C.String
import qualified Foreign.Ptr (Ptr)
--locais
import TerraHS.Misc.Object
import TerraHS.TerraLib.TeGeometry
import TerraHS.TerraLib.TePoint
import TerraHS.TerraLib.TeLine2D
import TerraHS.TerraLib.TeCell
import TerraHS.TerraLib.TeBox
import TerraHS.TerraLib.TePolygon
class Overlay a where
teunion, teintersection, tedifference :: a -> a -> [TeGeometry]
instance Overlay TePolygonSet where
teunion gs1 gs2 = unsafePerformIO (apply gs1 gs2 (\ptr1 ptr2 -> teoverlay ptr1 ptr2 2))
tedifference gs1 gs2 = unsafePerformIO (apply gs1 gs2 (\ptr1 ptr2 -> teoverlay ptr1 ptr2 1))
teintersection gs1 gs2 = unsafePerformIO (apply gs1 gs2 (\ptr1 ptr2 -> teoverlay ptr1 ptr2 4))
apply gs1 gs2 f = (TerraHS.Misc.Object.new gs1) >>= \ps1 -> (TerraHS.Misc.Object.new gs2) >>= \ps2 -> f ps1 ps2 >>= polset2geoset >>= return
where
polset2geoset gs = size gs >>= (polygonset2geometryset gs 0)
foreign import stdcall unsafe "c_teoverlay" teoverlay :: TePolygonSetPtr -> TePolygonSetPtr -> Int -> Prelude.IO TePolygonSetPtr