|
| Graphics.SceneGraph.Basic | | Portability | portable
| | Stability | experimental
| | Maintainer | mwassell@bigpond.net.au
|
|
|
|
| Description |
Definition of types and combinators.
Construction of the graph is done within a Monad (OSGT). osg is then used
to extract the Scene.
|
|
| Synopsis |
|
| data SceneNode = SceneNode (Node, String) SceneData | | | type SceneGraph = Gr SceneNode () | | | type OSG = OSGT Identity | | | type Scene = (SceneGraph, Node) | | | | | | | data Phong = Phong {} | | | | | emptyOSG :: SceneGraph | | | data OSGState = OSGState {} | | | emptyState | | | emptyStateWithRef :: IO OSGState | | | newPhong | | | nullNode | | | trivialGr :: SceneNode -> SceneGraph | | | addNode' :: OSGState -> SceneNode -> [((), Node)] -> (SceneNode, OSGState) | | | addNullNode :: Monad m => OSGT m SceneNode | | | addNodeBasic :: Monad m => SceneNode -> OSGT m SceneNode | | | addBasicNode | | | addBasicNamedNode | | | addNode :: Monad m => SceneNode -> [((), Node)] -> OSGT m SceneNode | | | replaceNode :: Monad m => SceneNode -> OSGT m SceneNode | | | findCamera :: Scene -> Int -> Node | | | findCameraPath :: Scene -> Int -> Path | | | rotateX :: Monad m => OSGT m SceneNode -> GLdouble -> OSGT m SceneNode | | | rotateY :: Monad m => OSGT m SceneNode -> GLdouble -> OSGT m SceneNode | | | rotateZ :: Monad m => OSGT m SceneNode -> GLdouble -> OSGT m SceneNode | | | torus :: Monad m => Float -> OSGT m SceneNode | | | sphere :: Monad m => Float -> OSGT m SceneNode | | | tetra :: Monad m => OSGT m SceneNode | | | line :: Monad m => VectorD -> VectorD -> OSGT m SceneNode | | | cube :: Monad m => GLdouble -> OSGT m SceneNode | | | switchHandler :: ClickHandler | | | light :: Monad m => OSGT m SceneNode | | | camera :: Monad m => OSGT m SceneNode | | | plane :: Monad m => Int -> OSGT m SceneNode | | | texture :: Monad m => OSGT m SceneNode -> String -> OSGT m SceneNode | | | planeQ :: Monad m => Int -> OSGT m SceneNode | | | text :: Monad m => String -> OSGT m SceneNode | | | scaleS :: Monad m => OSGT m SceneNode -> GLdouble -> OSGT m SceneNode | | | scale :: Monad m => OSGT m SceneNode -> VectorD -> OSGT m SceneNode | | | translate :: Monad m => OSGT m SceneNode -> VectorD -> OSGT m SceneNode | | | rotate :: Monad m => OSGT m SceneNode -> (GLdouble, VectorD) -> OSGT m SceneNode | | | (<+>) :: Monad m => OSGT m SceneNode -> OSGT m SceneNode -> OSGT m SceneNode | | | (<*>) :: Monad m => OSGT m SceneNode -> VectorD -> OSGT m SceneNode | | | (</>) :: Monad m => OSGT m SceneNode -> VectorD -> OSGT m SceneNode | | | strip :: Monad m => OSGT m SceneNode | | | switch :: Monad m => OSGT m SceneNode -> OSGT m SceneNode -> OSGT m SceneNode | | | switch' :: Monad m => Int -> OSGT m SceneNode -> OSGT m SceneNode -> OSGT m SceneNode | | | switchNode' | | | translateSG' :: SceneGraph -> Node -> VectorD -> SceneGraph | | | rotatePostSG' :: SceneGraph -> Node -> VectorD -> GLdouble -> SceneGraph | | | translatePostSG' :: SceneGraph -> Node -> VectorD -> SceneGraph | | | colour :: Monad m => OSGT m SceneNode -> Colour -> OSGT m SceneNode | | | cylinder :: Monad m => GLfloat -> GLfloat -> OSGT m SceneNode | | | osg :: Monad m => OSGT m SceneNode -> m Scene | | | runOSG :: Monad m => OSGState -> OSGT m SceneNode -> m (SceneNode, OSGState, Node) | | | r :: GLdouble | | | llab | | | getTransformTo :: Scene -> Node -> MatrixD | | | findHandlerDown :: SceneGraph -> Int -> Int | | | findTextDown :: SceneGraph -> Int -> Int | | | type OSGT m = StateT OSGState m | | | replaceNode'' :: SceneGraph -> SceneNode -> SceneGraph | | | handler :: Monad m => OSGT m SceneNode -> ClickHandler -> OSGT m SceneNode | | | handler2 :: Monad m => OSGT m SceneNode -> (ClickHandler, DragHandler) -> OSGT m SceneNode | | | handleClickEvent :: Scene -> GLuint -> KeyState -> IO (Scene, Maybe Scene, Maybe (SceneGraph -> SceneGraph)) | | | label :: Monad m => OSGT m SceneNode -> String -> OSGT m SceneNode | | | getByLabel :: SceneGraph -> String -> Node | | | getHitAction :: Scene -> GLuint -> IO () | | | findHandler :: SceneGraph -> GLuint -> Maybe SceneNode | | | replaceNode' :: Monad md => SceneGraph -> SceneNode -> md SceneGraph | | | newtype OSGStateRef = OSGStateRef {} | | | | | dragHandler :: DragHandler |
|
|
| Documentation |
|
|
| Scene Node. Made up of data and maybe a widget
| | Constructors | | Instances | |
|
|
|
| Scene Graph based on a Graph
|
|
|
|
|
| Scene Graph with indicate root node
|
|
|
| Simple colours
| | Constructors | | Grey | | | JustWhite | | | Red | | | Green | | | Blue | | | Black | | | LightBlue | | | White | | | Yellow | |
| Instances | |
|
|
|
| Scene Node Data.
| | Constructors | | Instances | |
|
|
|
| Phong colouring
| | Constructors | | Instances | |
|
|
|
Geometry. Either a basic GL object or a mesh.
FIXME - Reduce number of mesh types - to whatever is easier to draw (I suppose)
| | Constructors | | Instances | |
|
|
|
|
|
| Holds state of graph as it is built.
| | Constructors | | Instances | |
|
|
| emptyState |
|
|
Empty state
Empty state with the self reference set
|
|
| newPhong |
|
| nullNode |
|
|
Creates an empty scene graph
Creates a scene graph containing the supplied node
|
|
|
| Non-monadic form of addNode
|
|
|
Add node with scene data
Add node with scene data
Add empty node
|
|
|
| Basic add node
|
|
| addBasicNode |
|
| addBasicNamedNode |
|
|
| Add a node to a scene graph with supplied children
|
|
|
| Replace a Scene Node
|
|
|
|
|
|
|
| Rotate a node around X axis
|
|
|
| Rotate a node around Y axis
|
|
|
| Rotate a node around Z axis
|
|
|
| Create a node containing a torus.
|
|
|
| Create a node containing a sphere
|
|
|
| Create a node containing a tetrahedron
|
|
|
| Create a node containing a line
|
|
|
| Create a node containing a cube.
Fixme: Faces are not orientated same way.
|
|
| switchHandler :: ClickHandler | Source |
|
| Create a ClickHandler
|
|
|
| Create a light
|
|
|
| Create a camera
|
|
|
|
|
| Add texture
|
|
|
|
|
| Add Text
|
|
|
| Scale a node by equal amounts in all directions
|
|
|
| Scale a node
|
|
|
| Translate a node
|
|
|
| Rotate a node by an angle around a vector.
|
|
|
| Join two graphs together
|
|
|
| Translate a node
|
|
|
| Scale a node
|
|
|
| Get a strip mesh
|
|
|
| Create a switch node
|
|
|
|
| switchNode' |
|
|
|
|
|
|
|
|
| Add colour to a node
|
|
|
| Create cylinder as a BezierMesh
|
|
|
| Wrapper for running the OSG monad to return a scene graph and root node.
|
|
|
| Create and run a OSG monad to return a scene graph and root node.
|
|
|
|
| llab |
|
|
| Return the matrix got by traversing down the Node
|
|
|
| Work down the tree from indicated no to find the first handler scene node.
|
|
|
|
|
| The OSG monad within which construction of scene graphs occur.
was 'type OSGT m = ErrorT Throwable (ST.StateT OSGState m)'
|
|
|
| Actually does the job of replacing node in a scene graph
|
|
|
| Add an handler node
|
|
|
|
|
| Handle some event
|
|
|
| Label a node
|
|
|
|
|
|
|
| Work up the tree from indicated no to find the first handler scene node.
|
|
|
| Inner monad version of replace node
|
|
|
| Constructors | | Instances | |
|
|
|
|
|
| dragHandler :: DragHandler | Source |
|
| Create a DragHandler
|
|
| Produced by Haddock version 2.4.2 |