hxournal-0.5: lib/Application/HXournal/Type/Canvas.hs
{-# LANGUAGE TemplateHaskell #-}
module Application.HXournal.Type.Canvas where
import Application.HXournal.Type.Enum
import Data.Sequence
import qualified Data.IntMap as M
import Data.Label
import Prelude hiding ((.), id)
import Graphics.Xournal.Type.Map
import Graphics.Xournal.Type.Select
import Graphics.UI.Gtk hiding (get,set)
type CanvasId = Int
data PenDraw = PenDraw { _points :: Seq (Double,Double) }
deriving (Show)
emptyPenDraw :: PenDraw
emptyPenDraw = PenDraw empty
data PageMode = Continous | OnePage
deriving (Show,Eq)
data ZoomMode = Original | FitWidth | FitHeight | Zoom Double
deriving (Show,Eq)
data ViewInfo = ViewInfo { _pageMode :: PageMode
, _zoomMode :: ZoomMode
, _viewPortOrigin :: (Double,Double)
, _pageDimension :: (Double,Double)
}
deriving (Show)
data CanvasInfo = CanvasInfo { _canvasId :: CanvasId
, _drawArea :: DrawingArea
, _scrolledWindow :: ScrolledWindow
, _viewInfo :: ViewInfo
, _currentPageNum :: Int
, _currentPage :: Either PageBBoxMap TempPageSelect
, _horizAdjustment :: Adjustment
, _vertAdjustment :: Adjustment
}
type CanvasInfoMap = M.IntMap CanvasInfo
data PenType = PenWork
| HighlighterWork
| EraserWork
| TextWork
deriving (Show,Eq)
data PenInfo = PenInfo { _penType :: PenType
, _penWidth :: Double
, _penColor :: PenColor }
deriving (Show)
$(mkLabels [''PenDraw, ''ViewInfo, ''PenInfo, ''CanvasInfo])