{-# LANGUAGE DeriveDataTypeable    #-}
{-# LANGUAGE FlexibleContexts      #-}
{-# LANGUAGE FlexibleInstances     #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE MultiWayIf            #-}
{-# LANGUAGE RankNTypes            #-}
{-# LANGUAGE ScopedTypeVariables   #-}
{-# LANGUAGE TypeFamilies          #-}
{-# LANGUAGE TypeOperators         #-}
{-# LANGUAGE UndecidableInstances  #-}
{-# LANGUAGE ViewPatterns          #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Plots.Axis.Render
  ( 
    RenderAxis (..)
  , r2AxisMain
    
  , buildPlots
  )where
import           Data.Bool
import           Data.Foldable              as F
import           Data.List                  (sort)
import           Data.Typeable
import           Diagrams.BoundingBox
import           Diagrams.Prelude
import           Diagrams.TwoD.Text
import           Linear                     hiding (rotate, translation)
import           Diagrams.Backend.CmdLine
import           Diagrams.Coordinates.Polar
import           Plots.Axis
import           Plots.Axis.ColourBar
import           Plots.Axis.Grid
import           Plots.Axis.Labels
import           Plots.Axis.Line
import           Plots.Axis.Scale
import           Plots.Axis.Ticks
import           Plots.Axis.Title
import           Plots.Legend
import           Plots.Style
import           Plots.Types
import           Plots.Util
import           Prelude
instance (TypeableFloat n,
          Renderable (Path V2 n) b,
          Mainable (QDiagram b V2 n Any))
       => Mainable (Axis b Polar n) where
  type MainOpts (Axis b Polar n) = MainOpts (QDiagram b V2 n Any)
  mainRender :: MainOpts (Axis b Polar n) -> Axis b Polar n -> IO ()
mainRender MainOpts (Axis b Polar n)
opts = MainOpts (QDiagram b V2 n Any) -> QDiagram b V2 n Any -> IO ()
forall d. Mainable d => MainOpts d -> d -> IO ()
mainRender MainOpts (QDiagram b V2 n Any)
MainOpts (Axis b Polar n)
opts (QDiagram b V2 n Any -> IO ())
-> (Axis b Polar n -> QDiagram b V2 n Any)
-> Axis b Polar n
-> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Axis b Polar n -> QDiagram b V2 n Any
Axis b Polar n -> QDiagram b (BaseSpace Polar) n Any
forall b (v :: * -> *) n.
RenderAxis b v n =>
Axis b v n -> QDiagram b (BaseSpace v) n Any
renderAxis
instance (TypeableFloat n,
          Renderable (Path V2 n) b,
          Mainable (QDiagram b V2 n Any))
       => Mainable (Axis b V2 n) where
  type MainOpts (Axis b V2 n) = MainOpts (QDiagram b V2 n Any)
  mainRender :: MainOpts (Axis b V2 n) -> Axis b V2 n -> IO ()
mainRender MainOpts (Axis b V2 n)
opts = MainOpts (QDiagram b V2 n Any) -> QDiagram b V2 n Any -> IO ()
forall d. Mainable d => MainOpts d -> d -> IO ()
mainRender MainOpts (QDiagram b V2 n Any)
MainOpts (Axis b V2 n)
opts (QDiagram b V2 n Any -> IO ())
-> (Axis b V2 n -> QDiagram b V2 n Any) -> Axis b V2 n -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Axis b V2 n -> QDiagram b V2 n Any
Axis b V2 n -> QDiagram b (BaseSpace V2) n Any
forall b (v :: * -> *) n.
RenderAxis b v n =>
Axis b v n -> QDiagram b (BaseSpace v) n Any
renderAxis
instance ToResult (Axis b v n) where
  type Args (Axis b v n) = ()
  type ResultOf (Axis b v n) = Axis b v n
  toResult :: Axis b v n -> Args (Axis b v n) -> ResultOf (Axis b v n)
toResult Axis b v n
d Args (Axis b v n)
_ = ResultOf (Axis b v n)
Axis b v n
d
r2AxisMain
  :: (Parseable (MainOpts (QDiagram b V2 Double Any)),
      Mainable (Axis b V2 Double))
  => Axis b V2 Double
  -> IO ()
r2AxisMain :: forall b.
(Parseable (MainOpts (QDiagram b V2 Double Any)),
 Mainable (Axis b V2 Double)) =>
Axis b V2 Double -> IO ()
r2AxisMain = Axis b V2 Double -> IO ()
forall d. (Mainable d, Parseable (MainOpts d)) => d -> IO ()
mainWith
buildPlots :: BaseSpace c ~ v => Axis b c n -> [StyledPlot b v n]
buildPlots :: forall (c :: * -> *) (v :: * -> *) b n.
(BaseSpace c ~ v) =>
Axis b c n -> [StyledPlot b v n]
buildPlots Axis b c n
a = (StyledPlot b v n -> StyledPlot b v n)
-> [StyledPlot b v n] -> [StyledPlot b v n]
forall a b. (a -> b) -> [a] -> [b]
map (Endo (StyledPlot b v n) -> StyledPlot b v n -> StyledPlot b v n
forall a. Endo a -> a -> a
appEndo (Endo (StyledPlot b v n) -> StyledPlot b v n -> StyledPlot b v n)
-> Endo (StyledPlot b v n) -> StyledPlot b v n -> StyledPlot b v n
forall a b. (a -> b) -> a -> b
$ Axis b c n
a Axis b c n
-> Getting
     (Endo (StyledPlot b v n)) (Axis b c n) (Endo (StyledPlot b v n))
-> Endo (StyledPlot b v n)
forall s a. s -> Getting a s a -> a
^. Getting
  (Endo (StyledPlot b v n)) (Axis b c n) (Endo (StyledPlot b v n))
Lens' (Axis b c n) (Endo (StyledPlot b v n))
forall (c :: * -> *) (v :: * -> *) b n.
(BaseSpace c ~ v) =>
Lens' (Axis b c n) (Endo (StyledPlot b v n))
plotModifier)
             ([StyledPlot b v n] -> [StyledPlot b v n])
-> [StyledPlot b v n] -> [StyledPlot b v n]
forall a b. (a -> b) -> a -> b
$ (PlotStyle b v n -> DynamicPlot b v n -> StyledPlot b v n)
-> [PlotStyle b v n] -> [DynamicPlot b v n] -> [StyledPlot b v n]
forall a b c. (a -> b -> c) -> [a] -> [b] -> [c]
zipWith PlotStyle b v n -> DynamicPlot b v n -> StyledPlot b v n
forall b (v :: * -> *) n.
PlotStyle b v n -> DynamicPlot b v n -> StyledPlot b v n
styleDynamic (Axis b c n
a Axis b c n
-> Getting (Endo [PlotStyle b v n]) (Axis b c n) (PlotStyle b v n)
-> [PlotStyle b v n]
forall s a. s -> Getting (Endo [a]) s a -> [a]
^.. Getting (Endo [PlotStyle b v n]) (Axis b c n) (PlotStyle b v n)
(PlotStyle b (V (Axis b c n)) (N (Axis b c n))
 -> Const
      (Endo [PlotStyle b v n])
      (PlotStyle b (V (Axis b c n)) (N (Axis b c n))))
-> Axis b c n -> Const (Endo [PlotStyle b v n]) (Axis b c n)
forall a b.
HasAxisStyle a b =>
IndexedTraversal' Int a (PlotStyle b (V a) (N a))
IndexedTraversal'
  Int (Axis b c n) (PlotStyle b (V (Axis b c n)) (N (Axis b c n)))
axisStyles) (Axis b c n
a Axis b c n
-> Getting [DynamicPlot b v n] (Axis b c n) [DynamicPlot b v n]
-> [DynamicPlot b v n]
forall s a. s -> Getting a s a -> a
^. Getting [DynamicPlot b v n] (Axis b c n) [DynamicPlot b v n]
Lens' (Axis b c n) [DynamicPlot b v n]
forall (c :: * -> *) (v :: * -> *) b n.
(BaseSpace c ~ v) =>
Lens' (Axis b c n) [DynamicPlot b v n]
axisPlots)
             
class RenderAxis b v n where
  
  
  renderAxis :: Axis b v n -> QDiagram b (BaseSpace v) n Any
instance (TypeableFloat n, Renderable (Path V2 n) b)
    => RenderAxis b V2 n where
  
  
  renderAxis :: Axis b V2 n -> QDiagram b (BaseSpace V2) n Any
renderAxis = Axis b V2 n -> QDiagram b V2 n Any
Axis b V2 n -> QDiagram b (BaseSpace V2) n Any
forall n b.
(TypeableFloat n, Renderable (Path V2 n) b) =>
Axis b V2 n -> QDiagram b V2 n Any
renderR2Axis
renderR2Axis :: (TypeableFloat n, Renderable (Path V2 n) b)
  => Axis b V2 n -> QDiagram b V2 n Any
renderR2Axis :: forall n b.
(TypeableFloat n, Renderable (Path V2 n) b) =>
Axis b V2 n -> QDiagram b V2 n Any
renderR2Axis Axis b V2 n
a = n -> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall (v :: * -> *) n m b.
(Metric v, OrderedField n, Monoid' m) =>
n -> QDiagram b v n m -> QDiagram b v n m
frame n
40
               (QDiagram b V2 n Any -> QDiagram b V2 n Any)
-> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall a b. (a -> b) -> a -> b
$ QDiagram b V2 n Any
leg
              QDiagram b V2 n Any -> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall a. Semigroup a => a -> a -> a
<> QDiagram b V2 n Any
ttl
              QDiagram b V2 n Any -> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall a. Semigroup a => a -> a -> a
<> QDiagram b V2 n Any
cBar
              QDiagram b V2 n Any -> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall a. Semigroup a => a -> a -> a
<> QDiagram b V2 n Any
plots
              QDiagram b V2 n Any -> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall a. Semigroup a => a -> a -> a
<> E V2 -> E V2 -> LabelPosition -> QDiagram b V2 n Any
drawAxis E V2
forall (t :: * -> *). R1 t => E t
ex E V2
forall (t :: * -> *). R2 t => E t
ey LabelPosition
LowerLabels
              QDiagram b V2 n Any -> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall a. Semigroup a => a -> a -> a
<> E V2 -> E V2 -> LabelPosition -> QDiagram b V2 n Any
drawAxis E V2
forall (t :: * -> *). R2 t => E t
ey E V2
forall (t :: * -> *). R1 t => E t
ex LabelPosition
LeftLabels
  where
    spec :: AxisSpec V2 n
spec  = V2 (n, n)
-> Transformation V2 n -> V2 LogScale -> ColourMap -> AxisSpec V2 n
forall (v :: * -> *) n.
v (n, n)
-> Transformation v n -> v LogScale -> ColourMap -> AxisSpec v n
AxisSpec V2 (n, n)
xs Transformation V2 n
t (Axis b V2 n
aAxis b V2 n
-> Getting (V2 LogScale) (Axis b V2 n) (V2 LogScale) -> V2 LogScale
forall s a. s -> Getting a s a -> a
^.(V2 (SingleAxis b V2 n)
 -> Const (V2 LogScale) (V2 (SingleAxis b V2 n)))
-> Axis b V2 n -> Const (V2 LogScale) (Axis b V2 n)
Lens
  (Axis b V2 n)
  (Axis b V2 n)
  (V2 (SingleAxis b V2 n))
  (V2 (SingleAxis b V2 n))
forall (v :: * -> *) (c :: * -> *) (c' :: * -> *) b n.
(v ~ BaseSpace c, v ~ BaseSpace c') =>
Lens
  (Axis b c n)
  (Axis b c' n)
  (c (SingleAxis b v n))
  (c' (SingleAxis b v n))
axes ((V2 (SingleAxis b V2 n)
  -> Const (V2 LogScale) (V2 (SingleAxis b V2 n)))
 -> Axis b V2 n -> Const (V2 LogScale) (Axis b V2 n))
-> ((V2 LogScale -> Const (V2 LogScale) (V2 LogScale))
    -> V2 (SingleAxis b V2 n)
    -> Const (V2 LogScale) (V2 (SingleAxis b V2 n)))
-> Getting (V2 LogScale) (Axis b V2 n) (V2 LogScale)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LensLike
  (Context LogScale LogScale)
  (SingleAxis b V2 n)
  (SingleAxis b V2 n)
  LogScale
  LogScale
-> Lens
     (V2 (SingleAxis b V2 n))
     (V2 (SingleAxis b V2 n))
     (V2 LogScale)
     (V2 LogScale)
forall (f :: * -> *) a b s t.
Representable f =>
LensLike (Context a b) s t a b -> Lens (f s) (f t) (f a) (f b)
column LensLike
  (Context LogScale LogScale)
  (SingleAxis b V2 n)
  (SingleAxis b V2 n)
  LogScale
  LogScale
forall (f :: * -> *) a.
(HasAxisScaling f a, Functor f) =>
LensLike' f a LogScale
logScale) (Axis b V2 n
a Axis b V2 n
-> Getting ColourMap (Axis b V2 n) ColourMap -> ColourMap
forall s a. s -> Getting a s a -> a
^. Getting ColourMap (Axis b V2 n) ColourMap
forall a b. HasAxisStyle a b => Lens' a ColourMap
Lens' (Axis b V2 n) ColourMap
axisColourMap)
    plots :: QDiagram b V2 n Any
plots = (StyledPlot b V2 n -> QDiagram b V2 n Any)
-> [StyledPlot b V2 n] -> QDiagram b V2 n Any
forall m a. Monoid m => (a -> m) -> [a] -> m
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
foldMap (AxisSpec V2 n -> StyledPlot b V2 n -> QDiagram b V2 n Any
forall n b.
TypeableFloat n =>
AxisSpec V2 n -> StyledPlot b V2 n -> QDiagram b V2 n Any
renderStyledPlot AxisSpec V2 n
spec) [StyledPlot b V2 n]
styledPlots
    drawAxis :: E V2 -> E V2 -> LabelPosition -> QDiagram b V2 n Any
drawAxis E V2
ll E V2
ll2 = Point V2 n
-> V2 (n, n)
-> SingleAxis b V2 n
-> V2 LogScale
-> Transformation V2 n
-> E V2
-> E V2
-> LabelPosition
-> QDiagram b V2 n Any
forall b (v :: * -> *) n.
(v ~ V2, TypeableFloat n, HasLinearMap v, Metric v,
 Renderable (Path V2 n) b, n ~ N (v n), v ~ V (v n),
 OrderedField n) =>
Point v n
-> v (n, n)
-> SingleAxis b v n
-> v LogScale
-> T2 n
-> E v
-> E v
-> LabelPosition
-> QDiagram b V2 n Any
axisOnBasis Point V2 n
forall (f :: * -> *) a. (Additive f, Num a) => Point f a
origin V2 (n, n)
xs (Axis b V2 n
aAxis b V2 n
-> Getting (SingleAxis b V2 n) (Axis b V2 n) (SingleAxis b V2 n)
-> SingleAxis b V2 n
forall s a. s -> Getting a s a -> a
^.(V2 (SingleAxis b V2 n)
 -> Const (SingleAxis b V2 n) (V2 (SingleAxis b V2 n)))
-> Axis b V2 n -> Const (SingleAxis b V2 n) (Axis b V2 n)
Lens
  (Axis b V2 n)
  (Axis b V2 n)
  (V2 (SingleAxis b V2 n))
  (V2 (SingleAxis b V2 n))
forall (v :: * -> *) (c :: * -> *) (c' :: * -> *) b n.
(v ~ BaseSpace c, v ~ BaseSpace c') =>
Lens
  (Axis b c n)
  (Axis b c' n)
  (c (SingleAxis b v n))
  (c' (SingleAxis b v n))
axes((V2 (SingleAxis b V2 n)
  -> Const (SingleAxis b V2 n) (V2 (SingleAxis b V2 n)))
 -> Axis b V2 n -> Const (SingleAxis b V2 n) (Axis b V2 n))
-> ((SingleAxis b V2 n
     -> Const (SingleAxis b V2 n) (SingleAxis b V2 n))
    -> V2 (SingleAxis b V2 n)
    -> Const (SingleAxis b V2 n) (V2 (SingleAxis b V2 n)))
-> Getting (SingleAxis b V2 n) (Axis b V2 n) (SingleAxis b V2 n)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.E V2 -> forall x. Lens' (V2 x) x
forall (t :: * -> *). E t -> forall x. Lens' (t x) x
el E V2
ll) (Axis b V2 n
aAxis b V2 n
-> Getting (V2 LogScale) (Axis b V2 n) (V2 LogScale) -> V2 LogScale
forall s a. s -> Getting a s a -> a
^.(V2 (SingleAxis b V2 n)
 -> Const (V2 LogScale) (V2 (SingleAxis b V2 n)))
-> Axis b V2 n -> Const (V2 LogScale) (Axis b V2 n)
Lens
  (Axis b V2 n)
  (Axis b V2 n)
  (V2 (SingleAxis b V2 n))
  (V2 (SingleAxis b V2 n))
forall (v :: * -> *) (c :: * -> *) (c' :: * -> *) b n.
(v ~ BaseSpace c, v ~ BaseSpace c') =>
Lens
  (Axis b c n)
  (Axis b c' n)
  (c (SingleAxis b v n))
  (c' (SingleAxis b v n))
axes((V2 (SingleAxis b V2 n)
  -> Const (V2 LogScale) (V2 (SingleAxis b V2 n)))
 -> Axis b V2 n -> Const (V2 LogScale) (Axis b V2 n))
-> ((V2 LogScale -> Const (V2 LogScale) (V2 LogScale))
    -> V2 (SingleAxis b V2 n)
    -> Const (V2 LogScale) (V2 (SingleAxis b V2 n)))
-> Getting (V2 LogScale) (Axis b V2 n) (V2 LogScale)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.LensLike
  (Context LogScale LogScale)
  (SingleAxis b V2 n)
  (SingleAxis b V2 n)
  LogScale
  LogScale
-> Lens
     (V2 (SingleAxis b V2 n))
     (V2 (SingleAxis b V2 n))
     (V2 LogScale)
     (V2 LogScale)
forall (f :: * -> *) a b s t.
Representable f =>
LensLike (Context a b) s t a b -> Lens (f s) (f t) (f a) (f b)
column LensLike
  (Context LogScale LogScale)
  (SingleAxis b V2 n)
  (SingleAxis b V2 n)
  LogScale
  LogScale
forall (f :: * -> *) a.
(HasAxisScaling f a, Functor f) =>
LensLike' f a LogScale
logScale) Transformation V2 n
t E V2
ll E V2
ll2
    
    (V2 (n, n)
xs, Transformation V2 n
tv, Transformation V2 n
t') = V2 (AxisScaling n)
-> BoundingBox V2 n
-> (V2 (n, n), Transformation V2 n, Transformation V2 n)
forall (v :: * -> *) n.
(HasLinearMap v, OrderedField n, Applicative v) =>
v (AxisScaling n)
-> BoundingBox v n
-> (v (n, n), Transformation v n, Transformation v n)
calculateScaling (Axis b V2 n
aAxis b V2 n
-> Getting (V2 (AxisScaling n)) (Axis b V2 n) (V2 (AxisScaling n))
-> V2 (AxisScaling n)
forall s a. s -> Getting a s a -> a
^.(V2 (SingleAxis b V2 n)
 -> Const (V2 (AxisScaling n)) (V2 (SingleAxis b V2 n)))
-> Axis b V2 n -> Const (V2 (AxisScaling n)) (Axis b V2 n)
Lens
  (Axis b V2 n)
  (Axis b V2 n)
  (V2 (SingleAxis b V2 n))
  (V2 (SingleAxis b V2 n))
forall (v :: * -> *) (c :: * -> *) (c' :: * -> *) b n.
(v ~ BaseSpace c, v ~ BaseSpace c') =>
Lens
  (Axis b c n)
  (Axis b c' n)
  (c (SingleAxis b v n))
  (c' (SingleAxis b v n))
axes((V2 (SingleAxis b V2 n)
  -> Const (V2 (AxisScaling n)) (V2 (SingleAxis b V2 n)))
 -> Axis b V2 n -> Const (V2 (AxisScaling n)) (Axis b V2 n))
-> ((V2 (AxisScaling n)
     -> Const (V2 (AxisScaling n)) (V2 (AxisScaling n)))
    -> V2 (SingleAxis b V2 n)
    -> Const (V2 (AxisScaling n)) (V2 (SingleAxis b V2 n)))
-> Getting (V2 (AxisScaling n)) (Axis b V2 n) (V2 (AxisScaling n))
forall b c a. (b -> c) -> (a -> b) -> a -> c
.LensLike
  (Context (AxisScaling n) (AxisScaling n))
  (SingleAxis b V2 n)
  (SingleAxis b V2 n)
  (AxisScaling n)
  (AxisScaling n)
-> Lens
     (V2 (SingleAxis b V2 n))
     (V2 (SingleAxis b V2 n))
     (V2 (AxisScaling n))
     (V2 (AxisScaling n))
forall (f :: * -> *) a b s t.
Representable f =>
LensLike (Context a b) s t a b -> Lens (f s) (f t) (f a) (f b)
column LensLike
  (Context (AxisScaling n) (AxisScaling n))
  (SingleAxis b V2 n)
  (SingleAxis b V2 n)
  (AxisScaling n)
  (AxisScaling n)
LensLike'
  (Context (AxisScaling n) (AxisScaling n))
  (SingleAxis b V2 n)
  (AxisScaling (N (SingleAxis b V2 n)))
forall (f :: * -> *) a.
HasAxisScaling f a =>
LensLike' f a (AxisScaling (N a))
axisScaling) ([StyledPlot b V2 n] -> BoundingBox V2 n
forall (v :: * -> *) n a.
(InSpace v n a, HasBasis v, Enveloped a) =>
a -> BoundingBox v n
boundingBox [StyledPlot b V2 n]
styledPlots)
    t :: Transformation V2 n
t = Transformation V2 n
tv Transformation V2 n -> Transformation V2 n -> Transformation V2 n
forall a. Semigroup a => a -> a -> a
<> Transformation V2 n
t'
    
    bb :: BoundingBox V2 n
bb = Point V2 n -> Point V2 n -> BoundingBox V2 n
forall (v :: * -> *) n.
(Additive v, Foldable v, Ord n) =>
Point v n -> Point v n -> BoundingBox v n
fromCorners (V2 n -> Point V2 n
forall (f :: * -> *) a. f a -> Point f a
P (V2 n -> Point V2 n) -> (V2 n -> V2 n) -> V2 n -> Point V2 n
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Transformation V2 n -> V2 n -> V2 n
forall (v :: * -> *) n. Transformation v n -> v n -> v n
apply Transformation V2 n
t (V2 n -> Point V2 n) -> V2 n -> Point V2 n
forall a b. (a -> b) -> a -> b
$ ((n, n) -> n) -> V2 (n, n) -> V2 n
forall a b. (a -> b) -> V2 a -> V2 b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (n, n) -> n
forall a b. (a, b) -> a
fst V2 (n, n)
xs) (V2 n -> Point V2 n
forall (f :: * -> *) a. f a -> Point f a
P (V2 n -> Point V2 n) -> (V2 n -> V2 n) -> V2 n -> Point V2 n
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Transformation V2 n -> V2 n -> V2 n
forall (v :: * -> *) n. Transformation v n -> v n -> v n
apply Transformation V2 n
t (V2 n -> Point V2 n) -> V2 n -> Point V2 n
forall a b. (a -> b) -> a -> b
$ ((n, n) -> n) -> V2 (n, n) -> V2 n
forall a b. (a -> b) -> V2 a -> V2 b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (n, n) -> n
forall a b. (a, b) -> b
snd V2 (n, n)
xs)
    leg :: QDiagram b V2 n Any
leg = BoundingBox V2 n
-> [(QDiagram b V2 n Any, String)]
-> Legend b n
-> QDiagram b V2 n Any
forall n b.
(TypeableFloat n, Renderable (Path V2 n) b) =>
BoundingBox V2 n
-> [(QDiagram b V2 n Any, String)]
-> Legend b n
-> QDiagram b V2 n Any
drawLegend BoundingBox V2 n
bb ([StyledPlot b V2 n] -> [(QDiagram b V2 n Any, String)]
forall n b (v :: * -> *).
Ord n =>
[StyledPlot b v n] -> [(QDiagram b v n Any, String)]
styledPlotLegends [StyledPlot b V2 n]
styledPlots) (Axis b V2 n
a Axis b V2 n
-> Getting (Legend b n) (Axis b V2 n) (Legend b n) -> Legend b n
forall s a. s -> Getting a s a -> a
^. Getting (Legend b n) (Axis b V2 n) (Legend b n)
(Legend b (N (Axis b V2 n))
 -> Const (Legend b n) (Legend b (N (Axis b V2 n))))
-> Axis b V2 n -> Const (Legend b n) (Axis b V2 n)
forall a b. HasLegend a b => Lens' a (Legend b (N a))
Lens' (Axis b V2 n) (Legend b (N (Axis b V2 n)))
legend)
    
    
    cBar :: QDiagram b V2 n Any
cBar = BoundingBox V2 n
-> ColourBar b n -> ColourMap -> (n, n) -> QDiagram b V2 n Any
forall n b.
(TypeableFloat n, Renderable (Path V2 n) b) =>
BoundingBox V2 n
-> ColourBar b n -> ColourMap -> (n, n) -> QDiagram b V2 n Any
addColourBar BoundingBox V2 n
bb (Axis b V2 n
aAxis b V2 n
-> Getting (ColourBar b n) (Axis b V2 n) (ColourBar b n)
-> ColourBar b n
forall s a. s -> Getting a s a -> a
^.Getting (ColourBar b n) (Axis b V2 n) (ColourBar b n)
(ColourBar b (N (Axis b V2 n))
 -> Const (ColourBar b n) (ColourBar b (N (Axis b V2 n))))
-> Axis b V2 n -> Const (ColourBar b n) (Axis b V2 n)
forall a b. HasColourBar a b => Lens' a (ColourBar b (N a))
Lens' (Axis b V2 n) (ColourBar b (N (Axis b V2 n)))
colourBar) (Axis b V2 n
a Axis b V2 n
-> Getting ColourMap (Axis b V2 n) ColourMap -> ColourMap
forall s a. s -> Getting a s a -> a
^. Getting ColourMap (Axis b V2 n) ColourMap
forall a b. HasAxisStyle a b => Lens' a ColourMap
Lens' (Axis b V2 n) ColourMap
axisColourMap) (Axis b V2 n
aAxis b V2 n -> Getting (n, n) (Axis b V2 n) (n, n) -> (n, n)
forall s a. s -> Getting a s a -> a
^.Getting (n, n) (Axis b V2 n) (n, n)
forall b (v :: * -> *) n (f :: * -> *).
Functor f =>
((n, n) -> f (n, n)) -> Axis b v n -> f (Axis b v n)
colourBarRange)
    
    ttl :: QDiagram b V2 n Any
ttl = BoundingBox V2 n -> Title b V2 n -> QDiagram b V2 n Any
forall n b.
TypeableFloat n =>
BoundingBox V2 n -> Title b V2 n -> QDiagram b V2 n Any
drawTitle BoundingBox V2 n
bb (Axis b V2 n
aAxis b V2 n
-> Getting (Title b V2 n) (Axis b V2 n) (Title b V2 n)
-> Title b V2 n
forall s a. s -> Getting a s a -> a
^.(Title b (V (Axis b V2 n)) (N (Axis b V2 n))
 -> Const
      (Title b V2 n) (Title b (V (Axis b V2 n)) (N (Axis b V2 n))))
-> Axis b V2 n -> Const (Title b V2 n) (Axis b V2 n)
Getting (Title b V2 n) (Axis b V2 n) (Title b V2 n)
forall a b. HasTitle a b => Lens' a (Title b (V a) (N a))
Lens' (Axis b V2 n) (Title b (V (Axis b V2 n)) (N (Axis b V2 n)))
title)
    
    styledPlots :: [StyledPlot b V2 n]
styledPlots = Axis b V2 n -> [StyledPlot b V2 n]
forall (c :: * -> *) (v :: * -> *) b n.
(BaseSpace c ~ v) =>
Axis b c n -> [StyledPlot b v n]
buildPlots Axis b V2 n
a
data LabelPosition
  = NoLabels
  | LowerLabels
  | LeftLabels
  | RightLabels
  | UpperLabels
  deriving (Int -> LabelPosition -> ShowS
[LabelPosition] -> ShowS
LabelPosition -> String
(Int -> LabelPosition -> ShowS)
-> (LabelPosition -> String)
-> ([LabelPosition] -> ShowS)
-> Show LabelPosition
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> LabelPosition -> ShowS
showsPrec :: Int -> LabelPosition -> ShowS
$cshow :: LabelPosition -> String
show :: LabelPosition -> String
$cshowList :: [LabelPosition] -> ShowS
showList :: [LabelPosition] -> ShowS
Show, LabelPosition -> LabelPosition -> Bool
(LabelPosition -> LabelPosition -> Bool)
-> (LabelPosition -> LabelPosition -> Bool) -> Eq LabelPosition
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: LabelPosition -> LabelPosition -> Bool
== :: LabelPosition -> LabelPosition -> Bool
$c/= :: LabelPosition -> LabelPosition -> Bool
/= :: LabelPosition -> LabelPosition -> Bool
Eq, Typeable)
axisOnBasis
  :: forall b v n. (v ~ V2, TypeableFloat n, HasLinearMap v, Metric v,
                    Renderable (Path V2 n) b, n ~ N (v n), v ~ V (v n), OrderedField n)
  => Point v n        
  -> v (n, n)         
  -> SingleAxis b v n 
  -> v LogScale       
  -> T2 n             
  -> E v              
  -> E v              
  -> LabelPosition    
  -> QDiagram b V2 n Any   
axisOnBasis :: forall b (v :: * -> *) n.
(v ~ V2, TypeableFloat n, HasLinearMap v, Metric v,
 Renderable (Path V2 n) b, n ~ N (v n), v ~ V (v n),
 OrderedField n) =>
Point v n
-> v (n, n)
-> SingleAxis b v n
-> v LogScale
-> T2 n
-> E v
-> E v
-> LabelPosition
-> QDiagram b V2 n Any
axisOnBasis Point v n
p v (n, n)
bs SingleAxis b v n
a v LogScale
ls T2 n
t E v
e E v
eO LabelPosition
lp
  | SingleAxis b v n
a SingleAxis b v n -> Getting Bool (SingleAxis b v n) Bool -> Bool
forall s a. s -> Getting a s a -> a
^. Getting Bool (SingleAxis b v n) Bool
forall a. HasVisibility a => Lens' a Bool
Lens' (SingleAxis b v n) Bool
hidden = QDiagram b V2 n Any -> QDiagram b V2 n Any
forall (v :: * -> *) n a m b.
(InSpace v n a, Monoid' m, Enveloped a, Traced a) =>
a -> QDiagram b v n m
phantom QDiagram b V2 n Any
axis
  | Bool
otherwise   = QDiagram b V2 n Any
axis
  where
    axis :: QDiagram b V2 n Any
axis = QDiagram b V2 n Any
tickLabels QDiagram b V2 n Any -> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall a. Semigroup a => a -> a -> a
<> QDiagram b V2 n Any
axLabels QDiagram b V2 n Any -> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall a. Semigroup a => a -> a -> a
<> QDiagram b V2 n Any
ticks QDiagram b V2 n Any -> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall a. Semigroup a => a -> a -> a
<> QDiagram b V2 n Any
line QDiagram b V2 n Any -> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall a. Semigroup a => a -> a -> a
<> QDiagram b V2 n Any
grid
    tStroke :: Path v n -> QDiagram b V2 n Any
tStroke = Path v n -> QDiagram b V2 n Any
forall n t b.
(InSpace V2 n t, ToPath t, TypeableFloat n,
 Renderable (Path V2 n) b) =>
t -> QDiagram b V2 n Any
stroke (Path v n -> QDiagram b V2 n Any)
-> (Path v n -> Path v n) -> Path v n -> QDiagram b V2 n Any
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Transformation (V (Path v n)) (N (Path v n))
-> Path v n -> Path v n
forall t. Transformable t => Transformation (V t) (N t) -> t -> t
transform Transformation (V (Path v n)) (N (Path v n))
T2 n
t
    
    axLabels :: QDiagram b V2 n Any
axLabels
      | String -> Bool
forall a. [a] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null String
txt Bool -> Bool -> Bool
|| LabelPosition
lp LabelPosition -> LabelPosition -> Bool
forall a. Eq a => a -> a -> Bool
== LabelPosition
NoLabels Bool -> Bool -> Bool
|| SingleAxis b v n
a SingleAxis b v n -> Getting Bool (SingleAxis b v n) Bool -> Bool
forall s a. s -> Getting a s a -> a
^. LensLike'
  (Const Bool)
  (SingleAxis b v n)
  (AxisLabel b (V (SingleAxis b v n)) (N (SingleAxis b v n)))
(AxisLabel b V2 n -> Const Bool (AxisLabel b V2 n))
-> SingleAxis b v n -> Const Bool (SingleAxis b v n)
forall (f :: * -> *) a b.
HasAxisLabel f a b =>
LensLike' f a (AxisLabel b (V a) (N a))
axisLabel ((AxisLabel b V2 n -> Const Bool (AxisLabel b V2 n))
 -> SingleAxis b v n -> Const Bool (SingleAxis b v n))
-> ((Bool -> Const Bool Bool)
    -> AxisLabel b V2 n -> Const Bool (AxisLabel b V2 n))
-> Getting Bool (SingleAxis b v n) Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Bool -> Const Bool Bool)
-> AxisLabel b V2 n -> Const Bool (AxisLabel b V2 n)
forall a. HasVisibility a => Lens' a Bool
Lens' (AxisLabel b V2 n) Bool
hidden
                  = QDiagram b V2 n Any
forall a. Monoid a => a
mempty
      | Bool
otherwise = (SingleAxis b v n
a SingleAxis b v n
-> Getting
     (TextAlignment n -> String -> QDiagram b V2 n Any)
     (SingleAxis b v n)
     (TextAlignment n -> String -> QDiagram b V2 n Any)
-> TextAlignment n
-> String
-> QDiagram b V2 n Any
forall s a. s -> Getting a s a -> a
^. Getting
  (TextAlignment n -> String -> QDiagram b V2 n Any)
  (SingleAxis b v n)
  (TextAlignment n -> String -> QDiagram b V2 n Any)
LensLike'
  (Const (TextAlignment n -> String -> QDiagram b V2 n Any))
  (SingleAxis b v n)
  (TextFunction b (V (SingleAxis b v n)) (N (SingleAxis b v n)))
forall (f :: * -> *) a b.
(HasAxisLabel f a b, Functor f) =>
LensLike' f a (TextFunction b (V a) (N a))
axisLabelTextFunction) TextAlignment n
txtAlign String
txt
                      # moveTo p'
                      # applyStyle (a ^. axisLabelStyle)
      where
        p' :: Point v n
p' = Point v n
p Point v n -> (Point v n -> Point v n) -> Point v n
forall a b. a -> (a -> b) -> b
& E v -> Lens' (Point v n) n
forall (v :: * -> *) x. E v -> Lens' (Point v x) x
ep E v
e  ((n -> Identity n) -> Point v n -> Identity (Point v n))
-> n -> Point v n -> Point v n
forall s t a b. ASetter s t a b -> b -> s -> t
.~ n
x
               Point v n -> (Point v n -> Point v n) -> Point v n
forall a b. a -> (a -> b) -> b
& E v -> Lens' (Point v n) n
forall (v :: * -> *) x. E v -> Lens' (Point v x) x
ep E v
eO ((n -> Identity n) -> Point v n -> Identity (Point v n))
-> n -> Point v n -> Point v n
forall s t a b. ASetter s t a b -> b -> s -> t
.~ n
y0
               
               Point v n -> (Point v n -> Point v n) -> Point v n
forall a b. a -> (a -> b) -> b
& Point v n -> Point v n
coscale
               Point v n -> (Point v n -> Point v n) -> Point v n
forall a b. a -> (a -> b) -> b
& Transformation v n -> Point v n -> Point v n
forall (v :: * -> *) n.
(Additive v, Num n) =>
Transformation v n -> Point v n -> Point v n
papply Transformation v n
T2 n
t
               Point v n -> (Point v n -> Point v n) -> Point v n
forall a b. a -> (a -> b) -> b
& E v -> Lens' (Point v n) n
forall (v :: * -> *) x. E v -> Lens' (Point v x) x
ep E v
eO ((n -> Identity n) -> Point v n -> Identity (Point v n))
-> n -> Point v n -> Point v n
forall a s t. Num a => ASetter s t a a -> a -> s -> t
+~ n -> n
negate' n
labelGap
        labelGap :: n
labelGap = SingleAxis b v n
a SingleAxis b v n -> Getting n (SingleAxis b v n) n -> n
forall s a. s -> Getting a s a -> a
^. Getting n (SingleAxis b v n) n
LensLike' (Const n) (SingleAxis b v n) (N (SingleAxis b v n))
forall (f :: * -> *) a b.
(HasAxisLabel f a b, Functor f) =>
LensLike' f a (N a)
axisLabelGap
        txt :: String
txt      = SingleAxis b v n
a SingleAxis b v n
-> Getting String (SingleAxis b v n) String -> String
forall s a. s -> Getting a s a -> a
^. Getting String (SingleAxis b v n) String
forall (f :: * -> *) a b.
(HasAxisLabel f a b, Functor f) =>
LensLike' f a String
axisLabelText
        x :: n
x = case SingleAxis b v n
a SingleAxis b v n
-> Getting AxisLabelPosition (SingleAxis b v n) AxisLabelPosition
-> AxisLabelPosition
forall s a. s -> Getting a s a -> a
^. Getting AxisLabelPosition (SingleAxis b v n) AxisLabelPosition
forall (f :: * -> *) a b.
(HasAxisLabel f a b, Functor f) =>
LensLike' f a AxisLabelPosition
axisLabelPosition of
              AxisLabelPosition
MiddleAxisLabel -> (n
x0 n -> n -> n
forall a. Num a => a -> a -> a
+ n
x1) n -> n -> n
forall a. Fractional a => a -> a -> a
/ n
2
              AxisLabelPosition
LowerAxisLabel  -> n
x0
              AxisLabelPosition
UpperAxisLabel  -> n
x1
        
    
    tickLabels :: QDiagram b V2 n Any
tickLabels
      | LabelPosition
lp LabelPosition -> LabelPosition -> Bool
forall a. Eq a => a -> a -> Bool
== LabelPosition
NoLabels Bool -> Bool -> Bool
|| SingleAxis b v n
a SingleAxis b v n -> Getting Bool (SingleAxis b v n) Bool -> Bool
forall s a. s -> Getting a s a -> a
^. LensLike'
  (Const Bool)
  (SingleAxis b v n)
  (TickLabels b (V (SingleAxis b v n)) (N (SingleAxis b v n)))
(TickLabels b V2 n -> Const Bool (TickLabels b V2 n))
-> SingleAxis b v n -> Const Bool (SingleAxis b v n)
forall (f :: * -> *) a b.
HasTickLabels f a b =>
LensLike' f a (TickLabels b (V a) (N a))
tickLabel ((TickLabels b V2 n -> Const Bool (TickLabels b V2 n))
 -> SingleAxis b v n -> Const Bool (SingleAxis b v n))
-> ((Bool -> Const Bool Bool)
    -> TickLabels b V2 n -> Const Bool (TickLabels b V2 n))
-> Getting Bool (SingleAxis b v n) Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Bool -> Const Bool Bool)
-> TickLabels b V2 n -> Const Bool (TickLabels b V2 n)
forall a. HasVisibility a => Lens' a Bool
Lens' (TickLabels b V2 n) Bool
hidden = QDiagram b V2 n Any
forall a. Monoid a => a
mempty
      | Bool
otherwise = (n -> QDiagram b V2 n Any) -> [n] -> QDiagram b V2 n Any
forall m a. Monoid m => (a -> m) -> [a] -> m
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
foldMap n -> QDiagram b V2 n Any
drawLabels (((AxisPos, n) -> n) -> [(AxisPos, n)] -> [n]
forall a b. (a -> b) -> [a] -> [b]
map (AxisPos, n) -> n
forall a b. (a, b) -> b
snd ([(AxisPos, n)] -> [n]) -> [(AxisPos, n)] -> [n]
forall a b. (a -> b) -> a -> b
$ Int -> [(AxisPos, n)] -> [(AxisPos, n)]
forall a. Int -> [a] -> [a]
take Int
1 [(AxisPos, n)]
ys)
                      # applyStyle (a ^. tickLabelStyle)
      where
        
        labelFun :: [n] -> (n, n) -> [(n, String)]
labelFun     = SingleAxis b v n
a SingleAxis b v n
-> Getting
     ([n] -> (n, n) -> [(n, String)])
     (SingleAxis b v n)
     ([n] -> (n, n) -> [(n, String)])
-> [n]
-> (n, n)
-> [(n, String)]
forall s a. s -> Getting a s a -> a
^. Getting
  ([n] -> (n, n) -> [(n, String)])
  (SingleAxis b v n)
  ([n] -> (n, n) -> [(n, String)])
LensLike'
  (Const ([n] -> (n, n) -> [(n, String)]))
  (SingleAxis b v n)
  ([N (SingleAxis b v n)]
   -> (N (SingleAxis b v n), N (SingleAxis b v n))
   -> [(N (SingleAxis b v n), String)])
forall (f :: * -> *) a b.
(HasTickLabels f a b, Functor f) =>
LensLike' f a ([N a] -> (N a, N a) -> [(N a, String)])
tickLabelFunction
        drawLabels :: n -> QDiagram b V2 n Any
drawLabels n
y = ((n, String) -> QDiagram b V2 n Any)
-> [(n, String)] -> QDiagram b V2 n Any
forall m a. Monoid m => (a -> m) -> [a] -> m
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
foldMap (n, String) -> QDiagram b V2 n Any
f ([n] -> (n, n) -> [(n, String)]
labelFun ((n -> Bool) -> [n] -> [n]
forall a. (a -> Bool) -> [a] -> [a]
filter n -> Bool
inRange [n]
majorTickXs) (n, n)
b)
          where
            f :: (n, String) -> QDiagram b V2 n Any
f (n
x, String
l) = QDiagram b V2 n Any -> Point v n -> QDiagram b V2 n Any
forall (v :: * -> *) n t.
(InSpace v n t, HasOrigin t) =>
t -> Point v n -> t
place QDiagram b V2 n Any
dia Point v n
p'
              where
                dia :: QDiagram b V2 n Any
dia = Getting
  (TextAlignment n -> String -> QDiagram b V2 n Any)
  (SingleAxis b V2 n)
  (TextAlignment n -> String -> QDiagram b V2 n Any)
-> SingleAxis b V2 n
-> TextAlignment n
-> String
-> QDiagram b V2 n Any
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting
  (TextAlignment n -> String -> QDiagram b V2 n Any)
  (SingleAxis b V2 n)
  (TextAlignment n -> String -> QDiagram b V2 n Any)
LensLike'
  (Const (TextAlignment n -> String -> QDiagram b V2 n Any))
  (SingleAxis b V2 n)
  (TextFunction b (V (SingleAxis b V2 n)) (N (SingleAxis b V2 n)))
forall (f :: * -> *) a b.
(HasTickLabels f a b, Functor f) =>
LensLike' f a (TextFunction b (V a) (N a))
tickLabelTextFunction SingleAxis b v n
a TextAlignment n
txtAlign String
l
                p' :: Point v n
p' = Point v n
p Point v n -> (Point v n -> Point v n) -> Point v n
forall a b. a -> (a -> b) -> b
& E v -> Lens' (Point v n) n
forall (v :: * -> *) x. E v -> Lens' (Point v x) x
ep E v
e  ((n -> Identity n) -> Point v n -> Identity (Point v n))
-> n -> Point v n -> Point v n
forall s t a b. ASetter s t a b -> b -> s -> t
.~ n
x
                       Point v n -> (Point v n -> Point v n) -> Point v n
forall a b. a -> (a -> b) -> b
& E v -> Lens' (Point v n) n
forall (v :: * -> *) x. E v -> Lens' (Point v x) x
ep E v
eO ((n -> Identity n) -> Point v n -> Identity (Point v n))
-> n -> Point v n -> Point v n
forall s t a b. ASetter s t a b -> b -> s -> t
.~ n
y
                       
                       Point v n -> (Point v n -> Point v n) -> Point v n
forall a b. a -> (a -> b) -> b
& Point v n -> Point v n
coscale
                       Point v n -> (Point v n -> Point v n) -> Point v n
forall a b. a -> (a -> b) -> b
& Transformation v n -> Point v n -> Point v n
forall (v :: * -> *) n.
(Additive v, Num n) =>
Transformation v n -> Point v n -> Point v n
papply Transformation v n
T2 n
t
                       Point v n -> (Point v n -> Point v n) -> Point v n
forall a b. a -> (a -> b) -> b
& E v -> Lens' (Point v n) n
forall (v :: * -> *) x. E v -> Lens' (Point v x) x
ep E v
eO ((n -> Identity n) -> Point v n -> Identity (Point v n))
-> n -> Point v n -> Point v n
forall a s t. Num a => ASetter s t a a -> a -> s -> t
+~ n -> n
negate' (SingleAxis b v n
a SingleAxis b v n -> Getting n (SingleAxis b v n) n -> n
forall s a. s -> Getting a s a -> a
^. Getting n (SingleAxis b v n) n
LensLike' (Const n) (SingleAxis b v n) (N (SingleAxis b v n))
forall (f :: * -> *) a b.
(HasTickLabels f a b, Functor f) =>
LensLike' f a (N a)
tickLabelGap)
    
    grid :: QDiagram b V2 n Any
grid = QDiagram b V2 n Any
majorLines QDiagram b V2 n Any -> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall a. Semigroup a => a -> a -> a
<> QDiagram b V2 n Any
minorLines
      where
        majorLines :: QDiagram b V2 n Any
majorLines
          | SingleAxis b v n
a SingleAxis b v n -> Getting Bool (SingleAxis b v n) Bool -> Bool
forall s a. s -> Getting a s a -> a
^. LensLike'
  (Const Bool)
  (SingleAxis b v n)
  (MajorGridLines (V (SingleAxis b v n)) (N (SingleAxis b v n)))
(MajorGridLines V2 n -> Const Bool (MajorGridLines V2 n))
-> SingleAxis b v n -> Const Bool (SingleAxis b v n)
forall (f :: * -> *) a.
HasMajorGridLines f a =>
LensLike' f a (MajorGridLines (V a) (N a))
majorGridLines ((MajorGridLines V2 n -> Const Bool (MajorGridLines V2 n))
 -> SingleAxis b v n -> Const Bool (SingleAxis b v n))
-> ((Bool -> Const Bool Bool)
    -> MajorGridLines V2 n -> Const Bool (MajorGridLines V2 n))
-> Getting Bool (SingleAxis b v n) Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Bool -> Const Bool Bool)
-> MajorGridLines V2 n -> Const Bool (MajorGridLines V2 n)
forall a. HasVisibility a => Lens' a Bool
Lens' (MajorGridLines V2 n) Bool
hidden = QDiagram b V2 n Any
forall a. Monoid a => a
mempty
          | Bool
otherwise = (n -> Path v n) -> [n] -> Path v n
forall m a. Monoid m => (a -> m) -> [a] -> m
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
foldMap n -> Path v n
mkGridLine [n]
majorGridXs'
                          # tStroke
                          # applyStyle (a ^. majorGridLinesStyle)
        majorGridXs :: [n]
majorGridXs  = Getting
  ([n] -> (n, n) -> [n]) (SingleAxis b V2 n) ([n] -> (n, n) -> [n])
-> SingleAxis b V2 n -> [n] -> (n, n) -> [n]
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting
  ([n] -> (n, n) -> [n]) (SingleAxis b V2 n) ([n] -> (n, n) -> [n])
LensLike'
  (Const ([n] -> (n, n) -> [n]))
  (SingleAxis b V2 n)
  (GridLineFunction (N (SingleAxis b V2 n)))
forall (f :: * -> *) a.
(HasMajorGridLines f a, Functor f) =>
LensLike' f a (GridLineFunction (N a))
majorGridLinesFunction SingleAxis b v n
a [n]
majorTickXs (n, n)
b
        majorGridXs' :: [n]
majorGridXs' = (n -> n) -> [n] -> [n]
forall a b. (a -> b) -> [a] -> [b]
map n -> n
coscaleNum ((n -> Bool) -> [n] -> [n]
forall a. (a -> Bool) -> [a] -> [a]
filter n -> Bool
inRange [n]
majorGridXs)
        
        minorLines :: QDiagram b V2 n Any
minorLines
          | SingleAxis b v n
a SingleAxis b v n -> Getting Bool (SingleAxis b v n) Bool -> Bool
forall s a. s -> Getting a s a -> a
^. LensLike'
  (Const Bool)
  (SingleAxis b v n)
  (MinorGridLines (V (SingleAxis b v n)) (N (SingleAxis b v n)))
(MinorGridLines V2 n -> Const Bool (MinorGridLines V2 n))
-> SingleAxis b v n -> Const Bool (SingleAxis b v n)
forall (f :: * -> *) a.
HasMinorGridLines f a =>
LensLike' f a (MinorGridLines (V a) (N a))
minorGridLines ((MinorGridLines V2 n -> Const Bool (MinorGridLines V2 n))
 -> SingleAxis b v n -> Const Bool (SingleAxis b v n))
-> ((Bool -> Const Bool Bool)
    -> MinorGridLines V2 n -> Const Bool (MinorGridLines V2 n))
-> Getting Bool (SingleAxis b v n) Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Bool -> Const Bool Bool)
-> MinorGridLines V2 n -> Const Bool (MinorGridLines V2 n)
forall a. HasVisibility a => Lens' a Bool
Lens' (MinorGridLines V2 n) Bool
hidden = QDiagram b V2 n Any
forall a. Monoid a => a
mempty
          | Bool
otherwise = (n -> Path v n) -> [n] -> Path v n
forall m a. Monoid m => (a -> m) -> [a] -> m
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
foldMap n -> Path v n
mkGridLine [n]
minorGridXs'
                       # tStroke
                       # applyStyle (a ^. minorGridLinesStyle)
        minorGridXs :: [n]
minorGridXs  = Getting
  ([n] -> (n, n) -> [n]) (SingleAxis b V2 n) ([n] -> (n, n) -> [n])
-> SingleAxis b V2 n -> [n] -> (n, n) -> [n]
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting
  ([n] -> (n, n) -> [n]) (SingleAxis b V2 n) ([n] -> (n, n) -> [n])
LensLike'
  (Const ([n] -> (n, n) -> [n]))
  (SingleAxis b V2 n)
  (GridLineFunction (N (SingleAxis b V2 n)))
forall (f :: * -> *) a.
(HasMinorGridLines f a, Functor f) =>
LensLike' f a (GridLineFunction (N a))
minorGridLinesFunction SingleAxis b v n
a [n]
minorTickXs (n, n)
b
        minorGridXs' :: [n]
minorGridXs' = (n -> n) -> [n] -> [n]
forall a b. (a -> b) -> [a] -> [b]
map n -> n
coscaleNum ((n -> Bool) -> [n] -> [n]
forall a. (a -> Bool) -> [a] -> [a]
filter n -> Bool
inRange [n]
minorGridXs)
        
        mkGridLine :: n -> Path v n
mkGridLine n
x = [Point v n] -> Path v n
forall (v :: * -> *) n.
(Metric v, OrderedField n) =>
[Point v n] -> Path v n
pathFromVertices [n -> Point v n
f n
y0, n -> Point v n
f n
y1]
          where f :: n -> Point v n
f n
y = ASetter (Point v n) (Point v n) (v n) (v n)
-> (v n -> v n) -> Point v n -> Point v n
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
over ASetter (Point v n) (Point v n) (v n) (v n)
forall (f1 :: * -> *) a (g :: * -> *) b (f2 :: * -> *).
Functor f2 =>
(f1 a -> f2 (g b)) -> Point f1 a -> f2 (Point g b)
lensP ((E v -> forall x. Lens' (v x) x
forall (t :: * -> *). E t -> forall x. Lens' (t x) x
el E v
e ((n -> Identity n) -> v n -> Identity (v n)) -> n -> v n -> v n
forall s t a b. ASetter s t a b -> b -> s -> t
.~ n
x) (v n -> v n) -> (v n -> v n) -> v n -> v n
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (E v -> forall x. Lens' (v x) x
forall (t :: * -> *). E t -> forall x. Lens' (t x) x
el E v
eO ((n -> Identity n) -> v n -> Identity (v n)) -> n -> v n -> v n
forall s t a b. ASetter s t a b -> b -> s -> t
.~ n
y)) Point v n
p
        
        
    
    ticks :: QDiagram b V2 n Any
ticks = ((AxisPos, n) -> QDiagram b V2 n Any)
-> [(AxisPos, n)] -> QDiagram b V2 n Any
forall m a. Monoid m => (a -> m) -> [a] -> m
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
foldMap (AxisPos, n) -> QDiagram b V2 n Any
drawTicks [(AxisPos, n)]
ys
    drawTicks :: (AxisPos, n) -> QDiagram b V2 n Any
drawTicks (AxisPos
pos,n
y) = QDiagram b V2 n Any
maTicks QDiagram b V2 n Any -> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall a. Semigroup a => a -> a -> a
<> QDiagram b V2 n Any
miTicks
      where
        maTicks :: QDiagram b V2 n Any
maTicks
          | SingleAxis b v n
a SingleAxis b v n -> Getting Bool (SingleAxis b v n) Bool -> Bool
forall s a. s -> Getting a s a -> a
^. LensLike'
  (Const Bool)
  (SingleAxis b v n)
  (MajorTicks (V (SingleAxis b v n)) (N (SingleAxis b v n)))
(MajorTicks V2 n -> Const Bool (MajorTicks V2 n))
-> SingleAxis b v n -> Const Bool (SingleAxis b v n)
forall (f :: * -> *) a.
HasMajorTicks f a =>
LensLike' f a (MajorTicks (V a) (N a))
majorTicks ((MajorTicks V2 n -> Const Bool (MajorTicks V2 n))
 -> SingleAxis b v n -> Const Bool (SingleAxis b v n))
-> ((Bool -> Const Bool Bool)
    -> MajorTicks V2 n -> Const Bool (MajorTicks V2 n))
-> Getting Bool (SingleAxis b v n) Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Bool -> Const Bool Bool)
-> MajorTicks V2 n -> Const Bool (MajorTicks V2 n)
forall a. HasVisibility a => Lens' a Bool
Lens' (MajorTicks V2 n) Bool
hidden = QDiagram b V2 n Any
forall a. Monoid a => a
mempty
          | Bool
otherwise = (n -> Path v n) -> [n] -> Path v n
forall m a. Monoid m => (a -> m) -> [a] -> m
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
foldMap (Path v n -> n -> Path v n
positionTick Path v n
majorTick) [n]
majorTickXs'
                       # stroke
                       # applyStyle (a ^. majorTicksStyle)
        
        miTicks :: QDiagram b V2 n Any
miTicks
          | SingleAxis b v n
a SingleAxis b v n -> Getting Bool (SingleAxis b v n) Bool -> Bool
forall s a. s -> Getting a s a -> a
^. LensLike'
  (Const Bool)
  (SingleAxis b v n)
  (MinorTicks (V (SingleAxis b v n)) (N (SingleAxis b v n)))
(MinorTicks V2 n -> Const Bool (MinorTicks V2 n))
-> SingleAxis b v n -> Const Bool (SingleAxis b v n)
forall (f :: * -> *) a.
HasMinorTicks f a =>
LensLike' f a (MinorTicks (V a) (N a))
minorTicks ((MinorTicks V2 n -> Const Bool (MinorTicks V2 n))
 -> SingleAxis b v n -> Const Bool (SingleAxis b v n))
-> ((Bool -> Const Bool Bool)
    -> MinorTicks V2 n -> Const Bool (MinorTicks V2 n))
-> Getting Bool (SingleAxis b v n) Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Bool -> Const Bool Bool)
-> MinorTicks V2 n -> Const Bool (MinorTicks V2 n)
forall a. HasVisibility a => Lens' a Bool
Lens' (MinorTicks V2 n) Bool
hidden = QDiagram b V2 n Any
forall a. Monoid a => a
mempty
          | Bool
otherwise = (n -> Path v n) -> [n] -> Path v n
forall m a. Monoid m => (a -> m) -> [a] -> m
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
foldMap (Path v n -> n -> Path v n
positionTick Path v n
minorTick) [n]
minorTickXs'
                       # stroke
                       # applyStyle (a ^. minorTicksStyle)
        
        minorTick :: Path v n
minorTick = TicksAlignment -> n -> Path v n
someTick (SingleAxis b v n
a SingleAxis b v n
-> Getting TicksAlignment (SingleAxis b v n) TicksAlignment
-> TicksAlignment
forall s a. s -> Getting a s a -> a
^. Getting TicksAlignment (SingleAxis b v n) TicksAlignment
forall (f :: * -> *) a.
(HasMinorTicks f a, Functor f) =>
LensLike' f a TicksAlignment
minorTicksAlignment) (SingleAxis b v n
a SingleAxis b v n -> Getting n (SingleAxis b v n) n -> n
forall s a. s -> Getting a s a -> a
^. Getting n (SingleAxis b v n) n
LensLike' (Const n) (SingleAxis b v n) (N (SingleAxis b v n))
forall (f :: * -> *) a.
(HasMinorTicks f a, Functor f) =>
LensLike' f a (N a)
minorTicksLength)
        majorTick :: Path v n
majorTick = TicksAlignment -> n -> Path v n
someTick (SingleAxis b v n
a SingleAxis b v n
-> Getting TicksAlignment (SingleAxis b v n) TicksAlignment
-> TicksAlignment
forall s a. s -> Getting a s a -> a
^. Getting TicksAlignment (SingleAxis b v n) TicksAlignment
forall (f :: * -> *) a.
(HasMajorTicks f a, Functor f) =>
LensLike' f a TicksAlignment
majorTicksAlignment) (SingleAxis b v n
a SingleAxis b v n -> Getting n (SingleAxis b v n) n -> n
forall s a. s -> Getting a s a -> a
^. Getting n (SingleAxis b v n) n
LensLike' (Const n) (SingleAxis b v n) (N (SingleAxis b v n))
forall (f :: * -> *) a.
(HasMajorTicks f a, Functor f) =>
LensLike' f a (N a)
majorTicksLength)
        
        someTick :: TicksAlignment -> n -> Path v n
someTick TicksAlignment
tType n
d = [Point v n] -> Path v n
forall (v :: * -> *) n.
(Metric v, OrderedField n) =>
[Point v n] -> Path v n
pathFromVertices ([Point v n] -> Path v n) -> [Point v n] -> Path v n
forall a b. (a -> b) -> a -> b
$
          case TicksAlignment
tType  of
            TicksAlignment
AutoTick ->
              case AxisPos
pos of
                AxisPos
LowerAxis  -> [Point v n
forall (f :: * -> *) a. (Additive f, Num a) => Point f a
origin Point v n -> (Point v n -> Point v n) -> Point v n
forall a b. a -> (a -> b) -> b
& E v -> Lens' (Point v n) n
forall (v :: * -> *) x. E v -> Lens' (Point v x) x
ep E v
eO ((n -> Identity n) -> Point v n -> Identity (Point v n))
-> n -> Point v n -> Point v n
forall a s t. Num a => ASetter s t a a -> a -> s -> t
-~ n
d, Point v n
forall (f :: * -> *) a. (Additive f, Num a) => Point f a
origin]
                AxisPos
MiddleAxis -> [Point v n
forall (f :: * -> *) a. (Additive f, Num a) => Point f a
origin Point v n -> (Point v n -> Point v n) -> Point v n
forall a b. a -> (a -> b) -> b
& E v -> Lens' (Point v n) n
forall (v :: * -> *) x. E v -> Lens' (Point v x) x
ep E v
eO ((n -> Identity n) -> Point v n -> Identity (Point v n))
-> n -> Point v n -> Point v n
forall a s t. Num a => ASetter s t a a -> a -> s -> t
-~ n
d, Point v n
forall (f :: * -> *) a. (Additive f, Num a) => Point f a
origin Point v n -> (Point v n -> Point v n) -> Point v n
forall a b. a -> (a -> b) -> b
& E v -> Lens' (Point v n) n
forall (v :: * -> *) x. E v -> Lens' (Point v x) x
ep E v
eO ((n -> Identity n) -> Point v n -> Identity (Point v n))
-> n -> Point v n -> Point v n
forall a s t. Num a => ASetter s t a a -> a -> s -> t
+~ n
d]
                AxisPos
UpperAxis  -> [Point v n
forall (f :: * -> *) a. (Additive f, Num a) => Point f a
origin, Point v n
forall (f :: * -> *) a. (Additive f, Num a) => Point f a
origin Point v n -> (Point v n -> Point v n) -> Point v n
forall a b. a -> (a -> b) -> b
& E v -> Lens' (Point v n) n
forall (v :: * -> *) x. E v -> Lens' (Point v x) x
ep E v
eO ((n -> Identity n) -> Point v n -> Identity (Point v n))
-> n -> Point v n -> Point v n
forall a s t. Num a => ASetter s t a a -> a -> s -> t
+~ n
d]
            TickSpec (Rational -> n
forall a. Fractional a => Rational -> a
fromRational -> n
aa) (Rational -> n
forall a. Fractional a => Rational -> a
fromRational -> n
bb) ->
              case AxisPos
pos of
                AxisPos
UpperAxis -> [Point v n
forall (f :: * -> *) a. (Additive f, Num a) => Point f a
origin Point v n -> (Point v n -> Point v n) -> Point v n
forall a b. a -> (a -> b) -> b
& E v -> Lens' (Point v n) n
forall (v :: * -> *) x. E v -> Lens' (Point v x) x
ep E v
eO ((n -> Identity n) -> Point v n -> Identity (Point v n))
-> n -> Point v n -> Point v n
forall a s t. Num a => ASetter s t a a -> a -> s -> t
-~ n
dn -> n -> n
forall a. Num a => a -> a -> a
*n
bb, Point v n
forall (f :: * -> *) a. (Additive f, Num a) => Point f a
origin Point v n -> (Point v n -> Point v n) -> Point v n
forall a b. a -> (a -> b) -> b
& E v -> Lens' (Point v n) n
forall (v :: * -> *) x. E v -> Lens' (Point v x) x
ep E v
eO ((n -> Identity n) -> Point v n -> Identity (Point v n))
-> n -> Point v n -> Point v n
forall a s t. Num a => ASetter s t a a -> a -> s -> t
+~ n
dn -> n -> n
forall a. Num a => a -> a -> a
*n
aa]
                AxisPos
_         -> [Point v n
forall (f :: * -> *) a. (Additive f, Num a) => Point f a
origin Point v n -> (Point v n -> Point v n) -> Point v n
forall a b. a -> (a -> b) -> b
& E v -> Lens' (Point v n) n
forall (v :: * -> *) x. E v -> Lens' (Point v x) x
ep E v
eO ((n -> Identity n) -> Point v n -> Identity (Point v n))
-> n -> Point v n -> Point v n
forall a s t. Num a => ASetter s t a a -> a -> s -> t
-~ n
dn -> n -> n
forall a. Num a => a -> a -> a
*n
aa, Point v n
forall (f :: * -> *) a. (Additive f, Num a) => Point f a
origin Point v n -> (Point v n -> Point v n) -> Point v n
forall a b. a -> (a -> b) -> b
& E v -> Lens' (Point v n) n
forall (v :: * -> *) x. E v -> Lens' (Point v x) x
ep E v
eO ((n -> Identity n) -> Point v n -> Identity (Point v n))
-> n -> Point v n -> Point v n
forall a s t. Num a => ASetter s t a a -> a -> s -> t
+~ n
dn -> n -> n
forall a. Num a => a -> a -> a
*n
bb]
            
        
        
        positionTick :: Path v n -> n -> Path v n
positionTick Path v n
tick n
x = Path v n -> Point v n -> Path v n
forall (v :: * -> *) n t.
(InSpace v n t, HasOrigin t) =>
t -> Point v n -> t
place Path v n
tick Point v n
p'
          where
            p' :: Point v n
p' = ASetter (Point v n) (Point v n) (v n) (v n)
-> (v n -> v n) -> Point v n -> Point v n
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
over ASetter (Point v n) (Point v n) (v n) (v n)
forall (f1 :: * -> *) a (g :: * -> *) b (f2 :: * -> *).
Functor f2 =>
(f1 a -> f2 (g b)) -> Point f1 a -> f2 (Point g b)
lensP ((E v -> forall x. Lens' (v x) x
forall (t :: * -> *). E t -> forall x. Lens' (t x) x
el E v
e ((n -> Identity n) -> v n -> Identity (v n)) -> n -> v n -> v n
forall s t a b. ASetter s t a b -> b -> s -> t
.~ n
x) (v n -> v n) -> (v n -> v n) -> v n -> v n
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (E v -> forall x. Lens' (v x) x
forall (t :: * -> *). E t -> forall x. Lens' (t x) x
el E v
eO ((n -> Identity n) -> v n -> Identity (v n)) -> n -> v n -> v n
forall s t a b. ASetter s t a b -> b -> s -> t
.~ n
y)) Point v n
p
                   # transform t
    
    line :: QDiagram b V2 n Any
line
      | SingleAxis b v n
a SingleAxis b v n -> Getting Bool (SingleAxis b v n) Bool -> Bool
forall s a. s -> Getting a s a -> a
^. LensLike'
  (Const Bool)
  (SingleAxis b v n)
  (AxisLine (V (SingleAxis b v n)) (N (SingleAxis b v n)))
(AxisLine V2 n -> Const Bool (AxisLine V2 n))
-> SingleAxis b v n -> Const Bool (SingleAxis b v n)
forall (f :: * -> *) a.
HasAxisLine f a =>
LensLike' f a (AxisLine (V a) (N a))
axisLine ((AxisLine V2 n -> Const Bool (AxisLine V2 n))
 -> SingleAxis b v n -> Const Bool (SingleAxis b v n))
-> ((Bool -> Const Bool Bool)
    -> AxisLine V2 n -> Const Bool (AxisLine V2 n))
-> Getting Bool (SingleAxis b v n) Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Bool -> Const Bool Bool)
-> AxisLine V2 n -> Const Bool (AxisLine V2 n)
forall a. HasVisibility a => Lens' a Bool
Lens' (AxisLine V2 n) Bool
hidden = QDiagram b V2 n Any
forall a. Monoid a => a
mempty
      | Bool
otherwise = (n -> Path v n) -> [n] -> Path v n
forall m a. Monoid m => (a -> m) -> [a] -> m
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
foldMap n -> Path v n
mkline (((AxisPos, n) -> n) -> [(AxisPos, n)] -> [n]
forall a b. (a -> b) -> [a] -> [b]
map (AxisPos, n) -> n
forall a b. (a, b) -> b
snd [(AxisPos, n)]
ys) 
             # transform t
             # stroke
             # lineCap LineCapSquare
             # applyStyle (a^.axisLineStyle)
      where
        
        mkline :: n -> Path v n
mkline n
y = [Point v n] -> Path v n
forall (v :: * -> *) n.
(Metric v, OrderedField n) =>
[Point v n] -> Path v n
pathFromVertices
         ([Point v n] -> Path v n) -> [Point v n] -> Path v n
forall a b. (a -> b) -> a -> b
$ (n -> Point v n) -> [n] -> [Point v n]
forall a b. (a -> b) -> [a] -> [b]
map (\n
x -> ASetter (Point v n) (Point v n) (v n) (v n)
-> (v n -> v n) -> Point v n -> Point v n
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
over ASetter (Point v n) (Point v n) (v n) (v n)
forall (f1 :: * -> *) a (g :: * -> *) b (f2 :: * -> *).
Functor f2 =>
(f1 a -> f2 (g b)) -> Point f1 a -> f2 (Point g b)
lensP ((E v -> forall x. Lens' (v x) x
forall (t :: * -> *). E t -> forall x. Lens' (t x) x
el E v
e ((n -> Identity n) -> v n -> Identity (v n)) -> n -> v n -> v n
forall s t a b. ASetter s t a b -> b -> s -> t
.~ n
x) (v n -> v n) -> (v n -> v n) -> v n -> v n
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (E v -> forall x. Lens' (v x) x
forall (t :: * -> *). E t -> forall x. Lens' (t x) x
el E v
eO ((n -> Identity n) -> v n -> Identity (v n)) -> n -> v n -> v n
forall s t a b. ASetter s t a b -> b -> s -> t
.~ n
y)) Point v n
p) [n
x0, n
x1] :: Path v n
    
    b :: (n, n)
b@(n
x0,n
x1)  = v (n, n)
bs v (n, n) -> Getting (n, n) (v (n, n)) (n, n) -> (n, n)
forall s a. s -> Getting a s a -> a
^. E v -> forall x. Lens' (v x) x
forall (t :: * -> *). E t -> forall x. Lens' (t x) x
el E v
e :: (n, n) 
    coscale :: Point v n -> Point v n
coscale = E v -> Lens' (Point v n) n
forall (v :: * -> *) x. E v -> Lens' (Point v x) x
ep E v
e ((n -> Identity n) -> Point v n -> Identity (Point v n))
-> (n -> n) -> Point v n -> Point v n
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ n -> n
coscaleNum
    coscaleNum :: n -> n
coscaleNum = (n, n) -> LogScale -> n -> n
forall n. Floating n => (n, n) -> LogScale -> n -> n
scaleNum (v (n, n)
bs v (n, n) -> Getting (n, n) (v (n, n)) (n, n) -> (n, n)
forall s a. s -> Getting a s a -> a
^. E v -> forall x. Lens' (v x) x
forall (t :: * -> *). E t -> forall x. Lens' (t x) x
el E v
e) (v LogScale
ls v LogScale -> Getting LogScale (v LogScale) LogScale -> LogScale
forall s a. s -> Getting a s a -> a
^. E v -> forall x. Lens' (v x) x
forall (t :: * -> *). E t -> forall x. Lens' (t x) x
el E v
e)
    yb :: (n, n)
yb@(n
y0,n
y1) = v (n, n)
bs v (n, n) -> Getting (n, n) (v (n, n)) (n, n) -> (n, n)
forall s a. s -> Getting a s a -> a
^. E v -> forall x. Lens' (v x) x
forall (t :: * -> *). E t -> forall x. Lens' (t x) x
el E v
eO Getting (n, n) (v (n, n)) (n, n)
-> (((n, n) -> Const (n, n) (n, n))
    -> (n, n) -> Const (n, n) (n, n))
-> Getting (n, n) (v (n, n)) (n, n)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. if LabelPosition
lp LabelPosition -> LabelPosition -> Bool
forall a. Eq a => a -> a -> Bool
== LabelPosition
UpperLabels
                                 then ((n, n) -> Const (n, n) (n, n)) -> (n, n) -> Const (n, n) (n, n)
forall (p :: * -> * -> *) a b c d.
Swap p =>
Iso (p a b) (p c d) (p b a) (p d c)
Iso (n, n) (n, n) (n, n) (n, n)
swapped
                                 else ((n, n) -> Const (n, n) (n, n)) -> (n, n) -> Const (n, n) (n, n)
forall a. a -> a
id
    inRange :: n -> Bool
inRange n
x = n
x n -> n -> Bool
forall a. Ord a => a -> a -> Bool
>= n
x0 Bool -> Bool -> Bool
&& n
x n -> n -> Bool
forall a. Ord a => a -> a -> Bool
<= n
x1
    
    majorTickXs :: [n]
majorTickXs  = [n] -> [n]
forall a. Ord a => [a] -> [a]
sort ([n] -> [n]) -> [n] -> [n]
forall a b. (a -> b) -> a -> b
$ Getting ((n, n) -> [n]) (SingleAxis b V2 n) ((n, n) -> [n])
-> SingleAxis b V2 n -> (n, n) -> [n]
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting ((n, n) -> [n]) (SingleAxis b V2 n) ((n, n) -> [n])
LensLike'
  (Const ((n, n) -> [n]))
  (SingleAxis b V2 n)
  ((N (SingleAxis b V2 n), N (SingleAxis b V2 n))
   -> [N (SingleAxis b V2 n)])
forall (f :: * -> *) a.
(HasMajorTicks f a, Functor f) =>
LensLike' f a ((N a, N a) -> [N a])
majorTicksFunction SingleAxis b v n
a (n, n)
b
    majorTickXs' :: [n]
majorTickXs' = (n -> n) -> [n] -> [n]
forall a b. (a -> b) -> [a] -> [b]
map n -> n
coscaleNum ((n -> Bool) -> [n] -> [n]
forall a. (a -> Bool) -> [a] -> [a]
filter n -> Bool
inRange [n]
majorTickXs)
    minorTickXs :: [n]
minorTickXs  = [n] -> [n]
forall a. Ord a => [a] -> [a]
sort ([n] -> [n]) -> [n] -> [n]
forall a b. (a -> b) -> a -> b
$ Getting
  ([n] -> (n, n) -> [n]) (SingleAxis b V2 n) ([n] -> (n, n) -> [n])
-> SingleAxis b V2 n -> [n] -> (n, n) -> [n]
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting
  ([n] -> (n, n) -> [n]) (SingleAxis b V2 n) ([n] -> (n, n) -> [n])
LensLike'
  (Const ([n] -> (n, n) -> [n]))
  (SingleAxis b V2 n)
  (GridLineFunction (N (SingleAxis b V2 n)))
forall (f :: * -> *) a.
(HasMinorTicks f a, Functor f) =>
LensLike' f a ([N a] -> (N a, N a) -> [N a])
minorTicksFunction SingleAxis b v n
a [n]
majorTickXs (n, n)
b
    minorTickXs' :: [n]
minorTickXs' = (n -> n) -> [n] -> [n]
forall a b. (a -> b) -> [a] -> [b]
map n -> n
coscaleNum ((n -> Bool) -> [n] -> [n]
forall a. (a -> Bool) -> [a] -> [a]
filter n -> Bool
inRange [n]
minorTickXs)
    
    ys :: [(AxisPos, n)]
ys       = (n, n) -> AxisLineType -> [(AxisPos, n)]
forall n.
(Num n, Ord n) =>
(n, n) -> AxisLineType -> [(AxisPos, n)]
getAxisLinePos (n, n)
yb AxisLineType
lineType
    lineType :: AxisLineType
lineType = SingleAxis b v n
a SingleAxis b v n
-> Getting AxisLineType (SingleAxis b v n) AxisLineType
-> AxisLineType
forall s a. s -> Getting a s a -> a
^. Getting AxisLineType (SingleAxis b v n) AxisLineType
forall (f :: * -> *) a.
(HasAxisLine f a, Functor f) =>
LensLike' f a AxisLineType
axisLineType
    txtAlign :: TextAlignment n
txtAlign =
      case LabelPosition
lp of
         LabelPosition
LowerLabels -> n -> n -> TextAlignment n
forall n. n -> n -> TextAlignment n
BoxAlignedText n
0.5 n
1
         LabelPosition
LeftLabels  -> n -> n -> TextAlignment n
forall n. n -> n -> TextAlignment n
BoxAlignedText n
1   n
0.5
         LabelPosition
RightLabels -> n -> n -> TextAlignment n
forall n. n -> n -> TextAlignment n
BoxAlignedText n
0   n
0.5
         LabelPosition
UpperLabels -> n -> n -> TextAlignment n
forall n. n -> n -> TextAlignment n
BoxAlignedText n
1   n
0
         LabelPosition
_           -> String -> TextAlignment n
forall a. HasCallStack => String -> a
error String
"No labels" 
    
    
    negate' :: n -> n
negate' = if LabelPosition
lp LabelPosition -> LabelPosition -> Bool
forall a. Eq a => a -> a -> Bool
== LabelPosition
UpperLabels Bool -> Bool -> Bool
|| LabelPosition
lp LabelPosition -> LabelPosition -> Bool
forall a. Eq a => a -> a -> Bool
== LabelPosition
RightLabels
                then n -> n
forall a. a -> a
id
                else n -> n
forall a. Num a => a -> a
negate
getAxisLinePos :: (Num n, Ord n) => (n, n) -> AxisLineType -> [(AxisPos, n)]
getAxisLinePos :: forall n.
(Num n, Ord n) =>
(n, n) -> AxisLineType -> [(AxisPos, n)]
getAxisLinePos (n
a,n
b) AxisLineType
aType = case AxisLineType
aType of
  AxisLineType
BoxAxisLine    -> [(AxisPos
LowerAxis, n
a), (AxisPos
UpperAxis, n
b)]
  AxisLineType
LeftAxisLine   -> [(AxisPos
LowerAxis, n
a)]
  AxisLineType
MiddleAxisLine -> [(,) AxisPos
MiddleAxis (n -> (AxisPos, n)) -> n -> (AxisPos, n)
forall a b. (a -> b) -> a -> b
$
                     if | n
a n -> n -> Bool
forall a. Ord a => a -> a -> Bool
> n
0     -> n
a
                        | n
b n -> n -> Bool
forall a. Ord a => a -> a -> Bool
< n
0     -> n
b
                        | Bool
otherwise -> n
0]
  AxisLineType
RightAxisLine  -> [(AxisPos
UpperAxis, n
b)]
  AxisLineType
NoAxisLine     -> []
data AxisPos = LowerAxis | MiddleAxis | UpperAxis
ep :: E v -> Lens' (Point v x) x
ep :: forall (v :: * -> *) x. E v -> Lens' (Point v x) x
ep (E forall x. Lens' (v x) x
l) = (v x -> f (v x)) -> Point v x -> f (Point v x)
forall (f1 :: * -> *) a (g :: * -> *) b (f2 :: * -> *).
Functor f2 =>
(f1 a -> f2 (g b)) -> Point f1 a -> f2 (Point g b)
lensP ((v x -> f (v x)) -> Point v x -> f (Point v x))
-> ((x -> f x) -> v x -> f (v x))
-> (x -> f x)
-> Point v x
-> f (Point v x)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (x -> f x) -> v x -> f (v x)
forall x. Lens' (v x) x
l
{-# INLINE ep #-}
instance (TypeableFloat n, Renderable (Path V2 n) b)
    => RenderAxis b Polar n where
  renderAxis :: Axis b Polar n -> QDiagram b (BaseSpace Polar) n Any
renderAxis = Axis b Polar n -> QDiagram b V2 n Any
Axis b Polar n -> QDiagram b (BaseSpace Polar) n Any
forall n b.
(TypeableFloat n, Renderable (Path V2 n) b) =>
Axis b Polar n -> QDiagram b V2 n Any
renderPolarAxis
boundingRadiusR :: (InSpace V2 n a, Enveloped a) => Int -> a -> (n, n)
boundingRadiusR :: forall n a. (InSpace V2 n a, Enveloped a) => Int -> a -> (n, n)
boundingRadiusR (Int -> Int -> Int
forall a. Ord a => a -> a -> a
max Int
3 -> Int
n) a
e =
  case Envelope V2 n -> Maybe (V2 n -> n)
forall (v :: * -> *) n. Envelope v n -> Maybe (v n -> n)
appEnvelope (a -> Envelope (V a) (N a)
forall a. Enveloped a => a -> Envelope (V a) (N a)
getEnvelope a
e) of
    Maybe (V2 n -> n)
Nothing -> (n
0,n
0)
    Just V2 n -> n
f  ->
      let thetas :: [Angle n]
thetas = (n -> Angle n) -> [n] -> [Angle n]
forall a b. (a -> b) -> [a] -> [b]
map (n -> AReview (Angle n) n -> Angle n
forall b a. b -> AReview a b -> a
@@AReview (Angle n) n
forall n (p :: * -> * -> *) (f :: * -> *).
(Profunctor p, Functor f) =>
p n (f n) -> p (Angle n) (f (Angle n))
rad) ([n] -> [Angle n]) -> [n] -> [Angle n]
forall a b. (a -> b) -> a -> b
$ n -> n -> Int -> [n]
forall n. Fractional n => n -> n -> Int -> [n]
enumFromToN n
0 n
forall a. Floating a => a
tau Int
n
          vs :: [V2 n]
vs     = (Angle n -> V2 n) -> [Angle n] -> [V2 n]
forall a b. (a -> b) -> [a] -> [b]
map Angle n -> V2 n
forall n. Floating n => Angle n -> V2 n
angleV [Angle n]
thetas
          
          
          lowerBound :: n
lowerBound = (V2 n -> n -> n) -> n -> [V2 n] -> n
forall a b. (a -> b -> b) -> b -> [a] -> b
forall (t :: * -> *) a b.
Foldable t =>
(a -> b -> b) -> b -> t a -> b
F.foldr (\V2 n
v n
r -> n -> n -> n
forall a. Ord a => a -> a -> a
max (V2 n -> n
f V2 n
v) n
r) n
0 [V2 n]
vs
          
          
          
          
          
          
          
          upperBound :: n
upperBound = n
lowerBound n -> n -> n
forall a. Fractional a => a -> a -> a
/ n -> n
forall a. Floating a => a -> a
cos (n
forall a. Floating a => a
pi n -> n -> n
forall a. Fractional a => a -> a -> a
/ Int -> n
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
n)
      in  (n
lowerBound, n
upperBound)
renderPolarAxis
  :: (TypeableFloat n, Renderable (Path V2 n) b)
  => Axis b Polar n -> QDiagram b V2 n Any
renderPolarAxis :: forall n b.
(TypeableFloat n, Renderable (Path V2 n) b) =>
Axis b Polar n -> QDiagram b V2 n Any
renderPolarAxis Axis b Polar n
a = n -> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall (v :: * -> *) n m b.
(Metric v, OrderedField n, Monoid' m) =>
n -> QDiagram b v n m -> QDiagram b v n m
frame n
15
               (QDiagram b V2 n Any -> QDiagram b V2 n Any)
-> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall a b. (a -> b) -> a -> b
$ QDiagram b V2 n Any
leg
              
              
              QDiagram b V2 n Any -> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall a. Semigroup a => a -> a -> a
<> QDiagram b V2 n Any
plots
              QDiagram b V2 n Any -> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall a. Semigroup a => a -> a -> a
<> QDiagram b V2 n Any
theAxis
  where
    r :: n
r = (n, n) -> n
forall a b. (a, b) -> b
snd ((n, n) -> n) -> (n, n) -> n
forall a b. (a -> b) -> a -> b
$ Int -> [StyledPlot b V2 n] -> (n, n)
forall n a. (InSpace V2 n a, Enveloped a) => Int -> a -> (n, n)
boundingRadiusR Int
30 [StyledPlot b V2 n]
styledPlots
    spec :: AxisSpec V2 n
spec  = V2 (n, n)
-> Transformation V2 n -> V2 LogScale -> ColourMap -> AxisSpec V2 n
forall (v :: * -> *) n.
v (n, n)
-> Transformation v n -> v LogScale -> ColourMap -> AxisSpec v n
AxisSpec V2 (n, n)
xs Transformation V2 n
t (LogScale -> V2 LogScale
forall a. a -> V2 a
forall (f :: * -> *) a. Applicative f => a -> f a
pure LogScale
LinearAxis) (Axis b Polar n
a Axis b Polar n
-> Getting ColourMap (Axis b Polar n) ColourMap -> ColourMap
forall s a. s -> Getting a s a -> a
^. Getting ColourMap (Axis b Polar n) ColourMap
forall a b. HasAxisStyle a b => Lens' a ColourMap
Lens' (Axis b Polar n) ColourMap
axisColourMap)
    plots :: QDiagram b V2 n Any
plots = (StyledPlot b V2 n -> QDiagram b V2 n Any)
-> [StyledPlot b V2 n] -> QDiagram b V2 n Any
forall m a. Monoid m => (a -> m) -> [a] -> m
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
F.foldMap (AxisSpec V2 n -> StyledPlot b V2 n -> QDiagram b V2 n Any
forall n b.
TypeableFloat n =>
AxisSpec V2 n -> StyledPlot b V2 n -> QDiagram b V2 n Any
renderStyledPlot AxisSpec V2 n
spec) [StyledPlot b V2 n]
styledPlots
    dataBB :: BoundingBox V2 n
dataBB = Point V2 n -> Point V2 n -> BoundingBox V2 n
forall (v :: * -> *) n.
(Additive v, Foldable v, Ord n) =>
Point v n -> Point v n -> BoundingBox v n
fromCorners (n -> n -> Point V2 n
forall n. n -> n -> P2 n
mkP2 (-n
r) (-n
r)) (n -> n -> Point V2 n
forall n. n -> n -> P2 n
mkP2 n
r n
r)
    (V2 (n, n)
xs, Transformation V2 n
tv, Transformation V2 n
t') = V2 (AxisScaling n)
-> BoundingBox V2 n
-> (V2 (n, n), Transformation V2 n, Transformation V2 n)
forall (v :: * -> *) n.
(HasLinearMap v, OrderedField n, Applicative v) =>
v (AxisScaling n)
-> BoundingBox v n
-> (v (n, n), Transformation v n, Transformation v n)
calculateScaling (Getting
  (V2 (AxisScaling n)) (Polar (AxisScaling n)) (V2 (AxisScaling n))
-> Polar (AxisScaling n) -> V2 (AxisScaling n)
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view (Unwrapped (Polar (AxisScaling n))
 -> Const (V2 (AxisScaling n)) (Unwrapped (Polar (AxisScaling n))))
-> Polar (AxisScaling n)
-> Const (V2 (AxisScaling n)) (Polar (AxisScaling n))
Getting
  (V2 (AxisScaling n)) (Polar (AxisScaling n)) (V2 (AxisScaling n))
forall s t. Rewrapping s t => Iso s t (Unwrapped s) (Unwrapped t)
Iso
  (Polar (AxisScaling n))
  (Polar (AxisScaling n))
  (Unwrapped (Polar (AxisScaling n)))
  (Unwrapped (Polar (AxisScaling n)))
_Wrapped (Polar (AxisScaling n) -> V2 (AxisScaling n))
-> Polar (AxisScaling n) -> V2 (AxisScaling n)
forall a b. (a -> b) -> a -> b
$ Axis b Polar n
aAxis b Polar n
-> Getting
     (Polar (AxisScaling n)) (Axis b Polar n) (Polar (AxisScaling n))
-> Polar (AxisScaling n)
forall s a. s -> Getting a s a -> a
^.(Polar (SingleAxis b V2 n)
 -> Const (Polar (AxisScaling n)) (Polar (SingleAxis b V2 n)))
-> Axis b Polar n -> Const (Polar (AxisScaling n)) (Axis b Polar n)
Lens
  (Axis b Polar n)
  (Axis b Polar n)
  (Polar (SingleAxis b V2 n))
  (Polar (SingleAxis b V2 n))
forall (v :: * -> *) (c :: * -> *) (c' :: * -> *) b n.
(v ~ BaseSpace c, v ~ BaseSpace c') =>
Lens
  (Axis b c n)
  (Axis b c' n)
  (c (SingleAxis b v n))
  (c' (SingleAxis b v n))
axes((Polar (SingleAxis b V2 n)
  -> Const (Polar (AxisScaling n)) (Polar (SingleAxis b V2 n)))
 -> Axis b Polar n
 -> Const (Polar (AxisScaling n)) (Axis b Polar n))
-> ((Polar (AxisScaling n)
     -> Const (Polar (AxisScaling n)) (Polar (AxisScaling n)))
    -> Polar (SingleAxis b V2 n)
    -> Const (Polar (AxisScaling n)) (Polar (SingleAxis b V2 n)))
-> Getting
     (Polar (AxisScaling n)) (Axis b Polar n) (Polar (AxisScaling n))
forall b c a. (b -> c) -> (a -> b) -> a -> c
.LensLike
  (Context (AxisScaling n) (AxisScaling n))
  (SingleAxis b V2 n)
  (SingleAxis b V2 n)
  (AxisScaling n)
  (AxisScaling n)
-> Lens
     (Polar (SingleAxis b V2 n))
     (Polar (SingleAxis b V2 n))
     (Polar (AxisScaling n))
     (Polar (AxisScaling n))
forall (f :: * -> *) a b s t.
Representable f =>
LensLike (Context a b) s t a b -> Lens (f s) (f t) (f a) (f b)
column LensLike
  (Context (AxisScaling n) (AxisScaling n))
  (SingleAxis b V2 n)
  (SingleAxis b V2 n)
  (AxisScaling n)
  (AxisScaling n)
LensLike'
  (Context (AxisScaling n) (AxisScaling n))
  (SingleAxis b V2 n)
  (AxisScaling (N (SingleAxis b V2 n)))
forall (f :: * -> *) a.
HasAxisScaling f a =>
LensLike' f a (AxisScaling (N a))
axisScaling) BoundingBox V2 n
dataBB
    t :: Transformation V2 n
t = Transformation V2 n
tv Transformation V2 n -> Transformation V2 n -> Transformation V2 n
forall a. Semigroup a => a -> a -> a
<> Transformation V2 n
t'
    
    theAxis :: QDiagram b V2 n Any
theAxis = AxisSpec V2 n -> Polar (SingleAxis b V2 n) -> QDiagram b V2 n Any
forall b n.
(Renderable (Path V2 n) b, TypeableFloat n) =>
AxisSpec V2 n -> Polar (SingleAxis b V2 n) -> QDiagram b V2 n Any
drawPolarAxis AxisSpec V2 n
spec (Axis b Polar n
a Axis b Polar n
-> Getting
     (Polar (SingleAxis b V2 n))
     (Axis b Polar n)
     (Polar (SingleAxis b V2 n))
-> Polar (SingleAxis b V2 n)
forall s a. s -> Getting a s a -> a
^. Getting
  (Polar (SingleAxis b V2 n))
  (Axis b Polar n)
  (Polar (SingleAxis b V2 n))
Lens
  (Axis b Polar n)
  (Axis b Polar n)
  (Polar (SingleAxis b V2 n))
  (Polar (SingleAxis b V2 n))
forall (v :: * -> *) (c :: * -> *) (c' :: * -> *) b n.
(v ~ BaseSpace c, v ~ BaseSpace c') =>
Lens
  (Axis b c n)
  (Axis b c' n)
  (c (SingleAxis b v n))
  (c' (SingleAxis b v n))
axes)
    
    bb :: BoundingBox V2 n
bb = Point V2 n -> Point V2 n -> BoundingBox V2 n
forall (v :: * -> *) n.
(Additive v, Foldable v, Ord n) =>
Point v n -> Point v n -> BoundingBox v n
fromCorners (V2 n -> Point V2 n
forall (f :: * -> *) a. f a -> Point f a
P (V2 n -> Point V2 n) -> (V2 n -> V2 n) -> V2 n -> Point V2 n
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Transformation V2 n -> V2 n -> V2 n
forall (v :: * -> *) n. Transformation v n -> v n -> v n
apply Transformation V2 n
t (V2 n -> Point V2 n) -> V2 n -> Point V2 n
forall a b. (a -> b) -> a -> b
$ ((n, n) -> n) -> V2 (n, n) -> V2 n
forall a b. (a -> b) -> V2 a -> V2 b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (n, n) -> n
forall a b. (a, b) -> a
fst V2 (n, n)
xs) (V2 n -> Point V2 n
forall (f :: * -> *) a. f a -> Point f a
P (V2 n -> Point V2 n) -> (V2 n -> V2 n) -> V2 n -> Point V2 n
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Transformation V2 n -> V2 n -> V2 n
forall (v :: * -> *) n. Transformation v n -> v n -> v n
apply Transformation V2 n
t (V2 n -> Point V2 n) -> V2 n -> Point V2 n
forall a b. (a -> b) -> a -> b
$ ((n, n) -> n) -> V2 (n, n) -> V2 n
forall a b. (a -> b) -> V2 a -> V2 b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (n, n) -> n
forall a b. (a, b) -> b
snd V2 (n, n)
xs)
    leg :: QDiagram b V2 n Any
leg = BoundingBox V2 n
-> [(QDiagram b V2 n Any, String)]
-> Legend b n
-> QDiagram b V2 n Any
forall n b.
(TypeableFloat n, Renderable (Path V2 n) b) =>
BoundingBox V2 n
-> [(QDiagram b V2 n Any, String)]
-> Legend b n
-> QDiagram b V2 n Any
drawLegend BoundingBox V2 n
bb ([StyledPlot b V2 n] -> [(QDiagram b V2 n Any, String)]
forall n b (v :: * -> *).
Ord n =>
[StyledPlot b v n] -> [(QDiagram b v n Any, String)]
styledPlotLegends [StyledPlot b V2 n]
styledPlots) (Axis b Polar n
a Axis b Polar n
-> Getting (Legend b n) (Axis b Polar n) (Legend b n) -> Legend b n
forall s a. s -> Getting a s a -> a
^. Getting (Legend b n) (Axis b Polar n) (Legend b n)
(Legend b (N (Axis b Polar n))
 -> Const (Legend b n) (Legend b (N (Axis b Polar n))))
-> Axis b Polar n -> Const (Legend b n) (Axis b Polar n)
forall a b. HasLegend a b => Lens' a (Legend b (N a))
Lens' (Axis b Polar n) (Legend b (N (Axis b Polar n)))
legend)
    
    styledPlots :: [StyledPlot b V2 n]
styledPlots = (StyledPlot b V2 n -> StyledPlot b V2 n)
-> [StyledPlot b V2 n] -> [StyledPlot b V2 n]
forall a b. (a -> b) -> [a] -> [b]
map (Endo (StyledPlot b V2 n) -> StyledPlot b V2 n -> StyledPlot b V2 n
forall a. Endo a -> a -> a
appEndo (Endo (StyledPlot b V2 n)
 -> StyledPlot b V2 n -> StyledPlot b V2 n)
-> Endo (StyledPlot b V2 n)
-> StyledPlot b V2 n
-> StyledPlot b V2 n
forall a b. (a -> b) -> a -> b
$ Axis b Polar n
a Axis b Polar n
-> Getting
     (Endo (StyledPlot b V2 n))
     (Axis b Polar n)
     (Endo (StyledPlot b V2 n))
-> Endo (StyledPlot b V2 n)
forall s a. s -> Getting a s a -> a
^. Getting
  (Endo (StyledPlot b V2 n))
  (Axis b Polar n)
  (Endo (StyledPlot b V2 n))
Lens' (Axis b Polar n) (Endo (StyledPlot b V2 n))
forall (c :: * -> *) (v :: * -> *) b n.
(BaseSpace c ~ v) =>
Lens' (Axis b c n) (Endo (StyledPlot b v n))
plotModifier)
                ([StyledPlot b V2 n] -> [StyledPlot b V2 n])
-> [StyledPlot b V2 n] -> [StyledPlot b V2 n]
forall a b. (a -> b) -> a -> b
$ (PlotStyle b V2 n -> DynamicPlot b V2 n -> StyledPlot b V2 n)
-> [PlotStyle b V2 n]
-> [DynamicPlot b V2 n]
-> [StyledPlot b V2 n]
forall a b c. (a -> b -> c) -> [a] -> [b] -> [c]
zipWith PlotStyle b V2 n -> DynamicPlot b V2 n -> StyledPlot b V2 n
forall b (v :: * -> *) n.
PlotStyle b v n -> DynamicPlot b v n -> StyledPlot b v n
styleDynamic (Axis b Polar n
a Axis b Polar n
-> Getting
     (Endo [PlotStyle b V2 n]) (Axis b Polar n) (PlotStyle b V2 n)
-> [PlotStyle b V2 n]
forall s a. s -> Getting (Endo [a]) s a -> [a]
^.. (PlotStyle b (V (Axis b Polar n)) (N (Axis b Polar n))
 -> Const
      (Endo [PlotStyle b V2 n])
      (PlotStyle b (V (Axis b Polar n)) (N (Axis b Polar n))))
-> Axis b Polar n
-> Const (Endo [PlotStyle b V2 n]) (Axis b Polar n)
Getting
  (Endo [PlotStyle b V2 n]) (Axis b Polar n) (PlotStyle b V2 n)
forall a b.
HasAxisStyle a b =>
IndexedTraversal' Int a (PlotStyle b (V a) (N a))
IndexedTraversal'
  Int
  (Axis b Polar n)
  (PlotStyle b (V (Axis b Polar n)) (N (Axis b Polar n)))
axisStyles) (Axis b Polar n
a Axis b Polar n
-> Getting
     [DynamicPlot b V2 n] (Axis b Polar n) [DynamicPlot b V2 n]
-> [DynamicPlot b V2 n]
forall s a. s -> Getting a s a -> a
^. Getting [DynamicPlot b V2 n] (Axis b Polar n) [DynamicPlot b V2 n]
Lens' (Axis b Polar n) [DynamicPlot b V2 n]
forall (c :: * -> *) (v :: * -> *) b n.
(BaseSpace c ~ v) =>
Lens' (Axis b c n) [DynamicPlot b v n]
axisPlots)
drawPolarAxis
  :: forall b n. (Renderable (Path V2 n) b, TypeableFloat n)
  => AxisSpec V2 n -> Polar (SingleAxis b V2 n) -> QDiagram b V2 n Any
drawPolarAxis :: forall b n.
(Renderable (Path V2 n) b, TypeableFloat n) =>
AxisSpec V2 n -> Polar (SingleAxis b V2 n) -> QDiagram b V2 n Any
drawPolarAxis AxisSpec V2 n
spec (Polar (V2 SingleAxis b V2 n
rA SingleAxis b V2 n
thetaA)) = AlphaColour Double -> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall n a.
(InSpace V2 n a, Floating n, Typeable n, HasStyle a) =>
AlphaColour Double -> a -> a
fcA AlphaColour Double
forall a. Num a => AlphaColour a
transparent (QDiagram b V2 n Any -> QDiagram b V2 n Any)
-> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall a b. (a -> b) -> a -> b
$ QDiagram b V2 n Any
rAx QDiagram b V2 n Any -> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall a. Semigroup a => a -> a -> a
<> QDiagram b V2 n Any
thetaAx where
  
  r :: n
r = AxisSpec V2 n
spec AxisSpec V2 n -> Getting n (AxisSpec V2 n) n -> n
forall s a. s -> Getting a s a -> a
^. (V2 (n, n) -> Const n (V2 (n, n)))
-> AxisSpec V2 n -> Const n (AxisSpec V2 n)
forall (v :: * -> *) n (f :: * -> *).
Functor f =>
(v (n, n) -> f (v (n, n))) -> AxisSpec v n -> f (AxisSpec v n)
specBounds ((V2 (n, n) -> Const n (V2 (n, n)))
 -> AxisSpec V2 n -> Const n (AxisSpec V2 n))
-> ((n -> Const n n) -> V2 (n, n) -> Const n (V2 (n, n)))
-> Getting n (AxisSpec V2 n) n
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((n, n) -> Const n (n, n)) -> V2 (n, n) -> Const n (V2 (n, n))
forall x. Lens' (V2 x) x
forall (t :: * -> *) a. R1 t => Lens' (t a) a
_x (((n, n) -> Const n (n, n)) -> V2 (n, n) -> Const n (V2 (n, n)))
-> ((n -> Const n n) -> (n, n) -> Const n (n, n))
-> (n -> Const n n)
-> V2 (n, n)
-> Const n (V2 (n, n))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (n -> Const n n) -> (n, n) -> Const n (n, n)
forall s t a b. Field2 s t a b => Lens s t a b
Lens (n, n) (n, n) n n
_2
  t :: Transformation V2 n
t = AxisSpec V2 n
spec AxisSpec V2 n
-> Getting
     (Transformation V2 n) (AxisSpec V2 n) (Transformation V2 n)
-> Transformation V2 n
forall s a. s -> Getting a s a -> a
^. Getting (Transformation V2 n) (AxisSpec V2 n) (Transformation V2 n)
forall (v :: * -> *) n (f :: * -> *).
Functor f =>
(Transformation v n -> f (Transformation v n))
-> AxisSpec v n -> f (AxisSpec v n)
specTrans
  s :: n
s = Transformation V2 n -> n
forall (v :: * -> *) n.
(Additive v, Traversable v, Floating n) =>
Transformation v n -> n
avgScale Transformation V2 n
t
  rInRange :: n -> Bool
rInRange n
x = n
x n -> n -> Bool
forall a. Ord a => a -> a -> Bool
>= n
0 Bool -> Bool -> Bool
&& n
x n -> n -> Bool
forall a. Ord a => a -> a -> Bool
<= n
rn -> n -> n
forall a. Num a => a -> a -> a
*n
1.000001
  thetaInRange :: a -> Bool
thetaInRange a
x = a
x a -> a -> Bool
forall a. Ord a => a -> a -> Bool
>= a
0 Bool -> Bool -> Bool
&& a
x a -> a -> Bool
forall a. Ord a => a -> a -> Bool
< a
forall a. Floating a => a
tau
  
  
  
  
  
  
  
  rAx :: QDiagram b V2 n Any
rAx
    | SingleAxis b V2 n
rA SingleAxis b V2 n -> Getting Bool (SingleAxis b V2 n) Bool -> Bool
forall s a. s -> Getting a s a -> a
^. Getting Bool (SingleAxis b V2 n) Bool
forall a. HasVisibility a => Lens' a Bool
Lens' (SingleAxis b V2 n) Bool
hidden = QDiagram b V2 n Any
forall a. Monoid a => a
mempty
    | Bool
otherwise = QDiagram b V2 n Any
rAxLine QDiagram b V2 n Any -> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall a. Semigroup a => a -> a -> a
<> QDiagram b V2 n Any
rAxLabel QDiagram b V2 n Any -> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall a. Semigroup a => a -> a -> a
<> QDiagram b V2 n Any
rAxTicks QDiagram b V2 n Any -> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall a. Semigroup a => a -> a -> a
<> QDiagram b V2 n Any
rAxTickLabels QDiagram b V2 n Any -> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall a. Semigroup a => a -> a -> a
<> QDiagram b V2 n Any
rAxGridLines
  rAxLine :: QDiagram b V2 n Any
rAxLine = QDiagram b V2 n Any
line QDiagram b V2 n Any
-> (QDiagram b V2 n Any -> QDiagram b V2 n Any)
-> QDiagram b V2 n Any
forall a b. a -> (a -> b) -> b
# Bool
-> (QDiagram b V2 n Any -> QDiagram b V2 n Any)
-> QDiagram b V2 n Any
-> QDiagram b V2 n Any
forall a. Bool -> (a -> a) -> a -> a
whenever (SingleAxis b V2 n
rA SingleAxis b V2 n -> Getting Bool (SingleAxis b V2 n) Bool -> Bool
forall s a. s -> Getting a s a -> a
^. LensLike'
  (Const Bool)
  (SingleAxis b V2 n)
  (AxisLine (V (SingleAxis b V2 n)) (N (SingleAxis b V2 n)))
(AxisLine V2 n -> Const Bool (AxisLine V2 n))
-> SingleAxis b V2 n -> Const Bool (SingleAxis b V2 n)
forall (f :: * -> *) a.
HasAxisLine f a =>
LensLike' f a (AxisLine (V a) (N a))
axisLine ((AxisLine V2 n -> Const Bool (AxisLine V2 n))
 -> SingleAxis b V2 n -> Const Bool (SingleAxis b V2 n))
-> ((Bool -> Const Bool Bool)
    -> AxisLine V2 n -> Const Bool (AxisLine V2 n))
-> Getting Bool (SingleAxis b V2 n) Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Bool -> Const Bool Bool)
-> AxisLine V2 n -> Const Bool (AxisLine V2 n)
forall a. HasVisibility a => Lens' a Bool
Lens' (AxisLine V2 n) Bool
hidden) QDiagram b V2 n Any -> QDiagram b V2 n Any
forall (v :: * -> *) n a m b.
(InSpace v n a, Monoid' m, Enveloped a, Traced a) =>
a -> QDiagram b v n m
phantom
    where
      
      
      line :: QDiagram b V2 n Any
line = (Point V2 n
forall (f :: * -> *) a. (Additive f, Num a) => Point f a
origin Point V2 n -> Point V2 n -> QDiagram b V2 n Any
forall t (v :: * -> *) n.
(V t ~ v, N t ~ n, TrailLike t) =>
Point v n -> Point v n -> t
~~ n -> n -> Point V2 n
forall n. n -> n -> P2 n
mkP2 n
r n
0) QDiagram b V2 n Any
-> (QDiagram b V2 n Any -> QDiagram b V2 n Any)
-> QDiagram b V2 n Any
forall a b. a -> (a -> b) -> b
# Style (V (QDiagram b V2 n Any)) (N (QDiagram b V2 n Any))
-> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall a. HasStyle a => Style (V a) (N a) -> a -> a
applyStyle (SingleAxis b V2 n
rASingleAxis b V2 n
-> Getting (Style V2 n) (SingleAxis b V2 n) (Style V2 n)
-> Style V2 n
forall s a. s -> Getting a s a -> a
^.LensLike'
  (Const (Style V2 n))
  (SingleAxis b V2 n)
  (Style (V (SingleAxis b V2 n)) (N (SingleAxis b V2 n)))
Getting (Style V2 n) (SingleAxis b V2 n) (Style V2 n)
forall (f :: * -> *) a.
(HasAxisLine f a, Functor f) =>
LensLike' f a (Style (V a) (N a))
axisLineStyle)
                                  # transform t
  
  rAxLabel :: QDiagram b V2 n Any
rAxLabel
    | String -> Bool
forall a. [a] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null String
rTxt Bool -> Bool -> Bool
|| SingleAxis b V2 n
rA SingleAxis b V2 n -> Getting Bool (SingleAxis b V2 n) Bool -> Bool
forall s a. s -> Getting a s a -> a
^. LensLike'
  (Const Bool)
  (SingleAxis b V2 n)
  (AxisLabel b (V (SingleAxis b V2 n)) (N (SingleAxis b V2 n)))
(AxisLabel b V2 n -> Const Bool (AxisLabel b V2 n))
-> SingleAxis b V2 n -> Const Bool (SingleAxis b V2 n)
forall (f :: * -> *) a b.
HasAxisLabel f a b =>
LensLike' f a (AxisLabel b (V a) (N a))
axisLabel ((AxisLabel b V2 n -> Const Bool (AxisLabel b V2 n))
 -> SingleAxis b V2 n -> Const Bool (SingleAxis b V2 n))
-> ((Bool -> Const Bool Bool)
    -> AxisLabel b V2 n -> Const Bool (AxisLabel b V2 n))
-> Getting Bool (SingleAxis b V2 n) Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Bool -> Const Bool Bool)
-> AxisLabel b V2 n -> Const Bool (AxisLabel b V2 n)
forall a. HasVisibility a => Lens' a Bool
Lens' (AxisLabel b V2 n) Bool
hidden = QDiagram b V2 n Any
forall a. Monoid a => a
mempty
    | Bool
otherwise = Getting
  (TextAlignment n -> String -> QDiagram b V2 n Any)
  (SingleAxis b V2 n)
  (TextAlignment n -> String -> QDiagram b V2 n Any)
-> SingleAxis b V2 n
-> TextAlignment n
-> String
-> QDiagram b V2 n Any
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting
  (TextAlignment n -> String -> QDiagram b V2 n Any)
  (SingleAxis b V2 n)
  (TextAlignment n -> String -> QDiagram b V2 n Any)
LensLike'
  (Const (TextAlignment n -> String -> QDiagram b V2 n Any))
  (SingleAxis b V2 n)
  (TextFunction b (V (SingleAxis b V2 n)) (N (SingleAxis b V2 n)))
forall (f :: * -> *) a b.
(HasAxisLabel f a b, Functor f) =>
LensLike' f a (TextFunction b (V a) (N a))
axisLabelTextFunction SingleAxis b V2 n
rA TextAlignment n
forall {n}. TextAlignment n
rLabelAlign String
rTxt
                    # translate rLabelPos
                    # applyStyle (rA ^. axisLabelStyle)
                    # fc black
  rLabelPos :: V2 n
rLabelPos = n -> n -> V2 n
forall a. a -> a -> V2 a
V2 (n
sn -> n -> n
forall a. Num a => a -> a -> a
*n
x) (- Getting n (SingleAxis b V2 n) n -> SingleAxis b V2 n -> n
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting n (SingleAxis b V2 n) n
LensLike' (Const n) (SingleAxis b V2 n) (N (SingleAxis b V2 n))
forall (f :: * -> *) a b.
(HasAxisLabel f a b, Functor f) =>
LensLike' f a (N a)
axisLabelGap SingleAxis b V2 n
rA) where
    x :: n
x = case SingleAxis b V2 n
rA SingleAxis b V2 n
-> Getting AxisLabelPosition (SingleAxis b V2 n) AxisLabelPosition
-> AxisLabelPosition
forall s a. s -> Getting a s a -> a
^. Getting AxisLabelPosition (SingleAxis b V2 n) AxisLabelPosition
forall (f :: * -> *) a b.
(HasAxisLabel f a b, Functor f) =>
LensLike' f a AxisLabelPosition
axisLabelPosition of
          AxisLabelPosition
MiddleAxisLabel -> n
rn -> n -> n
forall a. Fractional a => a -> a -> a
/n
2
          AxisLabelPosition
LowerAxisLabel  -> n
0
          AxisLabelPosition
UpperAxisLabel  -> n
r
  rTxt :: String
rTxt = SingleAxis b V2 n
rA SingleAxis b V2 n
-> Getting String (SingleAxis b V2 n) String -> String
forall s a. s -> Getting a s a -> a
^. Getting String (SingleAxis b V2 n) String
forall (f :: * -> *) a b.
(HasAxisLabel f a b, Functor f) =>
LensLike' f a String
axisLabelText
  rLabelAlign :: TextAlignment n
rLabelAlign = TextAlignment n
forall {n}. TextAlignment n
BaselineText
  
  
  majorTickRs :: [n]
majorTickRs  = Getting ((n, n) -> [n]) (SingleAxis b V2 n) ((n, n) -> [n])
-> SingleAxis b V2 n -> (n, n) -> [n]
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting ((n, n) -> [n]) (SingleAxis b V2 n) ((n, n) -> [n])
LensLike'
  (Const ((n, n) -> [n]))
  (SingleAxis b V2 n)
  ((N (SingleAxis b V2 n), N (SingleAxis b V2 n))
   -> [N (SingleAxis b V2 n)])
forall (f :: * -> *) a.
(HasMajorTicks f a, Functor f) =>
LensLike' f a ((N a, N a) -> [N a])
majorTicksFunction SingleAxis b V2 n
rA (n
0,n
r)
  majorTickRs' :: [n]
majorTickRs' = (n -> n) -> [n] -> [n]
forall a b. (a -> b) -> [a] -> [b]
map (n -> n -> n
forall a. Num a => a -> a -> a
*n
s) ([n] -> [n]) -> [n] -> [n]
forall a b. (a -> b) -> a -> b
$ (n -> Bool) -> [n] -> [n]
forall a. (a -> Bool) -> [a] -> [a]
filter n -> Bool
rInRange [n]
majorTickRs
  minorTickRs :: [n]
minorTickRs  = Getting
  ([n] -> (n, n) -> [n]) (SingleAxis b V2 n) ([n] -> (n, n) -> [n])
-> SingleAxis b V2 n -> [n] -> (n, n) -> [n]
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting
  ([n] -> (n, n) -> [n]) (SingleAxis b V2 n) ([n] -> (n, n) -> [n])
LensLike'
  (Const ([n] -> (n, n) -> [n]))
  (SingleAxis b V2 n)
  ([N (SingleAxis b V2 n)]
   -> (N (SingleAxis b V2 n), N (SingleAxis b V2 n))
   -> [N (SingleAxis b V2 n)])
forall (f :: * -> *) a.
(HasMinorTicks f a, Functor f) =>
LensLike' f a ([N a] -> (N a, N a) -> [N a])
minorTicksFunction SingleAxis b V2 n
rA [n]
majorTickRs (n
0,n
r)
  minorTickRs' :: [n]
minorTickRs' = (n -> n) -> [n] -> [n]
forall a b. (a -> b) -> [a] -> [b]
map (n -> n -> n
forall a. Num a => a -> a -> a
*n
s) ([n] -> [n]) -> [n] -> [n]
forall a b. (a -> b) -> a -> b
$ (n -> Bool) -> [n] -> [n]
forall a. (a -> Bool) -> [a] -> [a]
filter n -> Bool
rInRange [n]
minorTickRs
  
  
  rAxTicks :: QDiagram b V2 n Any
rAxTicks      = QDiagram b V2 n Any
rAxMajorTicks QDiagram b V2 n Any -> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall a. Semigroup a => a -> a -> a
<> QDiagram b V2 n Any
rAxMinorTicks
  rAxMajorTicks :: QDiagram b V2 n Any
rAxMajorTicks
    | SingleAxis b V2 n
rA SingleAxis b V2 n -> Getting Bool (SingleAxis b V2 n) Bool -> Bool
forall s a. s -> Getting a s a -> a
^. LensLike'
  (Const Bool)
  (SingleAxis b V2 n)
  (MajorTicks (V (SingleAxis b V2 n)) (N (SingleAxis b V2 n)))
(MajorTicks V2 n -> Const Bool (MajorTicks V2 n))
-> SingleAxis b V2 n -> Const Bool (SingleAxis b V2 n)
forall (f :: * -> *) a.
HasMajorTicks f a =>
LensLike' f a (MajorTicks (V a) (N a))
majorTicks ((MajorTicks V2 n -> Const Bool (MajorTicks V2 n))
 -> SingleAxis b V2 n -> Const Bool (SingleAxis b V2 n))
-> ((Bool -> Const Bool Bool)
    -> MajorTicks V2 n -> Const Bool (MajorTicks V2 n))
-> Getting Bool (SingleAxis b V2 n) Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Bool -> Const Bool Bool)
-> MajorTicks V2 n -> Const Bool (MajorTicks V2 n)
forall a. HasVisibility a => Lens' a Bool
Lens' (MajorTicks V2 n) Bool
hidden = QDiagram b V2 n Any
forall a. Monoid a => a
mempty
    | Bool
otherwise = (n -> QDiagram b V2 n Any) -> [n] -> QDiagram b V2 n Any
forall m a. Monoid m => (a -> m) -> [a] -> m
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
F.foldMap (\n
x -> QDiagram b V2 n Any
rAxMajorTick QDiagram b V2 n Any
-> (QDiagram b V2 n Any -> QDiagram b V2 n Any)
-> QDiagram b V2 n Any
forall a b. a -> (a -> b) -> b
# n -> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall (v :: * -> *) n t.
(InSpace v n t, R1 v, Transformable t) =>
n -> t -> t
translateX n
x) [n]
majorTickRs'
                       # applyStyle (rA ^. majorTicksStyle)
  rAxMinorTicks :: QDiagram b V2 n Any
rAxMinorTicks
    | SingleAxis b V2 n
rA SingleAxis b V2 n -> Getting Bool (SingleAxis b V2 n) Bool -> Bool
forall s a. s -> Getting a s a -> a
^. LensLike'
  (Const Bool)
  (SingleAxis b V2 n)
  (MinorTicks (V (SingleAxis b V2 n)) (N (SingleAxis b V2 n)))
(MinorTicks V2 n -> Const Bool (MinorTicks V2 n))
-> SingleAxis b V2 n -> Const Bool (SingleAxis b V2 n)
forall (f :: * -> *) a.
HasMinorTicks f a =>
LensLike' f a (MinorTicks (V a) (N a))
minorTicks ((MinorTicks V2 n -> Const Bool (MinorTicks V2 n))
 -> SingleAxis b V2 n -> Const Bool (SingleAxis b V2 n))
-> ((Bool -> Const Bool Bool)
    -> MinorTicks V2 n -> Const Bool (MinorTicks V2 n))
-> Getting Bool (SingleAxis b V2 n) Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Bool -> Const Bool Bool)
-> MinorTicks V2 n -> Const Bool (MinorTicks V2 n)
forall a. HasVisibility a => Lens' a Bool
Lens' (MinorTicks V2 n) Bool
hidden = QDiagram b V2 n Any
forall a. Monoid a => a
mempty
    | Bool
otherwise = (n -> QDiagram b V2 n Any) -> [n] -> QDiagram b V2 n Any
forall m a. Monoid m => (a -> m) -> [a] -> m
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
F.foldMap (\n
x -> QDiagram b V2 n Any
rAxMinorTick QDiagram b V2 n Any
-> (QDiagram b V2 n Any -> QDiagram b V2 n Any)
-> QDiagram b V2 n Any
forall a b. a -> (a -> b) -> b
# n -> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall (v :: * -> *) n t.
(InSpace v n t, R1 v, Transformable t) =>
n -> t -> t
translateX n
x) [n]
minorTickRs'
                       # applyStyle (rA ^. minorTicksStyle)
  
  rAxMajorTick :: QDiagram b V2 n Any
rAxMajorTick = TicksAlignment -> N (QDiagram b V2 n Any) -> QDiagram b V2 n Any
forall {t}. (V t ~ V2, TrailLike t) => TicksAlignment -> N t -> t
someTick (SingleAxis b V2 n
rA SingleAxis b V2 n
-> Getting TicksAlignment (SingleAxis b V2 n) TicksAlignment
-> TicksAlignment
forall s a. s -> Getting a s a -> a
^. Getting TicksAlignment (SingleAxis b V2 n) TicksAlignment
forall (f :: * -> *) a.
(HasMajorTicks f a, Functor f) =>
LensLike' f a TicksAlignment
majorTicksAlignment) (SingleAxis b V2 n
rA SingleAxis b V2 n -> Getting n (SingleAxis b V2 n) n -> n
forall s a. s -> Getting a s a -> a
^. Getting n (SingleAxis b V2 n) n
LensLike' (Const n) (SingleAxis b V2 n) (N (SingleAxis b V2 n))
forall (f :: * -> *) a.
(HasMajorTicks f a, Functor f) =>
LensLike' f a (N a)
majorTicksLength)
  rAxMinorTick :: QDiagram b V2 n Any
rAxMinorTick = TicksAlignment -> N (QDiagram b V2 n Any) -> QDiagram b V2 n Any
forall {t}. (V t ~ V2, TrailLike t) => TicksAlignment -> N t -> t
someTick (SingleAxis b V2 n
rA SingleAxis b V2 n
-> Getting TicksAlignment (SingleAxis b V2 n) TicksAlignment
-> TicksAlignment
forall s a. s -> Getting a s a -> a
^. Getting TicksAlignment (SingleAxis b V2 n) TicksAlignment
forall (f :: * -> *) a.
(HasMinorTicks f a, Functor f) =>
LensLike' f a TicksAlignment
minorTicksAlignment) (SingleAxis b V2 n
rA SingleAxis b V2 n -> Getting n (SingleAxis b V2 n) n -> n
forall s a. s -> Getting a s a -> a
^. Getting n (SingleAxis b V2 n) n
LensLike' (Const n) (SingleAxis b V2 n) (N (SingleAxis b V2 n))
forall (f :: * -> *) a.
(HasMinorTicks f a, Functor f) =>
LensLike' f a (N a)
minorTicksLength)
  someTick :: TicksAlignment -> N t -> t
someTick TicksAlignment
tType N t
d = case TicksAlignment
tType of
    TickSpec (Rational -> N t
forall a. Fractional a => Rational -> a
fromRational -> N t
aa) (Rational -> N t
forall a. Fractional a => Rational -> a
fromRational -> N t
bb)
             -> N t -> N t -> P2 (N t)
forall n. n -> n -> P2 n
mkP2 N t
0 (-N t
dN t -> N t -> N t
forall a. Num a => a -> a -> a
*N t
bb) P2 (N t) -> P2 (N t) -> t
forall t (v :: * -> *) n.
(V t ~ v, N t ~ n, TrailLike t) =>
Point v n -> Point v n -> t
~~ N t -> N t -> P2 (N t)
forall n. n -> n -> P2 n
mkP2 N t
0 (N t
dN t -> N t -> N t
forall a. Num a => a -> a -> a
*N t
aa)
    TicksAlignment
AutoTick -> N t -> N t -> P2 (N t)
forall n. n -> n -> P2 n
mkP2 N t
0 (-N t
d)    P2 (N t) -> P2 (N t) -> t
forall t (v :: * -> *) n.
(V t ~ v, N t ~ n, TrailLike t) =>
Point v n -> Point v n -> t
~~ N t -> N t -> P2 (N t)
forall n. n -> n -> P2 n
mkP2 N t
0 N t
d
  
  rAxGridLines :: QDiagram b V2 n Any
rAxGridLines
    
    | Bool
otherwise                = QDiagram b V2 n Any
rMajorGridLines QDiagram b V2 n Any -> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall a. Semigroup a => a -> a -> a
<> QDiagram b V2 n Any
rMinorGridLines
  majorGridRs :: [n]
majorGridRs  = Getting
  ([n] -> (n, n) -> [n]) (SingleAxis b V2 n) ([n] -> (n, n) -> [n])
-> SingleAxis b V2 n -> [n] -> (n, n) -> [n]
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting
  ([n] -> (n, n) -> [n]) (SingleAxis b V2 n) ([n] -> (n, n) -> [n])
LensLike'
  (Const ([n] -> (n, n) -> [n]))
  (SingleAxis b V2 n)
  ([N (SingleAxis b V2 n)]
   -> (N (SingleAxis b V2 n), N (SingleAxis b V2 n))
   -> [N (SingleAxis b V2 n)])
forall (f :: * -> *) a.
(HasMajorGridLines f a, Functor f) =>
LensLike' f a (GridLineFunction (N a))
majorGridLinesFunction SingleAxis b V2 n
rA [n]
majorTickRs (n
0,n
r)
  majorGridRs' :: [n]
majorGridRs' = (n -> n) -> [n] -> [n]
forall a b. (a -> b) -> [a] -> [b]
map (n -> n -> n
forall a. Num a => a -> a -> a
*n
s) ([n] -> [n]) -> [n] -> [n]
forall a b. (a -> b) -> a -> b
$ (n -> Bool) -> [n] -> [n]
forall a. (a -> Bool) -> [a] -> [a]
filter n -> Bool
rInRange [n]
majorGridRs
  rMajorGridLines :: QDiagram b V2 n Any
  rMajorGridLines :: QDiagram b V2 n Any
rMajorGridLines
    | SingleAxis b V2 n
rA SingleAxis b V2 n -> Getting Bool (SingleAxis b V2 n) Bool -> Bool
forall s a. s -> Getting a s a -> a
^. LensLike'
  (Const Bool)
  (SingleAxis b V2 n)
  (MajorGridLines (V (SingleAxis b V2 n)) (N (SingleAxis b V2 n)))
(MajorGridLines V2 n -> Const Bool (MajorGridLines V2 n))
-> SingleAxis b V2 n -> Const Bool (SingleAxis b V2 n)
forall (f :: * -> *) a.
HasMajorGridLines f a =>
LensLike' f a (MajorGridLines (V a) (N a))
majorGridLines ((MajorGridLines V2 n -> Const Bool (MajorGridLines V2 n))
 -> SingleAxis b V2 n -> Const Bool (SingleAxis b V2 n))
-> ((Bool -> Const Bool Bool)
    -> MajorGridLines V2 n -> Const Bool (MajorGridLines V2 n))
-> Getting Bool (SingleAxis b V2 n) Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Bool -> Const Bool Bool)
-> MajorGridLines V2 n -> Const Bool (MajorGridLines V2 n)
forall a. HasVisibility a => Lens' a Bool
Lens' (MajorGridLines V2 n) Bool
hidden = QDiagram b V2 n Any
forall a. Monoid a => a
mempty
    | Bool
otherwise = (n -> QDiagram b V2 n Any) -> [n] -> QDiagram b V2 n Any
forall m a. Monoid m => (a -> m) -> [a] -> m
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
F.foldMap n -> QDiagram b V2 n Any
forall t n.
(TrailLike t, V t ~ V2, N t ~ n, Transformable t) =>
n -> t
circle ((n -> Bool) -> [n] -> [n]
forall a. (a -> Bool) -> [a] -> [a]
filter (n -> n -> Bool
forall a. Ord a => a -> a -> Bool
>n
0) [n]
majorGridRs')
                    # applyStyle (rA ^. majorGridLinesStyle)
  minorGridRs :: [n]
minorGridRs  = Getting
  ([n] -> (n, n) -> [n]) (SingleAxis b V2 n) ([n] -> (n, n) -> [n])
-> SingleAxis b V2 n -> [n] -> (n, n) -> [n]
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting
  ([n] -> (n, n) -> [n]) (SingleAxis b V2 n) ([n] -> (n, n) -> [n])
LensLike'
  (Const ([n] -> (n, n) -> [n]))
  (SingleAxis b V2 n)
  ([N (SingleAxis b V2 n)]
   -> (N (SingleAxis b V2 n), N (SingleAxis b V2 n))
   -> [N (SingleAxis b V2 n)])
forall (f :: * -> *) a.
(HasMinorGridLines f a, Functor f) =>
LensLike' f a (GridLineFunction (N a))
minorGridLinesFunction SingleAxis b V2 n
rA [n]
minorTickRs (n
0,n
r)
  minorGridRs' :: [n]
minorGridRs' = (n -> n) -> [n] -> [n]
forall a b. (a -> b) -> [a] -> [b]
map (n -> n -> n
forall a. Num a => a -> a -> a
*n
s) ([n] -> [n]) -> [n] -> [n]
forall a b. (a -> b) -> a -> b
$ (n -> Bool) -> [n] -> [n]
forall a. (a -> Bool) -> [a] -> [a]
filter n -> Bool
rInRange [n]
minorGridRs
  rMinorGridLines :: QDiagram b V2 n Any
  rMinorGridLines :: QDiagram b V2 n Any
rMinorGridLines
    | SingleAxis b V2 n
rA SingleAxis b V2 n -> Getting Bool (SingleAxis b V2 n) Bool -> Bool
forall s a. s -> Getting a s a -> a
^. LensLike'
  (Const Bool)
  (SingleAxis b V2 n)
  (MinorGridLines (V (SingleAxis b V2 n)) (N (SingleAxis b V2 n)))
(MinorGridLines V2 n -> Const Bool (MinorGridLines V2 n))
-> SingleAxis b V2 n -> Const Bool (SingleAxis b V2 n)
forall (f :: * -> *) a.
HasMinorGridLines f a =>
LensLike' f a (MinorGridLines (V a) (N a))
minorGridLines ((MinorGridLines V2 n -> Const Bool (MinorGridLines V2 n))
 -> SingleAxis b V2 n -> Const Bool (SingleAxis b V2 n))
-> ((Bool -> Const Bool Bool)
    -> MinorGridLines V2 n -> Const Bool (MinorGridLines V2 n))
-> Getting Bool (SingleAxis b V2 n) Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Bool -> Const Bool Bool)
-> MinorGridLines V2 n -> Const Bool (MinorGridLines V2 n)
forall a. HasVisibility a => Lens' a Bool
Lens' (MinorGridLines V2 n) Bool
hidden = QDiagram b V2 n Any
forall a. Monoid a => a
mempty
    | Bool
otherwise = (n -> QDiagram b V2 n Any) -> [n] -> QDiagram b V2 n Any
forall m a. Monoid m => (a -> m) -> [a] -> m
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
F.foldMap n -> QDiagram b V2 n Any
forall t n.
(TrailLike t, V t ~ V2, N t ~ n, Transformable t) =>
n -> t
circle ((n -> Bool) -> [n] -> [n]
forall a. (a -> Bool) -> [a] -> [a]
filter (n -> n -> Bool
forall a. Ord a => a -> a -> Bool
>n
0) [n]
minorGridRs')
                    # applyStyle (rA ^. minorGridLinesStyle)
  
  rAxTickLabels :: QDiagram b V2 n Any
  rAxTickLabels :: QDiagram b V2 n Any
rAxTickLabels
    | SingleAxis b V2 n
rA SingleAxis b V2 n -> Getting Bool (SingleAxis b V2 n) Bool -> Bool
forall s a. s -> Getting a s a -> a
^. LensLike'
  (Const Bool)
  (SingleAxis b V2 n)
  (TickLabels b (V (SingleAxis b V2 n)) (N (SingleAxis b V2 n)))
(TickLabels b V2 n -> Const Bool (TickLabels b V2 n))
-> SingleAxis b V2 n -> Const Bool (SingleAxis b V2 n)
forall (f :: * -> *) a b.
HasTickLabels f a b =>
LensLike' f a (TickLabels b (V a) (N a))
tickLabel ((TickLabels b V2 n -> Const Bool (TickLabels b V2 n))
 -> SingleAxis b V2 n -> Const Bool (SingleAxis b V2 n))
-> ((Bool -> Const Bool Bool)
    -> TickLabels b V2 n -> Const Bool (TickLabels b V2 n))
-> Getting Bool (SingleAxis b V2 n) Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Bool -> Const Bool Bool)
-> TickLabels b V2 n -> Const Bool (TickLabels b V2 n)
forall a. HasVisibility a => Lens' a Bool
Lens' (TickLabels b V2 n) Bool
hidden = QDiagram b V2 n Any
forall a. Monoid a => a
mempty
    | Bool
otherwise                = ((n, String) -> QDiagram b V2 n Any)
-> [(n, String)] -> QDiagram b V2 n Any
forall m a. Monoid m => (a -> m) -> [a] -> m
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
F.foldMap (n, String) -> QDiagram b V2 n Any
rDrawTickLabel [(n, String)]
tickLabelRs
  
  tickLabelRs :: [(n, String)]
  tickLabelRs :: [(n, String)]
tickLabelRs = Getting
  ([n] -> (n, n) -> [(n, String)])
  (SingleAxis b V2 n)
  ([n] -> (n, n) -> [(n, String)])
-> SingleAxis b V2 n -> [n] -> (n, n) -> [(n, String)]
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting
  ([n] -> (n, n) -> [(n, String)])
  (SingleAxis b V2 n)
  ([n] -> (n, n) -> [(n, String)])
LensLike'
  (Const ([n] -> (n, n) -> [(n, String)]))
  (SingleAxis b V2 n)
  ([N (SingleAxis b V2 n)]
   -> (N (SingleAxis b V2 n), N (SingleAxis b V2 n))
   -> [(N (SingleAxis b V2 n), String)])
forall (f :: * -> *) a b.
(HasTickLabels f a b, Functor f) =>
LensLike' f a ([N a] -> (N a, N a) -> [(N a, String)])
tickLabelFunction SingleAxis b V2 n
rA ((n -> Bool) -> [n] -> [n]
forall a. (a -> Bool) -> [a] -> [a]
filter n -> Bool
rInRange [n]
majorTickRs) (n
0,n
r)
  
  rDrawTickLabel :: (n,String) -> QDiagram b V2 n Any
  rDrawTickLabel :: (n, String) -> QDiagram b V2 n Any
rDrawTickLabel (n
x,String
label) =
    Getting
  (TextAlignment n -> String -> QDiagram b V2 n Any)
  (SingleAxis b V2 n)
  (TextAlignment n -> String -> QDiagram b V2 n Any)
-> SingleAxis b V2 n
-> TextAlignment n
-> String
-> QDiagram b V2 n Any
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting
  (TextAlignment n -> String -> QDiagram b V2 n Any)
  (SingleAxis b V2 n)
  (TextAlignment n -> String -> QDiagram b V2 n Any)
LensLike'
  (Const (TextAlignment n -> String -> QDiagram b V2 n Any))
  (SingleAxis b V2 n)
  (TextFunction b (V (SingleAxis b V2 n)) (N (SingleAxis b V2 n)))
forall (f :: * -> *) a b.
(HasTickLabels f a b, Functor f) =>
LensLike' f a (TextFunction b (V a) (N a))
tickLabelTextFunction SingleAxis b V2 n
rA (n -> n -> TextAlignment n
forall n. n -> n -> TextAlignment n
BoxAlignedText n
0.5 n
1) String
label
      # translate (V2 (s*x) (- view axisLabelGap rA))
      # applyStyle (rA ^. tickLabelStyle)
      # fc black
  
  
  
  
  
  
  thetaAx :: QDiagram b V2 n Any
thetaAx
    | SingleAxis b V2 n
thetaA SingleAxis b V2 n -> Getting Bool (SingleAxis b V2 n) Bool -> Bool
forall s a. s -> Getting a s a -> a
^. Getting Bool (SingleAxis b V2 n) Bool
forall a. HasVisibility a => Lens' a Bool
Lens' (SingleAxis b V2 n) Bool
hidden = QDiagram b V2 n Any
forall a. Monoid a => a
mempty
    | Bool
otherwise = QDiagram b V2 n Any
thetaAxLine QDiagram b V2 n Any -> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall a. Semigroup a => a -> a -> a
<> QDiagram b V2 n Any
thetaAxLabel
         QDiagram b V2 n Any -> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall a. Semigroup a => a -> a -> a
<> QDiagram b V2 n Any
thetaAxTicks QDiagram b V2 n Any -> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall a. Semigroup a => a -> a -> a
<> QDiagram b V2 n Any
thetaAxTickLabels QDiagram b V2 n Any -> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall a. Semigroup a => a -> a -> a
<> QDiagram b V2 n Any
thetaAxGridLines
  theta :: N (SingleAxis b V2 n)
theta = N (SingleAxis b V2 n)
2N (SingleAxis b V2 n)
-> N (SingleAxis b V2 n) -> N (SingleAxis b V2 n)
forall a. Num a => a -> a -> a
*N (SingleAxis b V2 n)
forall a. Floating a => a
pi
  thetaAxLine :: QDiagram b V2 n Any
thetaAxLine = QDiagram b V2 n Any
line QDiagram b V2 n Any
-> (QDiagram b V2 n Any -> QDiagram b V2 n Any)
-> QDiagram b V2 n Any
forall a b. a -> (a -> b) -> b
# Bool
-> (QDiagram b V2 n Any -> QDiagram b V2 n Any)
-> QDiagram b V2 n Any
-> QDiagram b V2 n Any
forall a. Bool -> (a -> a) -> a -> a
whenever (SingleAxis b V2 n
thetaA SingleAxis b V2 n -> Getting Bool (SingleAxis b V2 n) Bool -> Bool
forall s a. s -> Getting a s a -> a
^. LensLike'
  (Const Bool)
  (SingleAxis b V2 n)
  (AxisLine (V (SingleAxis b V2 n)) (N (SingleAxis b V2 n)))
(AxisLine V2 n -> Const Bool (AxisLine V2 n))
-> SingleAxis b V2 n -> Const Bool (SingleAxis b V2 n)
forall (f :: * -> *) a.
HasAxisLine f a =>
LensLike' f a (AxisLine (V a) (N a))
axisLine ((AxisLine V2 n -> Const Bool (AxisLine V2 n))
 -> SingleAxis b V2 n -> Const Bool (SingleAxis b V2 n))
-> ((Bool -> Const Bool Bool)
    -> AxisLine V2 n -> Const Bool (AxisLine V2 n))
-> Getting Bool (SingleAxis b V2 n) Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Bool -> Const Bool Bool)
-> AxisLine V2 n -> Const Bool (AxisLine V2 n)
forall a. HasVisibility a => Lens' a Bool
Lens' (AxisLine V2 n) Bool
hidden) QDiagram b V2 n Any -> QDiagram b V2 n Any
forall (v :: * -> *) n a m b.
(InSpace v n a, Monoid' m, Enveloped a, Traced a) =>
a -> QDiagram b v n m
phantom
    where
      
      
      line :: QDiagram b V2 n Any
line = n -> QDiagram b V2 n Any
forall t n.
(TrailLike t, V t ~ V2, N t ~ n, Transformable t) =>
n -> t
circle (n
sn -> n -> n
forall a. Num a => a -> a -> a
*n
r) QDiagram b V2 n Any
-> (QDiagram b V2 n Any -> QDiagram b V2 n Any)
-> QDiagram b V2 n Any
forall a b. a -> (a -> b) -> b
# Style (V (QDiagram b V2 n Any)) (N (QDiagram b V2 n Any))
-> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall a. HasStyle a => Style (V a) (N a) -> a -> a
applyStyle (SingleAxis b V2 n
thetaASingleAxis b V2 n
-> Getting (Style V2 n) (SingleAxis b V2 n) (Style V2 n)
-> Style V2 n
forall s a. s -> Getting a s a -> a
^.LensLike'
  (Const (Style V2 n))
  (SingleAxis b V2 n)
  (Style (V (SingleAxis b V2 n)) (N (SingleAxis b V2 n)))
Getting (Style V2 n) (SingleAxis b V2 n) (Style V2 n)
forall (f :: * -> *) a.
(HasAxisLine f a, Functor f) =>
LensLike' f a (Style (V a) (N a))
axisLineStyle)
  
  
  thetaAxLabel :: QDiagram b V2 n Any
thetaAxLabel
    | String -> Bool
forall a. [a] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null String
thetaTxt Bool -> Bool -> Bool
|| SingleAxis b V2 n
thetaA SingleAxis b V2 n -> Getting Bool (SingleAxis b V2 n) Bool -> Bool
forall s a. s -> Getting a s a -> a
^. LensLike'
  (Const Bool)
  (SingleAxis b V2 n)
  (AxisLabel b (V (SingleAxis b V2 n)) (N (SingleAxis b V2 n)))
(AxisLabel b V2 n -> Const Bool (AxisLabel b V2 n))
-> SingleAxis b V2 n -> Const Bool (SingleAxis b V2 n)
forall (f :: * -> *) a b.
HasAxisLabel f a b =>
LensLike' f a (AxisLabel b (V a) (N a))
axisLabel ((AxisLabel b V2 n -> Const Bool (AxisLabel b V2 n))
 -> SingleAxis b V2 n -> Const Bool (SingleAxis b V2 n))
-> ((Bool -> Const Bool Bool)
    -> AxisLabel b V2 n -> Const Bool (AxisLabel b V2 n))
-> Getting Bool (SingleAxis b V2 n) Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Bool -> Const Bool Bool)
-> AxisLabel b V2 n -> Const Bool (AxisLabel b V2 n)
forall a. HasVisibility a => Lens' a Bool
Lens' (AxisLabel b V2 n) Bool
hidden = QDiagram b V2 n Any
forall a. Monoid a => a
mempty
    | Bool
otherwise = Getting
  (TextAlignment n -> String -> QDiagram b V2 n Any)
  (SingleAxis b V2 n)
  (TextAlignment n -> String -> QDiagram b V2 n Any)
-> SingleAxis b V2 n
-> TextAlignment n
-> String
-> QDiagram b V2 n Any
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting
  (TextAlignment n -> String -> QDiagram b V2 n Any)
  (SingleAxis b V2 n)
  (TextAlignment n -> String -> QDiagram b V2 n Any)
LensLike'
  (Const (TextAlignment n -> String -> QDiagram b V2 n Any))
  (SingleAxis b V2 n)
  (TextFunction b (V (SingleAxis b V2 n)) (N (SingleAxis b V2 n)))
forall (f :: * -> *) a b.
(HasAxisLabel f a b, Functor f) =>
LensLike' f a (TextFunction b (V a) (N a))
axisLabelTextFunction SingleAxis b V2 n
thetaA TextAlignment n
forall {n}. TextAlignment n
thetaLabelAlign String
thetaTxt
                    # translate thetaLabelPos
                    # applyStyle (thetaA ^. axisLabelStyle)
                    # fc black
  
  thetaLabelPos :: V2 n
thetaLabelPos = Getting (V2 n) (Polar n) (V2 n) -> Polar n -> V2 n
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting (V2 n) (Polar n) (V2 n)
forall n. RealFloat n => Lens' (Polar n) (V2 n)
Lens' (Polar n) (V2 n)
forall (t :: * -> *) n. (HasY t, RealFloat n) => Lens' (t n) (V2 n)
xy_ (n -> Angle n -> Polar n
forall n. n -> Angle n -> Polar n
mkPolar (n
sn -> n -> n
forall a. Num a => a -> a -> a
*n
r n -> n -> n
forall a. Num a => a -> a -> a
+ Getting n (SingleAxis b V2 n) n -> SingleAxis b V2 n -> n
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting n (SingleAxis b V2 n) n
LensLike' (Const n) (SingleAxis b V2 n) (N (SingleAxis b V2 n))
forall (f :: * -> *) a b.
(HasAxisLabel f a b, Functor f) =>
LensLike' f a (N a)
axisLabelGap SingleAxis b V2 n
thetaA) Angle n
x) where
    
    
    x :: Angle n
x = case SingleAxis b V2 n
thetaA SingleAxis b V2 n
-> Getting AxisLabelPosition (SingleAxis b V2 n) AxisLabelPosition
-> AxisLabelPosition
forall s a. s -> Getting a s a -> a
^. Getting AxisLabelPosition (SingleAxis b V2 n) AxisLabelPosition
forall (f :: * -> *) a b.
(HasAxisLabel f a b, Functor f) =>
LensLike' f a AxisLabelPosition
axisLabelPosition of
          AxisLabelPosition
MiddleAxisLabel -> Angle n
forall v. Floating v => Angle v
quarterTurn
          AxisLabelPosition
LowerAxisLabel  -> Angle n
forall a. Num a => Angle a
forall (f :: * -> *) a. (Additive f, Num a) => f a
zero
          AxisLabelPosition
UpperAxisLabel  -> Angle n
forall v. Floating v => Angle v
halfTurn
  thetaTxt :: String
thetaTxt = SingleAxis b V2 n
thetaA SingleAxis b V2 n
-> Getting String (SingleAxis b V2 n) String -> String
forall s a. s -> Getting a s a -> a
^. Getting String (SingleAxis b V2 n) String
forall (f :: * -> *) a b.
(HasAxisLabel f a b, Functor f) =>
LensLike' f a String
axisLabelText
  thetaLabelAlign :: TextAlignment n
thetaLabelAlign = TextAlignment n
forall {n}. TextAlignment n
BaselineText
  
  
  majorTickThetas :: [N (SingleAxis b V2 n)]
majorTickThetas  = Getting
  ((N (SingleAxis b V2 n), N (SingleAxis b V2 n))
   -> [N (SingleAxis b V2 n)])
  (SingleAxis b V2 n)
  ((N (SingleAxis b V2 n), N (SingleAxis b V2 n))
   -> [N (SingleAxis b V2 n)])
-> SingleAxis b V2 n
-> (N (SingleAxis b V2 n), N (SingleAxis b V2 n))
-> [N (SingleAxis b V2 n)]
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting
  ((N (SingleAxis b V2 n), N (SingleAxis b V2 n))
   -> [N (SingleAxis b V2 n)])
  (SingleAxis b V2 n)
  ((N (SingleAxis b V2 n), N (SingleAxis b V2 n))
   -> [N (SingleAxis b V2 n)])
forall (f :: * -> *) a.
(HasMajorTicks f a, Functor f) =>
LensLike' f a ((N a, N a) -> [N a])
majorTicksFunction SingleAxis b V2 n
thetaA (N (SingleAxis b V2 n)
0,N (SingleAxis b V2 n)
theta)
  majorTickThetas' :: [N (SingleAxis b V2 n)]
majorTickThetas' = (N (SingleAxis b V2 n) -> Bool)
-> [N (SingleAxis b V2 n)] -> [N (SingleAxis b V2 n)]
forall a. (a -> Bool) -> [a] -> [a]
filter N (SingleAxis b V2 n) -> Bool
forall {a}. (Ord a, Floating a) => a -> Bool
thetaInRange [N (SingleAxis b V2 n)]
majorTickThetas
  minorTickThetas :: [N (SingleAxis b V2 n)]
minorTickThetas  = Getting
  ([N (SingleAxis b V2 n)]
   -> (N (SingleAxis b V2 n), N (SingleAxis b V2 n))
   -> [N (SingleAxis b V2 n)])
  (SingleAxis b V2 n)
  ([N (SingleAxis b V2 n)]
   -> (N (SingleAxis b V2 n), N (SingleAxis b V2 n))
   -> [N (SingleAxis b V2 n)])
-> SingleAxis b V2 n
-> [N (SingleAxis b V2 n)]
-> (N (SingleAxis b V2 n), N (SingleAxis b V2 n))
-> [N (SingleAxis b V2 n)]
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting
  ([N (SingleAxis b V2 n)]
   -> (N (SingleAxis b V2 n), N (SingleAxis b V2 n))
   -> [N (SingleAxis b V2 n)])
  (SingleAxis b V2 n)
  ([N (SingleAxis b V2 n)]
   -> (N (SingleAxis b V2 n), N (SingleAxis b V2 n))
   -> [N (SingleAxis b V2 n)])
forall (f :: * -> *) a.
(HasMinorTicks f a, Functor f) =>
LensLike' f a ([N a] -> (N a, N a) -> [N a])
minorTicksFunction SingleAxis b V2 n
thetaA [N (SingleAxis b V2 n)]
majorTickThetas (N (SingleAxis b V2 n)
0,N (SingleAxis b V2 n)
theta)
  minorTickThetas' :: [N (SingleAxis b V2 n)]
minorTickThetas' = (N (SingleAxis b V2 n) -> Bool)
-> [N (SingleAxis b V2 n)] -> [N (SingleAxis b V2 n)]
forall a. (a -> Bool) -> [a] -> [a]
filter N (SingleAxis b V2 n) -> Bool
forall {a}. (Ord a, Floating a) => a -> Bool
thetaInRange [N (SingleAxis b V2 n)]
minorTickThetas
  
  
  
  thetaAxTicks :: QDiagram b V2 n Any
thetaAxTicks      = QDiagram b V2 n Any
thetaAxMajorTicks QDiagram b V2 n Any -> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall a. Semigroup a => a -> a -> a
<> QDiagram b V2 n Any
thetaAxMinorTicks
  thetaAxMajorTicks :: QDiagram b V2 n Any
thetaAxMajorTicks
    | SingleAxis b V2 n
thetaA SingleAxis b V2 n -> Getting Bool (SingleAxis b V2 n) Bool -> Bool
forall s a. s -> Getting a s a -> a
^. LensLike'
  (Const Bool)
  (SingleAxis b V2 n)
  (MajorTicks (V (SingleAxis b V2 n)) (N (SingleAxis b V2 n)))
(MajorTicks V2 n -> Const Bool (MajorTicks V2 n))
-> SingleAxis b V2 n -> Const Bool (SingleAxis b V2 n)
forall (f :: * -> *) a.
HasMajorTicks f a =>
LensLike' f a (MajorTicks (V a) (N a))
majorTicks ((MajorTicks V2 n -> Const Bool (MajorTicks V2 n))
 -> SingleAxis b V2 n -> Const Bool (SingleAxis b V2 n))
-> ((Bool -> Const Bool Bool)
    -> MajorTicks V2 n -> Const Bool (MajorTicks V2 n))
-> Getting Bool (SingleAxis b V2 n) Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Bool -> Const Bool Bool)
-> MajorTicks V2 n -> Const Bool (MajorTicks V2 n)
forall a. HasVisibility a => Lens' a Bool
Lens' (MajorTicks V2 n) Bool
hidden = QDiagram b V2 n Any
forall a. Monoid a => a
mempty
    | Bool
otherwise = (N (SingleAxis b V2 n) -> QDiagram b V2 n Any)
-> [N (SingleAxis b V2 n)] -> QDiagram b V2 n Any
forall m a. Monoid m => (a -> m) -> [a] -> m
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
F.foldMap (\N (SingleAxis b V2 n)
phi -> QDiagram b V2 n Any
thetaAxMajorTick QDiagram b V2 n Any
-> (QDiagram b V2 n Any -> QDiagram b V2 n Any)
-> QDiagram b V2 n Any
forall a b. a -> (a -> b) -> b
# n -> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall (v :: * -> *) n t.
(InSpace v n t, R1 v, Transformable t) =>
n -> t -> t
translateX (n
sn -> n -> n
forall a. Num a => a -> a -> a
*n
r) QDiagram b V2 n Any
-> (QDiagram b V2 n Any -> QDiagram b V2 n Any)
-> QDiagram b V2 n Any
forall a b. a -> (a -> b) -> b
# Angle (N (SingleAxis b V2 n))
-> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall n t.
(InSpace V2 n t, Transformable t, Floating n) =>
Angle n -> t -> t
rotate (N (SingleAxis b V2 n)
phiN (SingleAxis b V2 n)
-> AReview (Angle (N (SingleAxis b V2 n))) (N (SingleAxis b V2 n))
-> Angle (N (SingleAxis b V2 n))
forall b a. b -> AReview a b -> a
@@AReview (Angle (N (SingleAxis b V2 n))) (N (SingleAxis b V2 n))
forall n (p :: * -> * -> *) (f :: * -> *).
(Profunctor p, Functor f) =>
p n (f n) -> p (Angle n) (f (Angle n))
rad)) [N (SingleAxis b V2 n)]
majorTickThetas'
                       # applyStyle (thetaA ^. majorTicksStyle)
  thetaAxMinorTicks :: QDiagram b V2 n Any
thetaAxMinorTicks
    | SingleAxis b V2 n
thetaA SingleAxis b V2 n -> Getting Bool (SingleAxis b V2 n) Bool -> Bool
forall s a. s -> Getting a s a -> a
^. LensLike'
  (Const Bool)
  (SingleAxis b V2 n)
  (MinorTicks (V (SingleAxis b V2 n)) (N (SingleAxis b V2 n)))
(MinorTicks V2 n -> Const Bool (MinorTicks V2 n))
-> SingleAxis b V2 n -> Const Bool (SingleAxis b V2 n)
forall (f :: * -> *) a.
HasMinorTicks f a =>
LensLike' f a (MinorTicks (V a) (N a))
minorTicks ((MinorTicks V2 n -> Const Bool (MinorTicks V2 n))
 -> SingleAxis b V2 n -> Const Bool (SingleAxis b V2 n))
-> ((Bool -> Const Bool Bool)
    -> MinorTicks V2 n -> Const Bool (MinorTicks V2 n))
-> Getting Bool (SingleAxis b V2 n) Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Bool -> Const Bool Bool)
-> MinorTicks V2 n -> Const Bool (MinorTicks V2 n)
forall a. HasVisibility a => Lens' a Bool
Lens' (MinorTicks V2 n) Bool
hidden = QDiagram b V2 n Any
forall a. Monoid a => a
mempty
    | Bool
otherwise = (N (SingleAxis b V2 n) -> QDiagram b V2 n Any)
-> [N (SingleAxis b V2 n)] -> QDiagram b V2 n Any
forall m a. Monoid m => (a -> m) -> [a] -> m
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
F.foldMap (\N (SingleAxis b V2 n)
phi -> QDiagram b V2 n Any
thetaAxMinorTick QDiagram b V2 n Any
-> (QDiagram b V2 n Any -> QDiagram b V2 n Any)
-> QDiagram b V2 n Any
forall a b. a -> (a -> b) -> b
# n -> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall (v :: * -> *) n t.
(InSpace v n t, R1 v, Transformable t) =>
n -> t -> t
translateX (n
sn -> n -> n
forall a. Num a => a -> a -> a
*n
r) QDiagram b V2 n Any
-> (QDiagram b V2 n Any -> QDiagram b V2 n Any)
-> QDiagram b V2 n Any
forall a b. a -> (a -> b) -> b
# Angle (N (SingleAxis b V2 n))
-> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall n t.
(InSpace V2 n t, Transformable t, Floating n) =>
Angle n -> t -> t
rotate (N (SingleAxis b V2 n)
phiN (SingleAxis b V2 n)
-> AReview (Angle (N (SingleAxis b V2 n))) (N (SingleAxis b V2 n))
-> Angle (N (SingleAxis b V2 n))
forall b a. b -> AReview a b -> a
@@AReview (Angle (N (SingleAxis b V2 n))) (N (SingleAxis b V2 n))
forall n (p :: * -> * -> *) (f :: * -> *).
(Profunctor p, Functor f) =>
p n (f n) -> p (Angle n) (f (Angle n))
rad)) [N (SingleAxis b V2 n)]
minorTickThetas'
                       # applyStyle (thetaA ^. minorTicksStyle)
  
  thetaAxMajorTick :: QDiagram b V2 n Any
thetaAxMajorTick = TicksAlignment -> N (QDiagram b V2 n Any) -> QDiagram b V2 n Any
forall {t}. (V t ~ V2, TrailLike t) => TicksAlignment -> N t -> t
someThetaTick (SingleAxis b V2 n
thetaA SingleAxis b V2 n
-> Getting TicksAlignment (SingleAxis b V2 n) TicksAlignment
-> TicksAlignment
forall s a. s -> Getting a s a -> a
^. Getting TicksAlignment (SingleAxis b V2 n) TicksAlignment
forall (f :: * -> *) a.
(HasMajorTicks f a, Functor f) =>
LensLike' f a TicksAlignment
majorTicksAlignment) (SingleAxis b V2 n
thetaA SingleAxis b V2 n -> Getting n (SingleAxis b V2 n) n -> n
forall s a. s -> Getting a s a -> a
^. Getting n (SingleAxis b V2 n) n
LensLike' (Const n) (SingleAxis b V2 n) (N (SingleAxis b V2 n))
forall (f :: * -> *) a.
(HasMajorTicks f a, Functor f) =>
LensLike' f a (N a)
majorTicksLength)
  thetaAxMinorTick :: QDiagram b V2 n Any
thetaAxMinorTick = TicksAlignment -> N (QDiagram b V2 n Any) -> QDiagram b V2 n Any
forall {t}. (V t ~ V2, TrailLike t) => TicksAlignment -> N t -> t
someThetaTick (SingleAxis b V2 n
thetaA SingleAxis b V2 n
-> Getting TicksAlignment (SingleAxis b V2 n) TicksAlignment
-> TicksAlignment
forall s a. s -> Getting a s a -> a
^. Getting TicksAlignment (SingleAxis b V2 n) TicksAlignment
forall (f :: * -> *) a.
(HasMinorTicks f a, Functor f) =>
LensLike' f a TicksAlignment
minorTicksAlignment) (SingleAxis b V2 n
thetaA SingleAxis b V2 n -> Getting n (SingleAxis b V2 n) n -> n
forall s a. s -> Getting a s a -> a
^. Getting n (SingleAxis b V2 n) n
LensLike' (Const n) (SingleAxis b V2 n) (N (SingleAxis b V2 n))
forall (f :: * -> *) a.
(HasMinorTicks f a, Functor f) =>
LensLike' f a (N a)
minorTicksLength)
  someThetaTick :: TicksAlignment -> N t -> t
someThetaTick TicksAlignment
tType N t
d = case TicksAlignment
tType of
    TickSpec (Rational -> N t
forall a. Fractional a => Rational -> a
fromRational -> N t
aa) (Rational -> N t
forall a. Fractional a => Rational -> a
fromRational -> N t
bb)
             -> N t -> N t -> P2 (N t)
forall n. n -> n -> P2 n
mkP2 (-N t
dN t -> N t -> N t
forall a. Num a => a -> a -> a
*N t
bb) N t
0 P2 (N t) -> P2 (N t) -> t
forall t (v :: * -> *) n.
(V t ~ v, N t ~ n, TrailLike t) =>
Point v n -> Point v n -> t
~~ N t -> N t -> P2 (N t)
forall n. n -> n -> P2 n
mkP2 (N t
dN t -> N t -> N t
forall a. Num a => a -> a -> a
*N t
aa) N t
0
    TicksAlignment
AutoTick -> N t -> N t -> P2 (N t)
forall n. n -> n -> P2 n
mkP2 (-N t
d) N t
0    P2 (N t) -> P2 (N t) -> t
forall t (v :: * -> *) n.
(V t ~ v, N t ~ n, TrailLike t) =>
Point v n -> Point v n -> t
~~ N t -> N t -> P2 (N t)
forall n. n -> n -> P2 n
mkP2 N t
d N t
0
  
  
  thetaAxGridLines :: QDiagram b V2 n Any
thetaAxGridLines
    
    | Bool
otherwise                = QDiagram b V2 n Any
thetaMajorGridLines QDiagram b V2 n Any -> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall a. Semigroup a => a -> a -> a
<> QDiagram b V2 n Any
thetaMinorGridLines
  majorGridThetas :: [N (SingleAxis b V2 n)]
majorGridThetas = Getting
  ([N (SingleAxis b V2 n)]
   -> (N (SingleAxis b V2 n), N (SingleAxis b V2 n))
   -> [N (SingleAxis b V2 n)])
  (SingleAxis b V2 n)
  ([N (SingleAxis b V2 n)]
   -> (N (SingleAxis b V2 n), N (SingleAxis b V2 n))
   -> [N (SingleAxis b V2 n)])
-> SingleAxis b V2 n
-> [N (SingleAxis b V2 n)]
-> (N (SingleAxis b V2 n), N (SingleAxis b V2 n))
-> [N (SingleAxis b V2 n)]
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting
  ([N (SingleAxis b V2 n)]
   -> (N (SingleAxis b V2 n), N (SingleAxis b V2 n))
   -> [N (SingleAxis b V2 n)])
  (SingleAxis b V2 n)
  ([N (SingleAxis b V2 n)]
   -> (N (SingleAxis b V2 n), N (SingleAxis b V2 n))
   -> [N (SingleAxis b V2 n)])
forall (f :: * -> *) a.
(HasMajorGridLines f a, Functor f) =>
LensLike' f a (GridLineFunction (N a))
majorGridLinesFunction SingleAxis b V2 n
thetaA [N (SingleAxis b V2 n)]
majorTickThetas (N (SingleAxis b V2 n)
0,N (SingleAxis b V2 n)
theta)
  majorGridThetas' :: [N (SingleAxis b V2 n)]
majorGridThetas' = (N (SingleAxis b V2 n) -> Bool)
-> [N (SingleAxis b V2 n)] -> [N (SingleAxis b V2 n)]
forall a. (a -> Bool) -> [a] -> [a]
filter N (SingleAxis b V2 n) -> Bool
forall {a}. (Ord a, Floating a) => a -> Bool
thetaInRange [N (SingleAxis b V2 n)]
majorGridThetas
  thetaMajorGridLines :: QDiagram b V2 n Any
  thetaMajorGridLines :: QDiagram b V2 n Any
thetaMajorGridLines
    | SingleAxis b V2 n
thetaA SingleAxis b V2 n -> Getting Bool (SingleAxis b V2 n) Bool -> Bool
forall s a. s -> Getting a s a -> a
^. LensLike'
  (Const Bool)
  (SingleAxis b V2 n)
  (MajorGridLines (V (SingleAxis b V2 n)) (N (SingleAxis b V2 n)))
(MajorGridLines V2 n -> Const Bool (MajorGridLines V2 n))
-> SingleAxis b V2 n -> Const Bool (SingleAxis b V2 n)
forall (f :: * -> *) a.
HasMajorGridLines f a =>
LensLike' f a (MajorGridLines (V a) (N a))
majorGridLines ((MajorGridLines V2 n -> Const Bool (MajorGridLines V2 n))
 -> SingleAxis b V2 n -> Const Bool (SingleAxis b V2 n))
-> ((Bool -> Const Bool Bool)
    -> MajorGridLines V2 n -> Const Bool (MajorGridLines V2 n))
-> Getting Bool (SingleAxis b V2 n) Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Bool -> Const Bool Bool)
-> MajorGridLines V2 n -> Const Bool (MajorGridLines V2 n)
forall a. HasVisibility a => Lens' a Bool
Lens' (MajorGridLines V2 n) Bool
hidden = QDiagram b V2 n Any
forall a. Monoid a => a
mempty
    | Bool
otherwise = (N (SingleAxis b V2 n) -> QDiagram b V2 n Any)
-> [N (SingleAxis b V2 n)] -> QDiagram b V2 n Any
forall m a. Monoid m => (a -> m) -> [a] -> m
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
F.foldMap (\N (SingleAxis b V2 n)
phi -> Point V2 n
forall (f :: * -> *) a. (Additive f, Num a) => Point f a
origin Point V2 n -> Point V2 n -> QDiagram b V2 n Any
forall t (v :: * -> *) n.
(V t ~ v, N t ~ n, TrailLike t) =>
Point v n -> Point v n -> t
~~ n -> n -> Point V2 n
forall n. n -> n -> P2 n
mkP2 n
r n
0 QDiagram b V2 n Any
-> (QDiagram b V2 n Any -> QDiagram b V2 n Any)
-> QDiagram b V2 n Any
forall a b. a -> (a -> b) -> b
# Angle (N (SingleAxis b V2 n))
-> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall n t.
(InSpace V2 n t, Transformable t, Floating n) =>
Angle n -> t -> t
rotate (N (SingleAxis b V2 n)
phiN (SingleAxis b V2 n)
-> AReview (Angle (N (SingleAxis b V2 n))) (N (SingleAxis b V2 n))
-> Angle (N (SingleAxis b V2 n))
forall b a. b -> AReview a b -> a
@@AReview (Angle (N (SingleAxis b V2 n))) (N (SingleAxis b V2 n))
forall n (p :: * -> * -> *) (f :: * -> *).
(Profunctor p, Functor f) =>
p n (f n) -> p (Angle n) (f (Angle n))
rad)) [N (SingleAxis b V2 n)]
majorGridThetas'
                    # transform t
                    # applyStyle (thetaA ^. majorGridLinesStyle)
  minorGridThetas :: [N (SingleAxis b V2 n)]
minorGridThetas    = Getting
  ([N (SingleAxis b V2 n)]
   -> (N (SingleAxis b V2 n), N (SingleAxis b V2 n))
   -> [N (SingleAxis b V2 n)])
  (SingleAxis b V2 n)
  ([N (SingleAxis b V2 n)]
   -> (N (SingleAxis b V2 n), N (SingleAxis b V2 n))
   -> [N (SingleAxis b V2 n)])
-> SingleAxis b V2 n
-> [N (SingleAxis b V2 n)]
-> (N (SingleAxis b V2 n), N (SingleAxis b V2 n))
-> [N (SingleAxis b V2 n)]
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting
  ([N (SingleAxis b V2 n)]
   -> (N (SingleAxis b V2 n), N (SingleAxis b V2 n))
   -> [N (SingleAxis b V2 n)])
  (SingleAxis b V2 n)
  ([N (SingleAxis b V2 n)]
   -> (N (SingleAxis b V2 n), N (SingleAxis b V2 n))
   -> [N (SingleAxis b V2 n)])
forall (f :: * -> *) a.
(HasMinorGridLines f a, Functor f) =>
LensLike' f a (GridLineFunction (N a))
minorGridLinesFunction SingleAxis b V2 n
thetaA [N (SingleAxis b V2 n)]
minorTickThetas (N (SingleAxis b V2 n)
0,N (SingleAxis b V2 n)
theta)
  minorGridThetas' :: [N (SingleAxis b V2 n)]
minorGridThetas'   = (N (SingleAxis b V2 n) -> Bool)
-> [N (SingleAxis b V2 n)] -> [N (SingleAxis b V2 n)]
forall a. (a -> Bool) -> [a] -> [a]
filter N (SingleAxis b V2 n) -> Bool
forall {a}. (Ord a, Floating a) => a -> Bool
thetaInRange [N (SingleAxis b V2 n)]
minorGridThetas
  thetaMinorGridLines :: QDiagram b V2 n Any
  thetaMinorGridLines :: QDiagram b V2 n Any
thetaMinorGridLines
    | SingleAxis b V2 n
thetaA SingleAxis b V2 n -> Getting Bool (SingleAxis b V2 n) Bool -> Bool
forall s a. s -> Getting a s a -> a
^. LensLike'
  (Const Bool)
  (SingleAxis b V2 n)
  (MinorGridLines (V (SingleAxis b V2 n)) (N (SingleAxis b V2 n)))
(MinorGridLines V2 n -> Const Bool (MinorGridLines V2 n))
-> SingleAxis b V2 n -> Const Bool (SingleAxis b V2 n)
forall (f :: * -> *) a.
HasMinorGridLines f a =>
LensLike' f a (MinorGridLines (V a) (N a))
minorGridLines ((MinorGridLines V2 n -> Const Bool (MinorGridLines V2 n))
 -> SingleAxis b V2 n -> Const Bool (SingleAxis b V2 n))
-> ((Bool -> Const Bool Bool)
    -> MinorGridLines V2 n -> Const Bool (MinorGridLines V2 n))
-> Getting Bool (SingleAxis b V2 n) Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Bool -> Const Bool Bool)
-> MinorGridLines V2 n -> Const Bool (MinorGridLines V2 n)
forall a. HasVisibility a => Lens' a Bool
Lens' (MinorGridLines V2 n) Bool
hidden = QDiagram b V2 n Any
forall a. Monoid a => a
mempty
    | Bool
otherwise = (N (SingleAxis b V2 n) -> QDiagram b V2 n Any)
-> [N (SingleAxis b V2 n)] -> QDiagram b V2 n Any
forall m a. Monoid m => (a -> m) -> [a] -> m
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
F.foldMap (\N (SingleAxis b V2 n)
phi -> Point V2 n
forall (f :: * -> *) a. (Additive f, Num a) => Point f a
origin Point V2 n -> Point V2 n -> QDiagram b V2 n Any
forall t (v :: * -> *) n.
(V t ~ v, N t ~ n, TrailLike t) =>
Point v n -> Point v n -> t
~~ n -> n -> Point V2 n
forall n. n -> n -> P2 n
mkP2 n
r n
0 QDiagram b V2 n Any
-> (QDiagram b V2 n Any -> QDiagram b V2 n Any)
-> QDiagram b V2 n Any
forall a b. a -> (a -> b) -> b
# Angle (N (SingleAxis b V2 n))
-> QDiagram b V2 n Any -> QDiagram b V2 n Any
forall n t.
(InSpace V2 n t, Transformable t, Floating n) =>
Angle n -> t -> t
rotate (N (SingleAxis b V2 n)
phiN (SingleAxis b V2 n)
-> AReview (Angle (N (SingleAxis b V2 n))) (N (SingleAxis b V2 n))
-> Angle (N (SingleAxis b V2 n))
forall b a. b -> AReview a b -> a
@@AReview (Angle (N (SingleAxis b V2 n))) (N (SingleAxis b V2 n))
forall n (p :: * -> * -> *) (f :: * -> *).
(Profunctor p, Functor f) =>
p n (f n) -> p (Angle n) (f (Angle n))
rad)) [N (SingleAxis b V2 n)]
minorGridThetas'
                    # transform t
                    # applyStyle (thetaA ^. minorGridLinesStyle)
  
  thetaAxTickLabels :: QDiagram b V2 n Any
  thetaAxTickLabels :: QDiagram b V2 n Any
thetaAxTickLabels
    | SingleAxis b V2 n
thetaA SingleAxis b V2 n -> Getting Bool (SingleAxis b V2 n) Bool -> Bool
forall s a. s -> Getting a s a -> a
^. LensLike'
  (Const Bool)
  (SingleAxis b V2 n)
  (TickLabels b (V (SingleAxis b V2 n)) (N (SingleAxis b V2 n)))
(TickLabels b V2 n -> Const Bool (TickLabels b V2 n))
-> SingleAxis b V2 n -> Const Bool (SingleAxis b V2 n)
forall (f :: * -> *) a b.
HasTickLabels f a b =>
LensLike' f a (TickLabels b (V a) (N a))
tickLabel ((TickLabels b V2 n -> Const Bool (TickLabels b V2 n))
 -> SingleAxis b V2 n -> Const Bool (SingleAxis b V2 n))
-> ((Bool -> Const Bool Bool)
    -> TickLabels b V2 n -> Const Bool (TickLabels b V2 n))
-> Getting Bool (SingleAxis b V2 n) Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Bool -> Const Bool Bool)
-> TickLabels b V2 n -> Const Bool (TickLabels b V2 n)
forall a. HasVisibility a => Lens' a Bool
Lens' (TickLabels b V2 n) Bool
hidden = QDiagram b V2 n Any
forall a. Monoid a => a
mempty
    | Bool
otherwise                    = ((n, String) -> QDiagram b V2 n Any)
-> [(n, String)] -> QDiagram b V2 n Any
forall m a. Monoid m => (a -> m) -> [a] -> m
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
F.foldMap (n, String) -> QDiagram b V2 n Any
thetaDrawTickLabel [(n, String)]
tickLabelThetas
  
  tickLabelThetas :: [(n, String)]
  tickLabelThetas :: [(n, String)]
tickLabelThetas = Getting
  ([N (SingleAxis b V2 n)]
   -> (n, N (SingleAxis b V2 n)) -> [(n, String)])
  (SingleAxis b V2 n)
  ([N (SingleAxis b V2 n)]
   -> (n, N (SingleAxis b V2 n)) -> [(n, String)])
-> SingleAxis b V2 n
-> [N (SingleAxis b V2 n)]
-> (n, N (SingleAxis b V2 n))
-> [(n, String)]
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting
  ([N (SingleAxis b V2 n)]
   -> (n, N (SingleAxis b V2 n)) -> [(n, String)])
  (SingleAxis b V2 n)
  ([N (SingleAxis b V2 n)]
   -> (n, N (SingleAxis b V2 n)) -> [(n, String)])
LensLike'
  (Const
     ([N (SingleAxis b V2 n)]
      -> (n, N (SingleAxis b V2 n)) -> [(n, String)]))
  (SingleAxis b V2 n)
  ([N (SingleAxis b V2 n)]
   -> (N (SingleAxis b V2 n), N (SingleAxis b V2 n))
   -> [(N (SingleAxis b V2 n), String)])
forall (f :: * -> *) a b.
(HasTickLabels f a b, Functor f) =>
LensLike' f a ([N a] -> (N a, N a) -> [(N a, String)])
tickLabelFunction SingleAxis b V2 n
thetaA [N (SingleAxis b V2 n)]
majorTickThetas' (n
0,N (SingleAxis b V2 n)
theta)
  
  thetaDrawTickLabel :: (n, String) -> QDiagram b V2 n Any
  thetaDrawTickLabel :: (n, String) -> QDiagram b V2 n Any
thetaDrawTickLabel (n
x,String
label) =
    Getting
  (TextAlignment n -> String -> QDiagram b V2 n Any)
  (SingleAxis b V2 n)
  (TextAlignment n -> String -> QDiagram b V2 n Any)
-> SingleAxis b V2 n
-> TextAlignment n
-> String
-> QDiagram b V2 n Any
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting
  (TextAlignment n -> String -> QDiagram b V2 n Any)
  (SingleAxis b V2 n)
  (TextAlignment n -> String -> QDiagram b V2 n Any)
LensLike'
  (Const (TextAlignment n -> String -> QDiagram b V2 n Any))
  (SingleAxis b V2 n)
  (TextFunction b (V (SingleAxis b V2 n)) (N (SingleAxis b V2 n)))
forall (f :: * -> *) a b.
(HasTickLabels f a b, Functor f) =>
LensLike' f a (TextFunction b (V a) (N a))
tickLabelTextFunction SingleAxis b V2 n
thetaA TextAlignment n
a String
label
      # translate v
      # applyStyle (thetaA ^. tickLabelStyle)
      # fc black
        where v :: V2 n
v = n -> Angle n -> Polar n
forall n. n -> Angle n -> Polar n
mkPolar (n
sn -> n -> n
forall a. Num a => a -> a -> a
*n
r n -> n -> n
forall a. Num a => a -> a -> a
+ Getting n (SingleAxis b V2 n) n -> SingleAxis b V2 n -> n
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting n (SingleAxis b V2 n) n
LensLike' (Const n) (SingleAxis b V2 n) (N (SingleAxis b V2 n))
forall (f :: * -> *) a b.
(HasAxisLabel f a b, Functor f) =>
LensLike' f a (N a)
axisLabelGap SingleAxis b V2 n
thetaA) (n
xn -> AReview (Angle n) n -> Angle n
forall b a. b -> AReview a b -> a
@@AReview (Angle n) n
forall n (p :: * -> * -> *) (f :: * -> *).
(Profunctor p, Functor f) =>
p n (f n) -> p (Angle n) (f (Angle n))
rad) Polar n -> Getting (V2 n) (Polar n) (V2 n) -> V2 n
forall s a. s -> Getting a s a -> a
^. Getting (V2 n) (Polar n) (V2 n)
forall n. RealFloat n => Lens' (Polar n) (V2 n)
Lens' (Polar n) (V2 n)
forall (t :: * -> *) n. (HasY t, RealFloat n) => Lens' (t n) (V2 n)
xy_
              
              a :: TextAlignment n
a = n -> n -> TextAlignment n
forall n. n -> n -> TextAlignment n
BoxAlignedText n
0.5 n
0.5