{- |
  Reanimate configures a consistent, default canvas. The values of this default
  can be observed via the constants in this module. Keep in mind, these values
  describe the /default/ canvas and will not apply to custom viewports.
-}
module Reanimate.Constants
  ( screenWidth
  , screenHeight
  , screenTop
  , screenBottom
  , screenLeft
  , screenRight
  , defaultDPI
  , defaultStrokeWidth
  ) where

import           Graphics.SvgTree (Dpi)

-- | Number of units from the left-most point to the right-most point on the screen.
screenWidth :: Fractional a => a

-- | Number of units from the bottom to the top of the screen.
screenHeight :: Fractional a => a

-- | Position of the top of the screen.
screenTop :: Fractional a => a

-- | Position of the bottom of the screen.
screenBottom :: Fractional a => a

-- | Position of the left side of the screen.
screenLeft :: Fractional a => a

-- | Position of the right side of the screen.
screenRight :: Fractional a => a

screenWidth = 16
screenHeight = 9
screenTop = screenHeight/2
screenBottom = -screenHeight/2
screenLeft = -screenWidth/2
screenRight = screenWidth/2

-- | SVG allows measurements in inches which have to be converted to local units.
--   This value describes how many local units there are in an inch.
defaultDPI :: Dpi
defaultDPI = 96

-- | Default thickness of lines.
defaultStrokeWidth :: Double
defaultStrokeWidth = 0.05