{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE TemplateHaskell #-}
module Plots.Name where
import Control.Lens
import Data.Ord (comparing)
import Data.Function
import Data.Typeable
import Diagrams.Core.Names
import Diagrams.Prelude hiding (view)
data PlotName n = PlotName
{ _plotName :: String
, _namedSize2D :: SizeSpec V2 n
, _namedT2 :: T2 n
} deriving Typeable
makeLenses ''PlotName
instance Show (PlotName n) where
show pn = "Plot: " ++ view plotName pn
instance Eq (PlotName n) where
(==) = on (==) (view plotName)
instance Ord (PlotName n) where
compare = comparing (view plotName)
instance Typeable n => IsName (PlotName n)