module Graphics.Hoodle.Render.Type.Hoodle where
import Control.Applicative
import Control.Lens
import Data.Foldable (toList)
import qualified Data.IntMap as IM
import Data.Hoodle.BBox
import Data.Hoodle.Generic
import Data.Hoodle.Simple
import Data.Hoodle.Zipper
import Graphics.Hoodle.Render.Type.Background
import Graphics.Hoodle.Render.Type.Item
import Graphics.Hoodle.Render.Type.Renderer
newtype LyBuf = LyBuf { unLyBuf :: SurfaceID }
type RLayer = GLayer LyBuf [] RItem
type RPage = GPage RBackground ZipperSelect RLayer
type RHoodle = GHoodle IM.IntMap RPage
instance Show RHoodle where
show _ = "RHoodle"
emptyRLayer :: SurfaceID -> RLayer
emptyRLayer sfcid = GLayer (LyBuf sfcid ) []
rLayer2Layer :: RLayer -> Layer
rLayer2Layer = Layer <$> fmap rItem2Item . view gitems
rPage2Page :: RPage -> Page
rPage2Page = Page <$> view gdimension
<*> rbkg2Bkg . view gbackground
<*> fmap rLayer2Layer . toList . view glayers
rHoodle2Hoodle :: RHoodle -> Hoodle
rHoodle2Hoodle = Hoodle <$> view ghoodleID
<*> view gtitle
<*> view grevisions
<*> fmap pdfBase64 . view gembeddedpdf
<*> view gembeddedtext
<*> IM.elems . fmap rPage2Page . view gpages
newtype InBBox a = InBBox { unInBBox :: a }
data InBBoxOption = InBBoxOption (Maybe BBox)
newtype InBBoxBkgBuf a = InBBoxBkgBuf { unInBBoxBkgBuf :: a }