xournal-render 0.6 → 0.6.0
raw patch · 5 files changed
+106/−45 lines, 5 files
Files
- CHANGES +2/−0
- src/Graphics/Xournal/Render/BBoxMapPDF.hs +93/−35
- src/Graphics/Xournal/Render/PDFBackground.hs +8/−8
- src/Graphics/Xournal/Render/Type/Select.hs +1/−0
- xournal-render.cabal +2/−2
CHANGES view
@@ -6,3 +6,5 @@ * Double buffer support 0.5: 15 Jan 2012 * ZipperSelect support+0.6: 12 Feb 2012+ * Variable width support
src/Graphics/Xournal/Render/BBoxMapPDF.hs view
@@ -16,6 +16,7 @@ module Graphics.Xournal.Render.BBoxMapPDF where +import Control.Applicative import Graphics.Xournal.Render.Type import Graphics.Xournal.Render.Generic import Graphics.Xournal.Render.Simple@@ -41,48 +42,74 @@ import Prelude hiding ((.),id,mapM, mapM_, sequence ) +-- | type TPageBBoxMapPDF = TPageBBoxMapBkg BackgroundPDFDrawable +-- | + type TXournalBBoxMapPDF = TXournalBBoxMapBkg BackgroundPDFDrawable -- type TTempPageSelectPDF = GPage BackgroundPDFDrawable (TLayerSelectInPage []) TLayerBBox +-- | + type TTempPageSelectPDF = GPage BackgroundPDFDrawable (TLayerSelectInPage []) TLayerBBox +-- | + type TTempXournalSelectPDF = GSelect (IntMap TPageBBoxMapPDF) (Maybe (Int, TTempPageSelectPDF)) +-- | + 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 ZipperSelect) (TLayerBBoxBuf LyBuf) +-- | + type TTempXournalSelectPDFBuf = GSelect (IntMap TPageBBoxMapPDFBuf) (Maybe (Int, TTempPageSelectPDFBuf)) +-- | instance GCast (TLayerBBox) (TLayerBBoxBuf LyBuf) where gcast lyr = GLayerBuf (LyBuf Nothing) (get g_strokes lyr) +-- | + instance GCast Layer (TLayerBBoxBuf LyBuf) where gcast lyr = gcast (fromLayer lyr :: TLayerBBox) +-- | + emptyTLayerBBoxBufLyBuf :: IO (TLayerBBoxBuf LyBuf) emptyTLayerBBoxBufLyBuf = updateLayerBuf Nothing $ gcast emptyLayer +-- | + instance GBackgroundable BackgroundPDFDrawable where gFromBackground = bkgPDFFromBkg gToBackground = bkgFromBkgPDF -+-- | tlayerBBoxFromTLayerSelect :: TLayerSelect TLayerBBox -> TLayerBBox tlayerBBoxFromTLayerSelect l = @@ -90,6 +117,8 @@ Left strs -> GLayer strs Right alist -> GLayer . Prelude.concat $ interleave id unHitted alist +-- | + tlayerbufFromTLayerSelectBuf :: TLayerSelectBuf (TLayerBBoxBuf b) -> (TLayerBBoxBuf b) tlayerbufFromTLayerSelectBuf l = @@ -98,23 +127,18 @@ Right alist -> GLayerBuf (get g_buffer l) . Prelude.concat $ interleave id unHitted alist +-- | + instance GCast TTempPageSelectPDF TPageBBoxMapPDF where gcast = tpageBBoxMapPDFFromTTempPageSelectPDF ---- | deprecated --tpageBBoxMapPDFFromTTempPageSelectPDF :: TTempPageSelectPDF -> TPageBBoxMapPDF-tpageBBoxMapPDFFromTTempPageSelectPDF p = - let TLayerSelectInPage s others = get g_layers p - s' = tlayerBBoxFromTLayerSelect s- in GPage (get g_dimension p) (get g_background p) (gFromList (s':others))- - - +-- | + instance GCast TTempPageSelectPDFBuf TPageBBoxMapPDFBuf where gcast = tpageBBoxMapPDFBufFromTTempPageSelectPDFBuf +-- | + tpageBBoxMapPDFBufFromTTempPageSelectPDFBuf :: TTempPageSelectPDFBuf -> TPageBBoxMapPDFBuf tpageBBoxMapPDFBufFromTTempPageSelectPDFBuf p = @@ -128,10 +152,13 @@ Select (O (Just sz)) = normalizedothers in GPage (get g_dimension p) (get g_background p) (Select . O . Just $ replace s' sz) +-- | instance GCast TPageBBoxMapPDFBuf TTempPageSelectPDFBuf where gcast = ttempPageSelectPDFBufFromTPageBBoxMapPDFBuf +-- | + ttempPageSelectPDFBufFromTPageBBoxMapPDFBuf :: TPageBBoxMapPDFBuf -> TTempPageSelectPDFBuf ttempPageSelectPDFBufFromTPageBBoxMapPDFBuf p = @@ -145,13 +172,49 @@ currtemp = GLayerBuf (get g_buffer curr) (TEitherAlterHitted . Left . gToList . get g_bstrokes $ curr) in GPage (get g_dimension p) (get g_background p) (TLayerSelectInPageBuf currtemp normalizedothers)- - ++-- | ++instance GCast TXournalBBoxMapPDFBuf Xournal where+ gcast = Xournal <$> get g_title + <*> gToList . fmap (toPageFromBuf gToBackground) . get g_pages +++-- | ++instance GCast TTempXournalSelectPDFBuf Xournal where + gcast = Xournal <$> gselectTitle + <*> gToList . fmap (toPageFromBuf gToBackground) . gselectAll + ---------------------- +----- 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 (InBBoxOption mbbox) (InBBox page) = do + cairoRenderOption (DrawPDFInBBox mbbox) (gbackground page, gdimension page) + mapM_ (cairoDrawLayerBBox mbbox) . glayers $ page +++-- |+ mkTXournalBBoxMapPDF :: Xournal -> IO TXournalBBoxMapPDF mkTXournalBBoxMapPDF xoj = do let pgs = xoj_pages xoj @@ -208,8 +271,7 @@ return bkgpdf #endif --+-- | mkTLayerBBoxBufFromNoBuf :: Dimension -> TLayerBBox -> IO (TLayerBBoxBuf LyBuf) mkTLayerBBoxBufFromNoBuf (Dim w h) lyr = do @@ -219,6 +281,8 @@ return $ GLayerBuf { gbuffer = LyBuf (Just sfc), gbstrokes = strs } -- temporary +-- | + updateLayerBuf :: Maybe BBox -> TLayerBBoxBuf LyBuf -> IO (TLayerBBoxBuf LyBuf) updateLayerBuf mbbox lyr = do case get g_buffer lyr of @@ -229,6 +293,7 @@ return lyr _ -> return lyr +-- | mkTPageBBoxMapPDFBufFromNoBuf :: TPageBBoxMapPDF -> IO TPageBBoxMapPDFBuf mkTPageBBoxMapPDFBufFromNoBuf page = do @@ -238,6 +303,7 @@ ls' <- mapM (mkTLayerBBoxBufFromNoBuf dim) ls return . GPage dim bkg . gFromList . gToList $ ls' +-- | mkTXournalBBoxMapPDFBufFromNoBuf :: TXournalBBoxMapPDF -> IO TXournalBBoxMapPDFBuf@@ -277,32 +343,14 @@ GPage dim bkg . gFromList . gToList . 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 (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@@ -327,3 +375,13 @@ 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++++-- | deprecated ++tpageBBoxMapPDFFromTTempPageSelectPDF :: TTempPageSelectPDF -> TPageBBoxMapPDF+tpageBBoxMapPDFFromTTempPageSelectPDF p = + let TLayerSelectInPage s others = get g_layers p + s' = tlayerBBoxFromTLayerSelect s+ in GPage (get g_dimension p) (get g_background p) (gFromList (s':others))
src/Graphics/Xournal/Render/PDFBackground.hs view
@@ -12,31 +12,29 @@ -- Stability : experimental -- Portability : GHC --+----------------------------------------------------------------------------- module Graphics.Xournal.Render.PDFBackground where - import Control.Monad.State hiding (mapM_)-import Prelude hiding (mapM_)-- import Data.Monoid import Data.ByteString hiding (putStrLn) import qualified Data.ByteString.Char8 as C- import Data.Xournal.Simple import Data.Xournal.BBox import Graphics.Xournal.Render.BBox import Graphics.Xournal.Render.Generic-+-- #ifdef POPPLER import qualified Graphics.UI.Gtk.Poppler.Document as Poppler import qualified Graphics.UI.Gtk.Poppler.Page as PopplerPage #endif-+-- import Graphics.Rendering.Cairo-+import Prelude hiding (mapM_) +-- | + data Context = Context { ctxt_domain :: ByteString , ctxt_filename :: ByteString #ifdef POPPLER@@ -45,6 +43,8 @@ , ctxt_doc :: Maybe () #endif }++-- | data BackgroundPDFDrawable = BkgPDFSolid { bkgpdf_color :: ByteString
src/Graphics/Xournal/Render/Type/Select.hs view
@@ -10,6 +10,7 @@ -- Stability : experimental -- Portability : GHC --+----------------------------------------------------------------------------- module Graphics.Xournal.Render.Type.Select where
xournal-render.cabal view
@@ -1,5 +1,5 @@ Name: xournal-render-Version: 0.6+Version: 0.6.0 Synopsis: Xournal file renderer Description: Rendering library using cairo for xournal file format License: BSD3@@ -20,7 +20,7 @@ Library hs-source-dirs: src- ghc-options: -Wall -funbox-strict-fields -fno-warn-unused-do-bind+ ghc-options: -Wall -fno-warn-orphans -funbox-strict-fields -fno-warn-unused-do-bind ghc-prof-options: -caf-all -auto-all if flag(poppler)