module TerraHS.TerraLib.TeTheme 	where

import Foreign.C.String
import qualified Foreign.Ptr (Ptr)


import TerraHS.TerraLib.TeDatabase
import TerraHS.Algebras.Base.Object -- deveria chamar cast
import TerraHS.TerraLib.TeLayer

-- | The type  @TeTheme@ represents 
data TeTheme = TeTheme String  deriving (Show)

-- | The type @TeThemePtr@ is a pointer to @TeTheme@
type TeThemePtr = Foreign.Ptr.Ptr TeTheme

instance Pointer TeTheme where
	new (TeTheme ln) =  (newCString ln) >>=  tetheme_new >>= return
	--new (TeLayer ln) = (newCString ln) >>= h_telayer_new >>= return
	delete l = error "not implemented"



loadTheme db  ln = new (TeTheme ln) >>= \theme -> (tedatabase_loadTheme db theme) >>= \st ->
	if st == True then return theme else do  error ("theme not found")

--- c

foreign import stdcall unsafe "c_tedatabase_loadTheme" tedatabase_loadTheme :: TeDatabasePtr -> TeThemePtr -> Prelude.IO Bool

foreign import stdcall unsafe "c_tetheme_new" tetheme_new :: CString -> Prelude.IO TeThemePtr

foreign import stdcall unsafe "c_tetheme_layer" tetheme_layer ::  TeThemePtr -> Prelude.IO TeLayerPtr