{-# LANGUAGE CPP #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Diagrams.Backend.Braille.CmdLine (
mainWith
, defaultMain
, multiMain
, Braille
, B
) where
import Diagrams.Backend.CmdLine
import Diagrams.Prelude hiding (height, interval, option,
output, width)
import Diagrams.Backend.Braille
defaultMain :: Diagram B -> IO ()
defaultMain :: Diagram B -> IO ()
defaultMain = Diagram B -> IO ()
forall d. (Mainable d, Parseable (MainOpts d)) => d -> IO ()
mainWith
instance TypeableFloat n => Mainable (QDiagram B V2 n Any) where
type MainOpts (QDiagram B V2 n Any) = DiagramOpts
mainRender :: MainOpts (QDiagram B V2 n Any) -> QDiagram B V2 n Any -> IO ()
mainRender MainOpts (QDiagram B V2 n Any)
opts QDiagram B V2 n Any
d = DiagramOpts -> QDiagram B V2 n Any -> IO ()
forall n.
TypeableFloat n =>
DiagramOpts -> QDiagram B V2 n Any -> IO ()
chooseRender MainOpts (QDiagram B V2 n Any)
DiagramOpts
opts QDiagram B V2 n Any
d
chooseRender :: TypeableFloat n => DiagramOpts -> QDiagram B V2 n Any -> IO ()
chooseRender :: DiagramOpts -> QDiagram B V2 n Any -> IO ()
chooseRender DiagramOpts
opts QDiagram B V2 n Any
d | [Char] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null [Char]
path = [Char] -> IO ()
putStr ([Char] -> IO ()) -> [Char] -> IO ()
forall a b. (a -> b) -> a -> b
$ SizeSpec V2 n -> QDiagram B V2 n Any -> [Char]
forall n m.
(Typeable n, RealFloat n, Monoid m) =>
SizeSpec V2 n -> QDiagram B V2 n m -> [Char]
rasterBraille SizeSpec V2 n
sz QDiagram B V2 n Any
d
| Bool
otherwise = [Char] -> SizeSpec V2 n -> QDiagram B V2 n Any -> IO ()
forall n.
TypeableFloat n =>
[Char] -> SizeSpec V2 n -> QDiagram B V2 n Any -> IO ()
renderBraille [Char]
path SizeSpec V2 n
sz QDiagram B V2 n Any
d
where
path :: [Char]
path = DiagramOpts
optsDiagramOpts -> Getting [Char] DiagramOpts [Char] -> [Char]
forall s a. s -> Getting a s a -> a
^.Getting [Char] DiagramOpts [Char]
Lens' DiagramOpts [Char]
output
sz :: SizeSpec V2 n
sz = Int -> n
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> n) -> SizeSpec V2 Int -> SizeSpec V2 n
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Int -> Maybe Int -> SizeSpec V2 Int
forall n. Num n => Maybe n -> Maybe n -> SizeSpec V2 n
mkSizeSpec2D (DiagramOpts
optsDiagramOpts
-> Getting (Maybe Int) DiagramOpts (Maybe Int) -> Maybe Int
forall s a. s -> Getting a s a -> a
^.Getting (Maybe Int) DiagramOpts (Maybe Int)
Lens' DiagramOpts (Maybe Int)
width) (DiagramOpts
optsDiagramOpts
-> Getting (Maybe Int) DiagramOpts (Maybe Int) -> Maybe Int
forall s a. s -> Getting a s a -> a
^.Getting (Maybe Int) DiagramOpts (Maybe Int)
Lens' DiagramOpts (Maybe Int)
height)
multiMain :: [(String, Diagram B)] -> IO ()
multiMain :: [([Char], Diagram B)] -> IO ()
multiMain = [([Char], Diagram B)] -> IO ()
forall d. (Mainable d, Parseable (MainOpts d)) => d -> IO ()
mainWith
instance TypeableFloat n => Mainable [(String, QDiagram B V2 n Any)] where
type MainOpts [(String, QDiagram B V2 n Any)]
= (MainOpts (QDiagram B V2 n Any), DiagramMultiOpts)
mainRender :: MainOpts [([Char], QDiagram B V2 n Any)]
-> [([Char], QDiagram B V2 n Any)] -> IO ()
mainRender = MainOpts [([Char], QDiagram B V2 n Any)]
-> [([Char], QDiagram B V2 n Any)] -> IO ()
forall d.
Mainable d =>
(MainOpts d, DiagramMultiOpts) -> [([Char], d)] -> IO ()
defaultMultiMainRender