packages feed

xournal-render 0.3.0.0 → 0.4

raw patch · 8 files changed

+347/−128 lines, 8 filesdep ~xournal-types

Dependency ranges changed: xournal-types

Files

CHANGES view
@@ -2,3 +2,5 @@    * First public release 0.3: 18 Dec 2011     * Rename modules and make compatible with new xournal-types package+0.4: 25 Dec 2011+   * Double buffer support
src/Graphics/Xournal/Render/BBox.hs view
@@ -14,7 +14,7 @@ import Data.Xournal.Predefined   import Data.Foldable-+import Data.Monoid  import qualified Data.Map as M  import Data.ByteString hiding (map, minimum, maximum, concat, concatMap, filter )@@ -22,7 +22,21 @@ import Debug.Trace import Prelude hiding (fst,snd,curry,uncurry,mapM_,concatMap) +clipBBox :: Maybe BBox -> Render ()+clipBBox (Just (BBox (x1,y1) (x2,y2))) = do {resetClip; rectangle x1 y1 x2 y2; clip}+clipBBox Nothing = resetClip  +clearBBox :: Maybe BBox -> Render ()        +clearBBox Nothing = return ()+clearBBox (Just (BBox (x1,y1) (x2,y2))) = do +    save+    setSourceRGBA 0 0 0 0+    setOperator OperatorSource+    rectangle x1 y1 x2 y2 +    fill+    restore++ cairoOneStrokeBBoxOnly :: StrokeBBox -> Render ()  cairoOneStrokeBBoxOnly sbbox = do     let s = gToStroke sbbox@@ -67,8 +81,9 @@   cairoDrawBackgroundBBox :: Maybe BBox -> Dimension -> Background -> Render ()-cairoDrawBackgroundBBox mbbox (Dim w h) (Background typ col sty) = -    case mbbox of +cairoDrawBackgroundBBox mbbox dim@(Dim w h) (Background typ col sty) = do +    let mbbox2 = toMaybe $ fromMaybe mbbox `mappend` (Intersect (Middle (dimToBBox dim)))+    case mbbox2 of        Nothing -> cairoDrawBkg (Dim w h) (Background typ col sty)       Just bbox@(BBox (x1,y1) (x2,y2)) -> do          let c = M.lookup col predefined_bkgcolor  
src/Graphics/Xournal/Render/BBoxMapPDF.hs view
@@ -1,38 +1,39 @@-{-# LANGUAGE OverloadedStrings, CPP #-}+{-# LANGUAGE OverloadedStrings, TypeFamilies, TypeSynonymInstances, +             MultiParamTypeClasses, FlexibleInstances, FlexibleContexts, +             CPP #-}  module Graphics.Xournal.Render.BBoxMapPDF where  import Graphics.Xournal.Render.Type +import Graphics.Xournal.Render.Generic+import Graphics.Xournal.Render.Simple+import Graphics.Xournal.Render.PDFBackground import Data.Xournal.Simple import Data.Xournal.Generic import Data.Xournal.Map import Data.Xournal.BBox+import Data.Xournal.Buffer+import Data.Foldable  import Data.IntMap+import Data.Traversable  +import Control.Category+import Control.Monad.State hiding (get, mapM_, mapM,sequence)+import qualified Control.Monad.State as St (get)+import Data.Label+ import Data.ByteString hiding (putStrLn, empty) import qualified Data.ByteString.Char8 as C hiding (empty)+ #ifdef POPPLER import qualified Graphics.UI.Gtk.Poppler.Document as Poppler-#endif+#endif  +import Graphics.Xournal.Render.BBox import Graphics.Rendering.Cairo -data BackgroundPDFDrawable = -  BkgPDFSolid { bkgpdf_color :: ByteString-              , bkgpdf_style :: ByteString-              }-  | BkgPDFPDF { bkgpdf_domain :: Maybe ByteString-              , bkgpdf_filename :: Maybe ByteString-              , bkgpdf_pageno :: Int-#ifdef POPPLER -              , bkgpdf_popplerpage :: Maybe Poppler.Page -#else -              , bkgpdf_popplerpage :: Maybe ()-#endif-              , bkgpdf_cairosurface :: Maybe Surface-              } +import Prelude hiding ((.),id,mapM, mapM_, sequence ) -data BkgPDFOption = DrawBkgPDF | DrawWhite | DrawBuffer  type TPageBBoxMapPDF = TPageBBoxMapBkg BackgroundPDFDrawable  @@ -47,36 +48,257 @@   gFromBackground = bkgPDFFromBkg    gToBackground = bkgFromBkgPDF -bkgFromBkgPDF :: BackgroundPDFDrawable -> Background -bkgFromBkgPDF (BkgPDFSolid c s) = Background "solid" c s -bkgFromBkgPDF (BkgPDFPDF d f n _ _ ) = BackgroundPdf "pdf" d f n  -bkgPDFFromBkg :: Background -> BackgroundPDFDrawable-bkgPDFFromBkg (Background _t c s) = BkgPDFSolid c s-bkgPDFFromBkg (BackgroundPdf _t md mf pn) = BkgPDFPDF md mf pn Nothing Nothing -  -emptyTXournalBBoxMapPDF :: TXournalBBoxMapPDF-emptyTXournalBBoxMapPDF = GXournal "" empty-- tlayerBBoxFromTLayerSelect :: TLayerSelect TLayerBBox -> TLayerBBox  tlayerBBoxFromTLayerSelect l =    case unTEitherAlterHitted (gstrokes l) of     Left strs -> GLayer strs      Right alist -> GLayer . Prelude.concat $ interleave id unHitted alist +tlayerbufFromTLayerSelectBuf :: TLayerSelectBuf (TLayerBBoxBuf b) +                                -> (TLayerBBoxBuf b) +tlayerbufFromTLayerSelectBuf l = +  case unTEitherAlterHitted (get g_bstrokes l) of+    Left strs -> GLayerBuf (get g_buffer l) strs +    Right alist -> GLayerBuf (get g_buffer l) . Prelude.concat +                   $ interleave id unHitted alist+  +instance GCast TTempPageSelectPDF TPageBBoxMapPDF where      +  gcast = tpageBBoxMapPDFFromTTempPageSelectPDF++ tpageBBoxMapPDFFromTTempPageSelectPDF :: TTempPageSelectPDF -> TPageBBoxMapPDF tpageBBoxMapPDFFromTTempPageSelectPDF p =    let TLayerSelectInPage s others = glayers p        s' = tlayerBBoxFromTLayerSelect s   in  GPage (gdimension p) (gbackground p) (gFromList (s':others))+     +instance GCast TTempPageSelectPDFBuf TPageBBoxMapPDFBuf where      +  gcast = tpageBBoxMapPDFBufFromTTempPageSelectPDFBuf       +tpageBBoxMapPDFBufFromTTempPageSelectPDFBuf :: TTempPageSelectPDFBuf +                                               -> TPageBBoxMapPDFBuf+tpageBBoxMapPDFBufFromTTempPageSelectPDFBuf p = +  let TLayerSelectInPageBuf s others = get g_layers p +      s' = tlayerbufFromTLayerSelectBuf s+  in  GPage (gdimension p) (gbackground p) (gFromList (s':others))+       +instance GCast TPageBBoxMapPDF TTempPageSelectPDF where+  gcast = ttempPageSelectPDFFromTPageBBoxMapPDF+ ttempPageSelectPDFFromTPageBBoxMapPDF :: TPageBBoxMapPDF -> TTempPageSelectPDF  ttempPageSelectPDFFromTPageBBoxMapPDF p =    let (x:xs) = gToList (glayers p)       l = GLayer . TEitherAlterHitted . Left . gToList . gstrokes $ x   in  GPage (gdimension p) (gbackground p) (TLayerSelectInPage l xs)       ++instance GCast TPageBBoxMapPDFBuf TTempPageSelectPDFBuf where+  gcast = ttempPageSelectPDFBufFromTPageBBoxMapPDFBuf++ttempPageSelectPDFBufFromTPageBBoxMapPDFBuf :: TPageBBoxMapPDFBuf+                                               -> TTempPageSelectPDFBuf+ttempPageSelectPDFBufFromTPageBBoxMapPDFBuf p = +  let (x:xs) = gToList (get g_layers p)+      l = GLayerBuf { +          gbuffer = gbuffer x ,+          gbstrokes = TEitherAlterHitted . Left . gToList . gbstrokes $ x+          }+  in  GPage (gdimension p) (gbackground p) (TLayerSelectInPageBuf l xs)++----------------------      +++++mkTXournalBBoxMapPDF :: Xournal -> IO TXournalBBoxMapPDF+mkTXournalBBoxMapPDF xoj = do +  let pgs = xoj_pages xoj +  npgs <- mkAllTPageBBoxMapPDF pgs +  return $ GXournal (xoj_title xoj) (gFromList npgs)+  +mkAllTPageBBoxMapPDF :: [Page] -> IO [TPageBBoxMapPDF]+mkAllTPageBBoxMapPDF pgs = evalStateT (mapM mkPagePDF pgs) Nothing +++mkPagePDF :: Page -> StateT (Maybe Context) IO TPageBBoxMapPDF+mkPagePDF pg = do  +  let bkg = page_bkg pg+      dim = page_dim pg +      ls = page_layers pg+  newbkg <- mkBkgPDF dim bkg+  return $ GPage dim newbkg (gFromList . Prelude.map fromLayer $ ls)+  +mkBkgPDF :: Dimension -> Background +            -> StateT (Maybe Context) IO BackgroundPDFDrawable+mkBkgPDF dim@(Dim w h) bkg = do  +  let bkgpdf = bkgPDFFromBkg bkg+  case bkgpdf of +    BkgPDFSolid c s msfc -> do -- return bkgpdf +      case msfc of +        Just _ -> return bkgpdf+        Nothing -> do +          sfc <- liftIO $ createImageSurface FormatARGB32 (floor w) (floor h)+          renderWith sfc $ do +            cairoDrawBkg dim (bkgFromBkgPDF bkgpdf) +          return bkgpdf { bkgpdf_cairosurface = Just sfc}+    BkgPDFPDF md mf pn _ _ -> do +#ifdef POPPLER+      mctxt <- St.get +      case mctxt of+        Nothing -> do +          case (md,mf) of +            (Just d, Just f) -> do +              mdoc <- popplerGetDocFromFile f+              put $ Just (Context d f mdoc)+              case mdoc of +                Just doc -> do  +                  (mpg,msfc) <- popplerGetPageFromDoc doc pn +                  return (bkgpdf {bkgpdf_popplerpage = mpg, bkgpdf_cairosurface = msfc}) +            _ -> return bkgpdf +        Just (Context oldd oldf olddoc) -> do +          (mpage,msfc) <- case olddoc of +            Just doc -> do +              popplerGetPageFromDoc doc pn+            Nothing -> return (Nothing,Nothing) +          return $ BkgPDFPDF md mf pn mpage msfc+#else+          return bkgpdf+#endif  ++++newtype LyBuf = LyBuf { mbuffer :: Maybe Surface } ++type instance StrokeTypeFromLayer (TLayerBBoxBuf b) = StrokeBBox ++type TPageBBoxMapPDFBuf = +  TPageBBoxMapBkgBuf BackgroundPDFDrawable LyBuf+  +type TXournalBBoxMapPDFBuf = +  TXournalBBoxMapBkgBuf BackgroundPDFDrawable LyBuf+  +type TTempPageSelectPDFBuf = +  GPage BackgroundPDFDrawable (TLayerSelectInPageBuf []) (TLayerBBoxBuf LyBuf)++type TTempXournalSelectPDFBuf = +  GSelect (IntMap TPageBBoxMapPDFBuf) (Maybe (Int, TTempPageSelectPDFBuf))++mkTLayerBBoxBufFromNoBuf :: Dimension -> TLayerBBox -> IO (TLayerBBoxBuf LyBuf)+mkTLayerBBoxBufFromNoBuf (Dim w h) lyr = do +  let strs = get g_strokes lyr +  sfc <- createImageSurface FormatARGB32 (floor w) (floor h)+  renderWith sfc (cairoDrawLayerBBox (Just (BBox (0,0) (w,h))) lyr)+  return $ GLayerBuf { gbuffer = LyBuf (Just sfc), +                       gbstrokes = strs }  -- temporary++updateLayerBuf :: Maybe BBox -> TLayerBBoxBuf LyBuf -> IO (TLayerBBoxBuf LyBuf)+updateLayerBuf mbbox lyr = do +  -- putStrLn $ "updatelayerbuf called" ++ show mbbox+  case get g_buffer lyr of +    LyBuf (Just sfc) -> do +      --  putStrLn "here"+      renderWith sfc $ do +        clearBBox mbbox        +        cairoDrawLayerBBox mbbox (gcast lyr :: TLayerBBox)+      return lyr+    _ -> return lyr+    ++mkTPageBBoxMapPDFBufFromNoBuf :: TPageBBoxMapPDF -> IO TPageBBoxMapPDFBuf+mkTPageBBoxMapPDFBufFromNoBuf page = do +  let dim = get g_dimension page+      bkg = get g_background page+      ls =  get g_layers page+  ls' <- mapM (mkTLayerBBoxBufFromNoBuf dim) ls+  return $ GPage dim bkg ls'       ++mkTXournalBBoxMapPDFBufFromNoBuf :: TXournalBBoxMapPDF +                                    -> IO TXournalBBoxMapPDFBuf+mkTXournalBBoxMapPDFBufFromNoBuf xoj = do +  let title = get g_title xoj+      pages = get g_pages xoj +  pages' <- mapM mkTPageBBoxMapPDFBufFromNoBuf pages+ +  return $ GXournal title pages'++resetPageBuffers :: TPageBBoxMapPDFBuf -> IO TPageBBoxMapPDFBuf +resetPageBuffers page = do +  let dim = get g_dimension page+      mbbox = Just . dimToBBox $ dim +  newlayers <- sequence . fmap (updateLayerBuf mbbox) . get g_layers $ page +  return (set g_layers newlayers page)++resetXournalBuffers :: TXournalBBoxMapPDFBuf -> IO TXournalBBoxMapPDFBuf +resetXournalBuffers xoj = do +  let pages = get g_pages xoj +  newpages <- mapM resetPageBuffers pages+  return . set g_pages newpages $ xoj+  +  ++instance GCast (TLayerBBoxBuf a) TLayerBBox where+  gcast = tlayerBBoxFromTLayerBBoxBuf+ +instance GCast TPageBBoxMapPDFBuf TPageBBoxMapPDF where+  gcast = tpageBBoxMapPDFFromTPageBBoxMapPDFBuf++tlayerBBoxFromTLayerBBoxBuf :: TLayerBBoxBuf a -> TLayerBBox+tlayerBBoxFromTLayerBBoxBuf (GLayerBuf _ strs) = GLayer strs ++tpageBBoxMapPDFFromTPageBBoxMapPDFBuf :: TPageBBoxMapPDFBuf -> TPageBBoxMapPDF+tpageBBoxMapPDFFromTPageBBoxMapPDFBuf (GPage dim bkg ls) = +  GPage dim bkg (fmap tlayerBBoxFromTLayerBBoxBuf ls)+ +  +----- Rendering   ++newtype InBBox a = InBBox a++data InBBoxOption = InBBoxOption (Maybe BBox) ++instance RenderOptionable (InBBox TLayerBBox) where+  type RenderOption (InBBox TLayerBBox) = InBBoxOption +  cairoRenderOption (InBBoxOption mbbox) (InBBox layer) +    = cairoDrawLayerBBox mbbox layer ++                             +instance RenderOptionable (InBBox TPageBBoxMapPDF) where+  type RenderOption (InBBox TPageBBoxMapPDF) = InBBoxOption +  cairoRenderOption opt@(InBBoxOption mbbox) (InBBox page) = do +    cairoRenderOption (DrawPDFInBBox mbbox) (gbackground page, gdimension page) +    mapM_ (cairoDrawLayerBBox mbbox) . glayers $ page ++    +-- | page within a bbox. not implemented bbox part.++cairoDrawPageBBoxPDF :: Maybe BBox -> TPageBBoxMapPDF -> Render ()+cairoDrawPageBBoxPDF mbbox page = cairoRender page  -- This is temporary+++++cairoDrawLayerBBoxBuf :: Maybe BBox -> TLayerBBoxBuf LyBuf -> Render ()+cairoDrawLayerBBoxBuf mbbox layer = do+  case get g_buffer layer of +    LyBuf (Just sfc) -> do clipBBox mbbox +                           setSourceSurface sfc 0 0 +                           paint +                           resetClip +    _ -> cairoDrawLayerBBox mbbox (gcast layer :: TLayerBBox)+  +++instance RenderOptionable (InBBox (TLayerBBoxBuf LyBuf)) where+  type RenderOption (InBBox (TLayerBBoxBuf LyBuf)) = InBBoxOption +  cairoRenderOption (InBBoxOption mbbox) (InBBox layer) +    = cairoDrawLayerBBoxBuf mbbox layer+      +instance RenderOptionable (InBBox TPageBBoxMapPDFBuf) where+  type RenderOption (InBBox TPageBBoxMapPDFBuf) = InBBoxOption +  cairoRenderOption opt@(InBBoxOption mbbox) (InBBox page) = do +    cairoRenderOption (DrawPDFInBBox mbbox) (get g_background page, get g_dimension page)+    mapM_ (cairoRenderOption opt . InBBox) .  get g_layers $ page
src/Graphics/Xournal/Render/Generic.hs view
@@ -55,14 +55,13 @@   type RenderOption Stroke = ()    cairoRenderOption () = cairoRender   -data StrokeBBoxOption = DrawFull | DrawBoxOnly-+data StrokeBBoxOption = DrawFull | DrawBoxOnly   instance RenderOptionable StrokeBBox where   type RenderOption StrokeBBox = StrokeBBoxOption   cairoRenderOption DrawFull = cairoRender    cairoRenderOption DrawBoxOnly = cairoOneStrokeBBoxOnly-+   cairoOptionLayer :: (RenderOptionable a, Foldable s) =>                      RenderOption a -> GLayer s a -> Render ()  cairoOptionLayer opt = mapM_ (cairoRenderOption opt) . gstrokes @@ -89,14 +88,3 @@   type RenderOption (GPage b s a) = (RenderOption (b,Dimension), RenderOption a)   cairoRenderOption = cairoOptionPage             -{--instance (Renderable (b,Dimension)) => -         Renderable (GBackground b,Dimension) where-  cairoRender (GBackground b,dim) = cairoRender (b,dim)--instance (RenderOptionable (b,Dimension)) => -         RenderOptionable (GBackground b,Dimension) where-  type RenderOption (GBackground b,Dimension) = RenderOption (b,Dimension)-  cairoRenderOption opt (GBackground b,dim)= cairoRenderOption opt (b,dim)--}-
src/Graphics/Xournal/Render/PDFBackground.hs view
@@ -4,15 +4,18 @@  module Graphics.Xournal.Render.PDFBackground where -import Control.Monad.State+import Debug.Trace+import Control.Monad.State hiding (mapM_)+import Prelude hiding (mapM_) +import Data.Foldable  import Data.Monoid  import Data.ByteString hiding (putStrLn) import qualified Data.ByteString.Char8 as C import Data.Xournal.Generic import Data.Xournal.Simple import Data.Xournal.BBox-import Graphics.Xournal.Render.BBoxMapPDF+import Graphics.Xournal.Render.BBox  import Graphics.Xournal.Render.Generic import Graphics.Xournal.Render.Type @@ -28,64 +31,42 @@                        , ctxt_filename :: ByteString  #ifdef POPPLER                        , ctxt_doc :: Maybe Poppler.Document-#else +#else                        , ctxt_doc :: Maybe ()-#endif+#endif                         } --mkTXournalBBoxMapPDF :: Xournal -> IO TXournalBBoxMapPDF-mkTXournalBBoxMapPDF xoj = do -  let pgs = xoj_pages xoj -  npgs <- mkAllTPageBBoxMapPDF pgs -  return $ GXournal (xoj_title xoj) (gFromList npgs)-  -mkAllTPageBBoxMapPDF :: [Page] -> IO [TPageBBoxMapPDF]-mkAllTPageBBoxMapPDF pgs = evalStateT (mapM mkPagePDF pgs) Nothing ---mkPagePDF :: Page -> StateT (Maybe Context) IO TPageBBoxMapPDF-mkPagePDF pg = do  -  let bkg = page_bkg pg-      dim = page_dim pg -      ls = page_layers pg-  newbkg <- mkBkgPDF bkg-  return $ GPage dim newbkg (gFromList . Prelude.map fromLayer $ ls)-  -mkBkgPDF :: Background -            -> StateT (Maybe Context) IO BackgroundPDFDrawable-mkBkgPDF bkg = do  -  let bkgpdf = bkgPDFFromBkg bkg+data BackgroundPDFDrawable = +  BkgPDFSolid { bkgpdf_color :: ByteString+              , bkgpdf_style :: ByteString+              , bkgpdf_cairosurface :: Maybe Surface+              }+  | BkgPDFPDF { bkgpdf_domain :: Maybe ByteString+              , bkgpdf_filename :: Maybe ByteString+              , bkgpdf_pageno :: Int  #ifdef POPPLER-  case bkgpdf of -    BkgPDFSolid _ _ -> return bkgpdf -    BkgPDFPDF md mf pn _ _ -> do -      mctxt <- get -      case mctxt of-        Nothing -> do -          case (md,mf) of -            (Just d, Just f) -> do -              liftIO $ putStrLn "hey"-              mdoc <- popplerGetDocFromFile f-              put $ Just (Context d f mdoc)--              case mdoc of -                Just doc -> do  -                  (mpg,msfc) <- popplerGetPageFromDoc doc pn -                  return (bkgpdf {bkgpdf_popplerpage = mpg, bkgpdf_cairosurface = msfc}) -            _ -> return bkgpdf -        Just (Context oldd oldf olddoc) -> do -          (mpage,msfc) <- case olddoc of -            Just doc -> do -              popplerGetPageFromDoc doc pn-            Nothing -> return (Nothing,Nothing) -          return $ BkgPDFPDF md mf pn mpage msfc-#else -  return $ bkgpdf+              , bkgpdf_popplerpage :: Maybe Poppler.Page +#else    +              , bkgpdf_popplerpage :: Maybe () #endif+              , bkgpdf_cairosurface :: Maybe Surface+              }  +data BkgPDFOption = DrawBkgPDF +                  | DrawWhite +                  | DrawBuffer+                  | DrawPDFInBBox (Maybe BBox) -#ifdef POPPLER            +bkgFromBkgPDF :: BackgroundPDFDrawable -> Background +bkgFromBkgPDF (BkgPDFSolid c s _) = Background "solid" c s +bkgFromBkgPDF (BkgPDFPDF d f n _ _ ) = BackgroundPdf "pdf" d f n ++bkgPDFFromBkg :: Background -> BackgroundPDFDrawable+bkgPDFFromBkg (Background _t c s) = BkgPDFSolid c s Nothing+bkgPDFFromBkg (BackgroundPdf _t md mf pn) = BkgPDFPDF md mf pn Nothing Nothing++            +#ifdef POPPLER popplerGetDocFromFile :: (MonadIO m) =>                           ByteString -> m (Maybe Poppler.Document) popplerGetDocFromFile fp = @@ -113,7 +94,7 @@  cairoRenderBackgroundPDFDrawable :: (BackgroundPDFDrawable,Dimension)                                      -> Render ()-cairoRenderBackgroundPDFDrawable (BkgPDFSolid c s,dim) = +cairoRenderBackgroundPDFDrawable (BkgPDFSolid c s _,dim) =    cairoRender (Background "solid" c s,dim) cairoRenderBackgroundPDFDrawable (BkgPDFPDF _ _ _ p _,dim) = do   case p of @@ -125,9 +106,7 @@       fill #ifdef POPPLER       PopplerPage.pageRender pg-#endif    -  -+#endif       instance Renderable (BackgroundPDFDrawable,Dimension) where   cairoRender = cairoRenderBackgroundPDFDrawable@@ -142,32 +121,32 @@     fill    cairoRenderOption DrawBuffer (b,dim) = do      case b of -      BkgPDFSolid _ _ -> cairoRenderOption DrawBkgPDF (b,dim)+      BkgPDFSolid _ _ msfc  -> do  +        case msfc of +          Nothing -> cairoRenderOption DrawBkgPDF (b,dim)+          Just sfc -> do +            -- cairoRenderOption DrawBkgPDF (b,dim)+            -- clipBBox . Just . dimToBBox $ dim+            setSourceSurface sfc 0 0 +            paint +            -- resetClip        BkgPDFPDF _ _ _ _ msfc -> do          case bkgpdf_cairosurface b of            Nothing -> cairoRenderOption DrawBkgPDF (b,dim)           Just sfc -> do              setSourceSurface sfc 0 0              paint -      +  cairoRenderOption (DrawPDFInBBox mbbox) (b,dim) = do +    case b of +      BkgPDFSolid _ _ _ -> do +        clipBBox mbbox+        cairoRenderOption DrawBuffer (b,dim)+        resetClip+        --  cairoDrawBackgroundBBox mbbox dim (bkgFromBkgPDF b)+      BkgPDFPDF _ _ _ _ _ -> do +        clipBBox mbbox+        cairoRenderOption DrawBuffer (b,dim)+        resetClip -cairoDrawPageBBoxPDF :: Maybe BBox -> TPageBBoxMapPDF -> Render ()-cairoDrawPageBBoxPDF mbbox page = do -  cairoRender page -{-  case gbackground page of -    BkgPDFSolid c s -> do -      let bkg = Background "solid" c s -          bkg        -      page--}    -    -  ------- 
src/Graphics/Xournal/Render/Simple.hs view
@@ -3,7 +3,6 @@ module Graphics.Xournal.Render.Simple where   import Graphics.Rendering.Cairo- import Data.Strict.Tuple  import Data.Xournal.Simple
src/Graphics/Xournal/Render/Type.hs view
@@ -53,17 +53,29 @@           TEitherAlterHitted {              unTEitherAlterHitted :: Either [a] (TAlterHitted a)           }+ type TLayerSelect a = GLayer TEitherAlterHitted (StrokeTypeFromLayer a)  +type TLayerSelectBuf a = GLayerBuf (BufTypeFromLayer a) TEitherAlterHitted (StrokeTypeFromLayer a) + type family StrokeTypeFromLayer a  :: *       +type family BufTypeFromLayer a :: *+     +type instance BufTypeFromLayer (GLayerBuf b s a) = b     +      type instance StrokeTypeFromLayer TLayerBBox = StrokeBBox-   data TLayerSelectInPage s a = TLayerSelectInPage                                { gselectedlayer :: TLayerSelect a                                , gotherlayers :: s a                               }++data TLayerSelectInPageBuf s a = TLayerSelectInPageBuf+                               { gselectedlayerbuf :: TLayerSelectBuf a +                               , gotherlayersbuf :: s a+                               }+  type TTempPageSelect = GPage Background (TLayerSelectInPage []) TLayerBBox                        
xournal-render.cabal view
@@ -1,5 +1,5 @@ Name:		xournal-render-Version:	0.3.0.0+Version:	0.4 Synopsis:       Xournal file renderer Description: 	Rendering library using cairo for xournal file format License: 	BSD3@@ -22,6 +22,7 @@   hs-source-dirs: src   ghc-options: 	-Wall -O2 -threaded -funbox-strict-fields -fno-warn-unused-do-bind   ghc-prof-options: -caf-all -auto-all+   if flag(poppler)     Build-Depends: base == 4.*,                     mtl == 2.*, @@ -31,7 +32,7 @@                    bytestring == 0.9.*,                    poppler == 0.12.*,                     fclabels == 1.0.*, -                   xournal-types == 0.1.* +                   xournal-types == 0.2.*   else     Build-Depends: base == 4.*,                     mtl == 2.*, @@ -40,8 +41,9 @@                    strict == 0.3.*,                     bytestring == 0.9.*,                    fclabels == 1.0.*, -                   xournal-types == 0.1.* +                   xournal-types == 0.2.* +   Exposed-Modules:                     Graphics.Xournal.Render.Simple                    Graphics.Xournal.Render.BBox@@ -51,7 +53,7 @@                    Graphics.Xournal.Render.HitTest                    Graphics.Xournal.Render.Type -  if flag(poppler) +  if flag(poppler)     cpp-options: -DPOPPLER