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 +2/−0
- src/Graphics/Xournal/Render/BBox.hs +18/−3
- src/Graphics/Xournal/Render/BBoxMapPDF.hs +250/−28
- src/Graphics/Xournal/Render/Generic.hs +2/−14
- src/Graphics/Xournal/Render/PDFBackground.hs +56/−77
- src/Graphics/Xournal/Render/Simple.hs +0/−1
- src/Graphics/Xournal/Render/Type.hs +13/−1
- xournal-render.cabal +6/−4
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