{-# LANGUAGE RebindableSyntax #-}
{-# OPTIONS_GHC -Wall #-}
{-# OPTIONS_HADDOCK prune #-}
module Chart.Data
(
Rect (..),
padRect,
padSingletons,
singletonGuard,
Point (..),
addp,
Multiplicative (one),
Additive (zero),
Direction (..),
Norm (..),
Signed (..),
module NumHask.Space,
)
where
import NumHask.Prelude
import NumHask.Space
padRect :: (Subtractive a) => a -> Rect a -> Rect a
padRect :: a -> Rect a -> Rect a
padRect a
p (Rect a
x a
z a
y a
w) = a -> a -> a -> a -> Rect a
forall a. a -> a -> a -> a -> Rect a
Rect (a
x a -> a -> a
forall a. Subtractive a => a -> a -> a
- a
p) (a
z a -> a -> a
forall a. Additive a => a -> a -> a
+ a
p) (a
y a -> a -> a
forall a. Subtractive a => a -> a -> a
- a
p) (a
w a -> a -> a
forall a. Additive a => a -> a -> a
+ a
p)
padSingletons :: Rect Double -> Rect Double
padSingletons :: Rect Double -> Rect Double
padSingletons (Rect Double
x Double
z Double
y Double
w)
| Double
x Double -> Double -> Bool
forall a. Eq a => a -> a -> Bool
== Double
z Bool -> Bool -> Bool
&& Double
y Double -> Double -> Bool
forall a. Eq a => a -> a -> Bool
== Double
w = Double -> Double -> Double -> Double -> Rect Double
forall a. a -> a -> a -> a -> Rect a
Rect (Double
x Double -> Double -> Double
forall a. Subtractive a => a -> a -> a
- Double
0.5) (Double
x Double -> Double -> Double
forall a. Additive a => a -> a -> a
+ Double
0.5) (Double
y Double -> Double -> Double
forall a. Subtractive a => a -> a -> a
- Double
0.5) (Double
y Double -> Double -> Double
forall a. Additive a => a -> a -> a
+ Double
0.5)
| Double
x Double -> Double -> Bool
forall a. Eq a => a -> a -> Bool
== Double
z = Double -> Double -> Double -> Double -> Rect Double
forall a. a -> a -> a -> a -> Rect a
Rect (Double
x Double -> Double -> Double
forall a. Subtractive a => a -> a -> a
- Double
0.5) (Double
x Double -> Double -> Double
forall a. Additive a => a -> a -> a
+ Double
0.5) Double
y Double
w
| Double
y Double -> Double -> Bool
forall a. Eq a => a -> a -> Bool
== Double
w = Double -> Double -> Double -> Double -> Rect Double
forall a. a -> a -> a -> a -> Rect a
Rect Double
x Double
z (Double
y Double -> Double -> Double
forall a. Subtractive a => a -> a -> a
- Double
0.5) (Double
y Double -> Double -> Double
forall a. Additive a => a -> a -> a
+ Double
0.5)
| Bool
otherwise = Double -> Double -> Double -> Double -> Rect Double
forall a. a -> a -> a -> a -> Rect a
Rect Double
x Double
z Double
y Double
w
singletonGuard :: Maybe (Rect Double) -> Rect Double
singletonGuard :: Maybe (Rect Double) -> Rect Double
singletonGuard = Rect Double
-> (Rect Double -> Rect Double)
-> Maybe (Rect Double)
-> Rect Double
forall b a. b -> (a -> b) -> Maybe a -> b
maybe Rect Double
forall a. Multiplicative a => a
one Rect Double -> Rect Double
padSingletons
addp :: Point Double -> Point Double -> Point Double
addp :: Point Double -> Point Double -> Point Double
addp = Point Double -> Point Double -> Point Double
forall a. Additive a => a -> a -> a
(+)