{-# OPTIONS_HADDOCK hide #-} module Graphics.Gloss.Internals.Interface.ViewPort.ControlState ( State (..) , stateInit ) where import Graphics.Gloss.Internals.Interface.ViewPort.Command import Graphics.Gloss.Internals.Interface.Backend import qualified Data.Map as Map import Data.Map (Map) -- ViewControl State ------------------------------------------------------------------------------ -- | State for controlling the viewport. -- These are used by the viewport control component. data State = State { -- | The command list for the viewport controller. -- These can be safely overwridden at any time by deleting / adding entries to the list. -- Entries at the front of the list take precedence. stateCommands :: Map Command [(Key, Maybe Modifiers)] -- | How much to scale the world by for each step of the mouse wheel. , stateScaleStep :: Float -- | How many degrees to rotate the world by for each pixel of x motion. , stateRotateFactor :: Float -- | During viewport translation, -- where the mouse was clicked on the window. , stateTranslateMark :: Maybe (Int, Int) -- | During viewport rotation, -- where the mouse was clicked on the window , stateRotateMark :: Maybe (Int, Int) } -- | The initial view state. stateInit :: State stateInit = State { stateCommands = Map.fromList defaultCommandConfig , stateScaleStep = 0.85 , stateRotateFactor = 0.6 , stateTranslateMark = Nothing , stateRotateMark = Nothing }