module Graphics.Gnuplot.Private.Graph2DType where

import qualified Graphics.Gnuplot.Value.Atom as Atom
import qualified Graphics.Gnuplot.Value.Tuple as Tuple
import Graphics.Gnuplot.Value.Tuple (Label)
import Prelude hiding (lines, )


{- |
The type parameter @x@ is for the values on the X axis,
@y@ of the Y axis and
@a@ is the type of the plotted data.
The type @a@ is a pair in case of points in the plane,
or a more complex tuple in case of error plots and the like.
-}
newtype T x y a = Cons String

tupleSize :: (Tuple.C a) => T x y a -> Tuple.ColumnCount a
tupleSize :: T x y a -> ColumnCount a
tupleSize T x y a
_ = ColumnCount a
forall a. C a => ColumnCount a
Tuple.columnCount


{-
See info:/gnuplot/set_style_rectangle
-}

listLines       :: (Atom.C y) => T Int y y
listPoints      :: (Atom.C y) => T Int y y
listLinesPoints :: (Atom.C y) => T Int y y
listImpulses    :: (Atom.C y) => T Int y y
listDots        :: (Atom.C y) => T Int y y
histograms      :: (Atom.C y) => T Int y y

xErrorBarsRelative   :: (Atom.C x, Atom.C y) => T x y ((x,y),x)
yErrorBarsRelative   :: (Atom.C x, Atom.C y) => T x y ((x,y),y)
xyErrorBarsRelative  :: (Atom.C x, Atom.C y) => T x y ((x,y),(x,y))
xErrorBarsAbsolute   :: (Atom.C x, Atom.C y) => T x y ((x,y),(x,x))
yErrorBarsAbsolute   :: (Atom.C x, Atom.C y) => T x y ((x,y),(y,y))
xyErrorBarsAbsolute  :: (Atom.C x, Atom.C y) => T x y ((x,y),((x,x),(y,y)))

xErrorLinesRelative  :: (Atom.C x, Atom.C y) => T x y ((x,y),x)
yErrorLinesRelative  :: (Atom.C x, Atom.C y) => T x y ((x,y),y)
xyErrorLinesRelative :: (Atom.C x, Atom.C y) => T x y ((x,y),(x,y))
xErrorLinesAbsolute  :: (Atom.C x, Atom.C y) => T x y ((x,y),(x,x))
yErrorLinesAbsolute  :: (Atom.C x, Atom.C y) => T x y ((x,y),(y,y))
xyErrorLinesAbsolute :: (Atom.C x, Atom.C y) => T x y ((x,y),((x,x),(y,y)))

lines          :: (Atom.C x, Atom.C y) => T x y (x,y)
points         :: (Atom.C x, Atom.C y) => T x y (x,y)
linesPoints    :: (Atom.C x, Atom.C y) => T x y (x,y)
impulses       :: (Atom.C x, Atom.C y) => T x y (x,y)
dots           :: (Atom.C x, Atom.C y) => T x y (x,y)
steps          :: (Atom.C x, Atom.C y) => T x y (x,y)
fSteps         :: (Atom.C x, Atom.C y) => T x y (x,y)
hiSteps        :: (Atom.C x, Atom.C y) => T x y (x,y)
errorBars      :: (Atom.C x, Atom.C y) => T x y (x,y)
errorLines     :: (Atom.C x, Atom.C y) => T x y (x,y)
boxes          :: (Atom.C x, Atom.C y) => T x y (x,y)
filledCurves   :: (Atom.C x, Atom.C y) => T x y (x,y)
{-
boxErrorBars   :: (Atom.C x, Atom.C y) => T x y (x,y)
boxXYErrorBars :: (Atom.C x, Atom.C y) => T x y (x,y)
-}
financeBars    :: (Atom.C x, Atom.C y) => T x y (x,(y,y,y,y))
candleSticks   :: (Atom.C x, Atom.C y) => T x y (x,(y,y,y,y))
vectors        :: (Atom.C x, Atom.C y) => T x y ((x,y),(x,y))
image          :: (Atom.C x, Atom.C y, Atom.C z) => T x y ((x, y), z)

filledStripe      :: (Atom.C x, Atom.C y) => T x y (x,(y,y))
filledStripeAbove :: (Atom.C x, Atom.C y) => T x y (x,(y,y))
filledStripeBelow :: (Atom.C x, Atom.C y) => T x y (x,(y,y))

labels          :: (Atom.C x, Atom.C y) => T x y ((x,y),Label)


listLines :: T Int y y
listLines       = String -> T Int y y
forall x y a. String -> T x y a
Cons String
"lines"
listPoints :: T Int y y
listPoints      = String -> T Int y y
forall x y a. String -> T x y a
Cons String
"points"
listLinesPoints :: T Int y y
listLinesPoints = String -> T Int y y
forall x y a. String -> T x y a
Cons String
"linespoints"
listImpulses :: T Int y y
listImpulses    = String -> T Int y y
forall x y a. String -> T x y a
Cons String
"impulses"
listDots :: T Int y y
listDots        = String -> T Int y y
forall x y a. String -> T x y a
Cons String
"dots"
histograms :: T Int y y
histograms      = String -> T Int y y
forall x y a. String -> T x y a
Cons String
"histograms"

xErrorBarsRelative :: T x y ((x, y), x)
xErrorBarsRelative   = String -> T x y ((x, y), x)
forall x y a. String -> T x y a
Cons String
"xerrorbars"
yErrorBarsRelative :: T x y ((x, y), y)
yErrorBarsRelative   = String -> T x y ((x, y), y)
forall x y a. String -> T x y a
Cons String
"yerrorbars"
xyErrorBarsRelative :: T x y ((x, y), (x, y))
xyErrorBarsRelative  = String -> T x y ((x, y), (x, y))
forall x y a. String -> T x y a
Cons String
"xyerrorbars"
xErrorBarsAbsolute :: T x y ((x, y), (x, x))
xErrorBarsAbsolute   = String -> T x y ((x, y), (x, x))
forall x y a. String -> T x y a
Cons String
"xerrorbars"
yErrorBarsAbsolute :: T x y ((x, y), (y, y))
yErrorBarsAbsolute   = String -> T x y ((x, y), (y, y))
forall x y a. String -> T x y a
Cons String
"yerrorbars"
xyErrorBarsAbsolute :: T x y ((x, y), ((x, x), (y, y)))
xyErrorBarsAbsolute  = String -> T x y ((x, y), ((x, x), (y, y)))
forall x y a. String -> T x y a
Cons String
"xyerrorbars"

xErrorLinesRelative :: T x y ((x, y), x)
xErrorLinesRelative  = String -> T x y ((x, y), x)
forall x y a. String -> T x y a
Cons String
"xerrorlines"
yErrorLinesRelative :: T x y ((x, y), y)
yErrorLinesRelative  = String -> T x y ((x, y), y)
forall x y a. String -> T x y a
Cons String
"yerrorlines"
xyErrorLinesRelative :: T x y ((x, y), (x, y))
xyErrorLinesRelative = String -> T x y ((x, y), (x, y))
forall x y a. String -> T x y a
Cons String
"xyerrorlines"
xErrorLinesAbsolute :: T x y ((x, y), (x, x))
xErrorLinesAbsolute  = String -> T x y ((x, y), (x, x))
forall x y a. String -> T x y a
Cons String
"xerrorlines"
yErrorLinesAbsolute :: T x y ((x, y), (y, y))
yErrorLinesAbsolute  = String -> T x y ((x, y), (y, y))
forall x y a. String -> T x y a
Cons String
"yerrorlines"
xyErrorLinesAbsolute :: T x y ((x, y), ((x, x), (y, y)))
xyErrorLinesAbsolute = String -> T x y ((x, y), ((x, x), (y, y)))
forall x y a. String -> T x y a
Cons String
"xyerrorlines"

lines :: T x y (x, y)
lines          = String -> T x y (x, y)
forall x y a. String -> T x y a
Cons String
"lines"
points :: T x y (x, y)
points         = String -> T x y (x, y)
forall x y a. String -> T x y a
Cons String
"points"
linesPoints :: T x y (x, y)
linesPoints    = String -> T x y (x, y)
forall x y a. String -> T x y a
Cons String
"linespoints"
impulses :: T x y (x, y)
impulses       = String -> T x y (x, y)
forall x y a. String -> T x y a
Cons String
"impulses"
dots :: T x y (x, y)
dots           = String -> T x y (x, y)
forall x y a. String -> T x y a
Cons String
"dots"
steps :: T x y (x, y)
steps          = String -> T x y (x, y)
forall x y a. String -> T x y a
Cons String
"steps"
fSteps :: T x y (x, y)
fSteps         = String -> T x y (x, y)
forall x y a. String -> T x y a
Cons String
"fsteps"
hiSteps :: T x y (x, y)
hiSteps        = String -> T x y (x, y)
forall x y a. String -> T x y a
Cons String
"histeps"
errorBars :: T x y (x, y)
errorBars      = String -> T x y (x, y)
forall x y a. String -> T x y a
Cons String
"errorbars"
errorLines :: T x y (x, y)
errorLines     = String -> T x y (x, y)
forall x y a. String -> T x y a
Cons String
"errorlines"
boxes :: T x y (x, y)
boxes          = String -> T x y (x, y)
forall x y a. String -> T x y a
Cons String
"boxes"
filledCurves :: T x y (x, y)
filledCurves   = String -> T x y (x, y)
forall x y a. String -> T x y a
Cons String
"filledcurves"
{-
boxErrorBars   = Cons "boxerrorbars"
boxXYErrorBars = Cons "boxxyerrorbars"
-}
financeBars :: T x y (x, (y, y, y, y))
financeBars    = String -> T x y (x, (y, y, y, y))
forall x y a. String -> T x y a
Cons String
"financebars"
candleSticks :: T x y (x, (y, y, y, y))
candleSticks   = String -> T x y (x, (y, y, y, y))
forall x y a. String -> T x y a
Cons String
"candlesticks"
vectors :: T x y ((x, y), (x, y))
vectors        = String -> T x y ((x, y), (x, y))
forall x y a. String -> T x y a
Cons String
"vectors"
image :: T x y ((x, y), z)
image          = String -> T x y ((x, y), z)
forall x y a. String -> T x y a
Cons String
"image"

filledStripe :: T x y (x, (y, y))
filledStripe      = String -> T x y (x, (y, y))
forall x y a. String -> T x y a
Cons String
"filledcurves"
filledStripeAbove :: T x y (x, (y, y))
filledStripeAbove = String -> T x y (x, (y, y))
forall x y a. String -> T x y a
Cons String
"filledcurves above"
filledStripeBelow :: T x y (x, (y, y))
filledStripeBelow = String -> T x y (x, (y, y))
forall x y a. String -> T x y a
Cons String
"filledcurves below"

labels :: T x y ((x, y), Label)
labels       = String -> T x y ((x, y), Label)
forall x y a. String -> T x y a
Cons String
"labels"


toString :: T x y a -> String
toString :: T x y a -> String
toString (Cons String
t) = String
t