Copyright | (c) Anton Gushcha, 2016 |
---|---|
License | BSD3 |
Maintainer | ncrashed@gmail.com |
Stability | experimental |
Portability | POSIX |
Safe Haskell | None |
Language | Haskell2010 |
- data LambdaCubeState s = LambdaCubeState {
- lambdacubePipelines :: !(HashMap PipelineId PipelineInfo)
- lambdacubeStorages :: !(HashMap StorageId GLStorage)
- lambdacubeRenderOrder :: !(Seq StorageId)
- lambdacubeNextStorageId :: !Int
- lambdacubeNextState :: !s
- type PipelineId = Text
- data StorageId = StorageId {
- storageId :: !Int
- storageScheme :: !PipelineId
- data LambdaCubeException
- emptyLambdaCubeState :: s -> LambdaCubeState s
- freeLambdaCubeState :: LambdaCubeState s -> IO ()
- updateStateViewportSize :: Word -> Word -> LambdaCubeState s -> IO ()
- isPipelineRegisteredInternal :: PipelineId -> LambdaCubeState s -> Bool
- registerPipelineInternal :: PipelineId -> Pipeline -> PipelineSchema -> GLRenderer -> LambdaCubeState s -> LambdaCubeState s
- unregisterPipelineInternal :: PipelineId -> LambdaCubeState s -> IO (LambdaCubeState s)
- getPipelineSchemeInternal :: PipelineId -> LambdaCubeState s -> Maybe PipelineSchema
- registerStorageInternal :: PipelineId -> GLStorage -> LambdaCubeState s -> (StorageId, LambdaCubeState s)
- unregisterStorageInternal :: StorageId -> LambdaCubeState s -> IO (LambdaCubeState s)
- getStorageInternal :: StorageId -> LambdaCubeState s -> Maybe GLStorage
- getRendererInternal :: PipelineId -> LambdaCubeState s -> Maybe GLRenderer
- renderStorageLastInternal :: StorageId -> LambdaCubeState s -> LambdaCubeState s
- renderStorageFirstInternal :: StorageId -> LambdaCubeState s -> LambdaCubeState s
- stopRenderingInternal :: StorageId -> LambdaCubeState s -> LambdaCubeState s
Documentation
data LambdaCubeState s Source #
Internal state of core module
s
- - state of next module, they are chained until bottom, that is usually an empty data type.
LambdaCubeState | |
|
Generic (LambdaCubeState s) Source # | |
NFData s => NFData (LambdaCubeState s) Source # | |
Monad m => MonadState (LambdaCubeState s) (LambdaCubeT s m) | |
type Rep (LambdaCubeState s) Source # | |
type PipelineId = Text Source #
ID to uniquely identify LambdaCube rednering pipeline
ID to uniquely identify LambdaCube storage
StorageId | |
|
data LambdaCubeException Source #
Exception type that could be thrown by the module
PipeLineCompileFailed String PipelineId String | Thrown when a pipeline compilation failed, first is pipeline main module, last is error message |
PipeLineAlreadyRegistered PipelineId | Thrown when tries to register the same pipeline twice |
PipeLineNotFound PipelineId | Trhown when tries to create storage for unregistered pipeline |
StorageNotFound StorageId | Thrown when tries to get unregistered storage |
PipeLineIncompatible StorageId String | Thrown when failed to bind pipeline to context, contains pipeline name and error message |
emptyLambdaCubeState :: s -> LambdaCubeState s Source #
Create inital state of the core module
s
- - state of next module
freeLambdaCubeState :: LambdaCubeState s -> IO () Source #
Release module state resources
Internal API
updateStateViewportSize :: Word -> Word -> LambdaCubeState s -> IO () Source #
Update viewport size of all storages
isPipelineRegisteredInternal :: PipelineId -> LambdaCubeState s -> Bool Source #
Returns True if given pipeline is already exists
registerPipelineInternal :: PipelineId -> Pipeline -> PipelineSchema -> GLRenderer -> LambdaCubeState s -> LambdaCubeState s Source #
Register new pipeline with renderer in module
unregisterPipelineInternal :: PipelineId -> LambdaCubeState s -> IO (LambdaCubeState s) Source #
Removes pipeline from state and deletes it, also destroys all storages of the pipeline
getPipelineSchemeInternal :: PipelineId -> LambdaCubeState s -> Maybe PipelineSchema Source #
Getter of pipeline scheme
registerStorageInternal :: PipelineId -> GLStorage -> LambdaCubeState s -> (StorageId, LambdaCubeState s) Source #
Registering gl storage for given pipeline
unregisterStorageInternal :: StorageId -> LambdaCubeState s -> IO (LambdaCubeState s) Source #
Remove and deallocate storage
getStorageInternal :: StorageId -> LambdaCubeState s -> Maybe GLStorage Source #
Find storage in state
getRendererInternal :: PipelineId -> LambdaCubeState s -> Maybe GLRenderer Source #
renderStorageLastInternal :: StorageId -> LambdaCubeState s -> LambdaCubeState s Source #
Puts storage at end of rendering queue
renderStorageFirstInternal :: StorageId -> LambdaCubeState s -> LambdaCubeState s Source #
Puts storage at begining of rendering queue
stopRenderingInternal :: StorageId -> LambdaCubeState s -> LambdaCubeState s Source #
Removes storage from rendering queue