From f569f3f173dc96e2e49d73299abbcee94c4dd0e9 Mon Sep 17 00:00:00 2001 From: justin Date: Wed, 10 May 2023 01:45:29 +0100 Subject: [PATCH] Add file --- src/Dodge/Data/ScreenPos.hs | 13 +++++++++++++ src/Dodge/ScreenPos.hs | 18 ++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 src/Dodge/Data/ScreenPos.hs create mode 100644 src/Dodge/ScreenPos.hs diff --git a/src/Dodge/Data/ScreenPos.hs b/src/Dodge/Data/ScreenPos.hs new file mode 100644 index 000000000..ea2ccf28f --- /dev/null +++ b/src/Dodge/Data/ScreenPos.hs @@ -0,0 +1,13 @@ +{-# LANGUAGE StrictData #-} +{-# LANGUAGE TemplateHaskell #-} +module Dodge.Data.ScreenPos + where + +import Geometry.Data +import Control.Lens + +data ScreenPos = ScreenPos + { _spScreenOff :: Point2 + , _spPixelOff :: Point2 + } +makeLenses ''ScreenPos diff --git a/src/Dodge/ScreenPos.hs b/src/Dodge/ScreenPos.hs new file mode 100644 index 000000000..c3dfac3d4 --- /dev/null +++ b/src/Dodge/ScreenPos.hs @@ -0,0 +1,18 @@ +module Dodge.ScreenPos where + +import Dodge.Base.Window +import Dodge.Data.Config +import Dodge.Data.ScreenPos +import Geometry.Data +import Picture.Base +import Control.Lens + +fromTopLeft :: Point2 -> ScreenPos +fromTopLeft (V2 x y) = ScreenPos (V2 (-0.5) 0.5) (V2 x (- y)) + +translateScreenPos :: Configuration -> ScreenPos -> Picture -> Picture +translateScreenPos cfig sp = translate x y + where + V2 x y = sp ^. spScreenOff * V2 hw hh + sp ^. spPixelOff + hw = halfWidth cfig + hh = halfHeight cfig