|
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 |