module SaveAsPDF where -- Imports from Haskell library import Control.Monad import Data.IORef -- Imports for GTK/Glade import Graphics.UI.Gtk import Graphics.Rendering.Cairo import qualified Graphics.Rendering.Cairo as C -- Imports for ThreadScope import EventsWindow import Timeline.Render import State import Timeline import Traces ------------------------------------------------------------------------------- saveAsPDF :: ViewerState -> IO () saveAsPDF state@ViewerState{..} = liftIO $ do scaleValue <- readIORef scaleIORef hadj_value0 <- adjustmentGetValue timelineAdj let hadj_value = toWholePixels scaleValue hadj_value0 mb_hecs <- readIORef hecsIORef Just fn <- readIORef filenameIORef case mb_hecs of Nothing -> return () Just hecs -> do (w, h) <- widgetGetSize timelineDrawingArea traces <- getViewTraces state cursorpos <- getCursorLine state let params = ViewParameters w h traces hadj_value scaleValue 1 False False let r = renderTraces state params traces hecs (Rectangle 0 0 w h) withPDFSurface (fn++".pdf") (fromIntegral w) (fromIntegral h) (flip renderWith $ r) return () -------------------------------------------------------------------------------