module Graphics.SceneGraph.Dump where
import System.IO
import System.Process
import Graphics.SceneGraph.Basic
import Data.Graph.Inductive
import Data.Graph.Inductive.Graphviz
import Graphics.SceneGraph.Library
dump :: SceneGraph -> IO ()
dump gr = withFile "c:/Mark/MyDevelopments/haskell/SceneGraph/src/Graphics/SceneGraph/TestLoad.hs" WriteMode $ \fd -> do
preamble fd
mapM_ (dumpNode fd gr) (nodes gr)
dumpNode fd gr nde = do
let (SceneNode (n,l) dte) = llab gr nde
hPutStrLn fd $ "n" ++ (show n) ++ " = SceneNode " ++ (show (n,l)) ++ "(" ++ (writeSceneData dte) ++ ")"
writeSceneData Group = "Group"
writeSceneData (Geode geom ) = "Geode $ " ++ (show geom)
writeSceneData LOD = "LOD"
writeSceneData (MatrixTransform m) = "MatrixTransform $ " ++ show m
writeSceneData (Switch i) = "Switch " ++ show i
writeSceneData (Material mt) = "Material $ " ++ (show mt)
writeSceneData (Handler _ _) = "Handler Nothing Nothing"
writeSceneData Light = "Light"
writeSceneData Camera = "Camera"
writeSceneData (Texture _) = "Texture"
writeSceneData (Text t ) = "Text " ++ "\"" ++ t ++ "\""
preamble fd = do
hPutStrLn fd "module Graphics.SceneGraph.TestLoad where"
hPutStrLn fd "import Graphics.SceneGraph.Basic"
hPutStrLn fd "import Graphics.SceneGraph.Matrix"
hPutStrLn fd "import Graphics.SceneGraph.Vector"
hPutStrLn fd "import Graphics.UI.GLUT.Objects as GL"
hPutStrLn fd "import Data.Graph.Inductive hiding (mkNode,context)"
hPutStrLn fd "import Data.Sequence hiding (empty)"
hPutStrLn fd "import Data.Reactive"
hPutStrLn fd "import Data.Array"
hPutStrLn fd "import Graphics.Rendering.OpenGL.GL.BeginEnd"
hPutStrLn fd "import Graphics.Rendering.OpenGL (Vector3)"
hPutStrLn fd "import Graphics.UI.GLUT hiding (Sink,Red, Green,Blue,Matrix,Error,get,scale,translate,rotate,Light,light,texture,Texture,Text,set,get)"
hPutStrLn fd "import Graphics.UI.GLUT.Fonts"