module Eventloop.Module.BasicShapes.BasicShapes

    ( setupBasicShapesModuleConfiguration

    , basicShapesModuleIdentifier

    , basicShapesPostProcessor

    ) where



import Control.Concurrent.SafePrint



import Eventloop.Module.BasicShapes.Types

import Eventloop.Module.BasicShapes.Classes

import Eventloop.Module.BasicShapes.MeasureTextHack

import Eventloop.Types.Common

import Eventloop.Types.Events

import Eventloop.Types.System



setupBasicShapesModuleConfiguration :: EventloopSetupModuleConfiguration

setupBasicShapesModuleConfiguration = ( EventloopSetupModuleConfiguration

                                            basicShapesModuleIdentifier

                                            (Just basicShapesInitializer)

                                            Nothing

                                            Nothing

                                            (Just basicShapesPostProcessor)

                                            Nothing

                                            Nothing

                                        )





basicShapesModuleIdentifier :: EventloopModuleIdentifier

basicShapesModuleIdentifier = "basicshapes"





basicShapesInitializer :: Initializer

basicShapesInitializer sharedConst sharedIO

    = do

        saveMeasureText (measureText sharedConst)

        return (sharedConst, sharedIO, NoConstants, NoState)





basicShapesPostProcessor :: PostProcessor

basicShapesPostProcessor sharedConst sharedIOT ioConst ioStateT (OutBasicShapes basicShapesOut)

    = return [OutCanvas canvasOut]

    where

        canvasOut = toCanvasOut basicShapesOut

        

basicShapesPostProcessor sharedConst sharedIOT ioConst ioStateT out

    = return [out]