From 0c2e7ce8e841d149b18a30fad6a04525a121833b Mon Sep 17 00:00:00 2001 From: Jakob Odersky Date: Tue, 6 Nov 2012 11:43:23 +0100 Subject: refactor style package structure --- src/main/scala/scalam/plotting/Plot.scala | 1 - src/main/scala/scalam/plotting/color/colors.scala | 24 ++++++++++++++++++++ src/main/scala/scalam/plotting/color/styles.scala | 19 ++++++++++++++++ src/main/scala/scalam/plotting/line/lines.scala | 14 ++++++++++++ .../scala/scalam/plotting/marker/markers.scala | 22 ++++++++++++++++++ src/main/scala/scalam/plotting/marker/styles.scala | 16 +++++++++++++ src/main/scala/scalam/plotting/styles.scala | 18 +++++++++++++++ .../scalam/plotting/styles/color/colors.scala | 26 ---------------------- .../scalam/plotting/styles/color/styles.scala | 20 ----------------- .../scala/scalam/plotting/styles/line/lines.scala | 14 ------------ .../scalam/plotting/styles/marker/markers.scala | 24 -------------------- .../scalam/plotting/styles/marker/styles.scala | 17 -------------- src/main/scala/scalam/plotting/styles/styles.scala | 20 ----------------- 13 files changed, 113 insertions(+), 122 deletions(-) create mode 100644 src/main/scala/scalam/plotting/color/colors.scala create mode 100644 src/main/scala/scalam/plotting/color/styles.scala create mode 100644 src/main/scala/scalam/plotting/line/lines.scala create mode 100644 src/main/scala/scalam/plotting/marker/markers.scala create mode 100644 src/main/scala/scalam/plotting/marker/styles.scala create mode 100644 src/main/scala/scalam/plotting/styles.scala delete mode 100644 src/main/scala/scalam/plotting/styles/color/colors.scala delete mode 100644 src/main/scala/scalam/plotting/styles/color/styles.scala delete mode 100644 src/main/scala/scalam/plotting/styles/line/lines.scala delete mode 100644 src/main/scala/scalam/plotting/styles/marker/markers.scala delete mode 100644 src/main/scala/scalam/plotting/styles/marker/styles.scala delete mode 100644 src/main/scala/scalam/plotting/styles/styles.scala diff --git a/src/main/scala/scalam/plotting/Plot.scala b/src/main/scala/scalam/plotting/Plot.scala index 8b4a562..dd60689 100644 --- a/src/main/scala/scalam/plotting/Plot.scala +++ b/src/main/scala/scalam/plotting/Plot.scala @@ -3,7 +3,6 @@ package scalam.plotting import scala.sys.process._ import scalam.m.ast._ import scalax.file.Path -import scalam.plotting.styles._ import scala.collection.mutable.Map import scala.collection.mutable.ListBuffer import scalam.io.Saveable diff --git a/src/main/scala/scalam/plotting/color/colors.scala b/src/main/scala/scalam/plotting/color/colors.scala new file mode 100644 index 0000000..d44fe70 --- /dev/null +++ b/src/main/scala/scalam/plotting/color/colors.scala @@ -0,0 +1,24 @@ +package scalam.plotting.color + +import scalam.m.ast._ +import scalam.plotting.StyleElement + +trait Color extends StyleElement { + def name = StringLiteral("Color") +} + +class RGB(r: Double, g: Double, b: Double) extends Color { + def expression = ArrayLiteral(DoubleLiteral(r), DoubleLiteral(g), DoubleLiteral(b)) +} + +class LiteralColor(value: String) extends Color { + def expression = StringLiteral(value) +} + +case object Red extends LiteralColor("r") +case object Green extends LiteralColor("g") +case object Blue extends LiteralColor("b") +case object Magenta extends LiteralColor("m") +case object Cyan extends LiteralColor("c") +case object Yellow extends LiteralColor("y") +case object Black extends LiteralColor("k") \ No newline at end of file diff --git a/src/main/scala/scalam/plotting/color/styles.scala b/src/main/scala/scalam/plotting/color/styles.scala new file mode 100644 index 0000000..4a82310 --- /dev/null +++ b/src/main/scala/scalam/plotting/color/styles.scala @@ -0,0 +1,19 @@ +package scalam.plotting.color + +import scalam.m.ast._ +import scalam.plotting.DataSet +import scalam.plotting.Style + +class MColorStyle(val function: Identifier) extends Style[Color] { + private val ColorVariable = Identifier("cc") + + private def initial(dataSets: Seq[DataSet]) = Seq(Assign(ColorVariable, Function(function, IntLiteral(dataSets.length)))) + private def map(dataSets: Iterable[DataSet]) = (for ((d, i) <- dataSets.zipWithIndex) yield d -> new Color { + def expression = IndexMatrix(ColorVariable, IntLiteral(i + 1), SliceLiteral) + }).toMap + + override def apply(dataSets: Seq[DataSet]) = (initial(dataSets), map(dataSets)) +} + +object HSV extends MColorStyle(Identifier("hsv")) +object JET extends MColorStyle(Identifier("jet")) \ No newline at end of file diff --git a/src/main/scala/scalam/plotting/line/lines.scala b/src/main/scala/scalam/plotting/line/lines.scala new file mode 100644 index 0000000..340ebd1 --- /dev/null +++ b/src/main/scala/scalam/plotting/line/lines.scala @@ -0,0 +1,14 @@ +package scalam.plotting.line + +import scalam.m.ast._ +import scalam.plotting.StyleElement + +trait Line extends StyleElement { + val name = StringLiteral("LineStyle") +} + +case object Solid extends Line {def expression = StringLiteral("-")} +case object Dashed extends Line {def expression = StringLiteral("--")} +case object Dotted extends Line {def expression = StringLiteral(":")} +case object DashDot extends Line {def expression = StringLiteral("-.")} +case object NoLine extends Line {def expression = StringLiteral("none")} \ No newline at end of file diff --git a/src/main/scala/scalam/plotting/marker/markers.scala b/src/main/scala/scalam/plotting/marker/markers.scala new file mode 100644 index 0000000..6b1da8c --- /dev/null +++ b/src/main/scala/scalam/plotting/marker/markers.scala @@ -0,0 +1,22 @@ +package scalam.plotting.marker + +import scalam.m.ast._ +import scalam.plotting.StyleElement + +trait Marker extends StyleElement { + def name = StringLiteral("Marker") +} +case object Plus extends Marker { def expression = StringLiteral("+") } +case object Circle extends Marker { def expression = StringLiteral("o") } +case object Asterisk extends Marker { def expression = StringLiteral("*") } +case object Point extends Marker { def expression = StringLiteral(".") } +case object Cross extends Marker { def expression = StringLiteral("x") } +case object Square extends Marker { def expression = StringLiteral("s") } +case object Diamond extends Marker { def expression = StringLiteral("d") } +case object UpTriangle extends Marker { def expression = StringLiteral("^") } +case object DownTriangle extends Marker { def expression = StringLiteral("v") } +case object RightTriangle extends Marker { def expression = StringLiteral(">") } +case object LeftTriangle extends Marker { def expression = StringLiteral("<") } +case object Pentagram extends Marker { def expression = StringLiteral("p") } +case object Hexagram extends Marker { def expression = StringLiteral("h") } +case object NoMarker extends Marker { def expression = StringLiteral("none") } \ No newline at end of file diff --git a/src/main/scala/scalam/plotting/marker/styles.scala b/src/main/scala/scalam/plotting/marker/styles.scala new file mode 100644 index 0000000..9dcc89b --- /dev/null +++ b/src/main/scala/scalam/plotting/marker/styles.scala @@ -0,0 +1,16 @@ +package scalam.plotting.marker + +import scalam.plotting.DataSet +import scalam.m.ast._ +import scalam.plotting.Style + +object AllMarkerStyle extends Style[Marker] { + + val markers = List(Plus, Circle, Asterisk, Point, Cross, Square, Diamond, UpTriangle, DownTriangle, RightTriangle, LeftTriangle, Pentagram, Hexagram) + private def map(dataSets: Iterable[DataSet]): Map[DataSet, Marker] = dataSets.zipWithIndex.map{ + case (d, i) => d -> markers(i % (markers.length-1)) + }.toMap + + def apply(dataSets: Seq[DataSet]) = (Seq.empty[Root], map(dataSets)) + +} \ No newline at end of file diff --git a/src/main/scala/scalam/plotting/styles.scala b/src/main/scala/scalam/plotting/styles.scala new file mode 100644 index 0000000..951fdae --- /dev/null +++ b/src/main/scala/scalam/plotting/styles.scala @@ -0,0 +1,18 @@ +package scalam.plotting + +import scalam.m.ast._ + +trait StyleElement { + //command line option + def name: Expression + //expression + def expression: Expression +} + +trait Style[+S <: StyleElement] { + def apply(dataSets: Seq[DataSet]): (Seq[Root], DataSet => S) +} + +case class Uniform[S <: StyleElement](element: S) extends Style[S] { + override def apply(dataSets: Seq[DataSet]) = (Seq.empty[Statement], (d: DataSet) => element) +} \ No newline at end of file diff --git a/src/main/scala/scalam/plotting/styles/color/colors.scala b/src/main/scala/scalam/plotting/styles/color/colors.scala deleted file mode 100644 index 58fcd29..0000000 --- a/src/main/scala/scalam/plotting/styles/color/colors.scala +++ /dev/null @@ -1,26 +0,0 @@ -package scalam.plotting.styles.color - -import scalam.m.ast._ -import scalam.plotting.DataSet -import scalam.plotting.styles.Style -import scalam.plotting.styles.StyleElement - -trait Color extends StyleElement { - def name = StringLiteral("Color") -} - -class RGB(r: Double, g: Double, b: Double) extends Color { - def expression = ArrayLiteral(DoubleLiteral(r), DoubleLiteral(g), DoubleLiteral(b)) -} - -class LiteralColor(value: String) extends Color { - def expression = StringLiteral(value) -} - -case object Red extends LiteralColor("r") -case object Green extends LiteralColor("g") -case object Blue extends LiteralColor("b") -case object Magenta extends LiteralColor("m") -case object Cyan extends LiteralColor("c") -case object Yellow extends LiteralColor("y") -case object Black extends LiteralColor("k") \ No newline at end of file diff --git a/src/main/scala/scalam/plotting/styles/color/styles.scala b/src/main/scala/scalam/plotting/styles/color/styles.scala deleted file mode 100644 index a70d5e7..0000000 --- a/src/main/scala/scalam/plotting/styles/color/styles.scala +++ /dev/null @@ -1,20 +0,0 @@ -package scalam.plotting.styles.color - -import scalam.m.ast._ -import scalam.plotting.DataSet -import scalam.plotting.styles.Style -import scalam.plotting.styles.StyleElement - -class MColorStyle(val function: Identifier) extends Style[Color] { - private val ColorVariable = Identifier("cc") - - private def initial(dataSets: Seq[DataSet]) = Seq(Assign(ColorVariable, Function(function, IntLiteral(dataSets.length)))) - private def map(dataSets: Iterable[DataSet]) = (for ((d, i) <- dataSets.zipWithIndex) yield d -> new Color { - def expression = IndexMatrix(ColorVariable, IntLiteral(i + 1), SliceLiteral) - }).toMap - - override def apply(dataSets: Seq[DataSet]) = (initial(dataSets), map(dataSets)) -} - -object HSV extends MColorStyle(Identifier("hsv")) -object JET extends MColorStyle(Identifier("jet")) \ No newline at end of file diff --git a/src/main/scala/scalam/plotting/styles/line/lines.scala b/src/main/scala/scalam/plotting/styles/line/lines.scala deleted file mode 100644 index f0bc24a..0000000 --- a/src/main/scala/scalam/plotting/styles/line/lines.scala +++ /dev/null @@ -1,14 +0,0 @@ -package scalam.plotting.styles.line - -import scalam.m.ast._ -import scalam.plotting.styles.StyleElement - -trait Line extends StyleElement { - val name = StringLiteral("LineStyle") -} - -case object Solid extends Line {def expression = StringLiteral("-")} -case object Dashed extends Line {def expression = StringLiteral("--")} -case object Dotted extends Line {def expression = StringLiteral(":")} -case object DashDot extends Line {def expression = StringLiteral("-.")} -case object NoLine extends Line {def expression = StringLiteral("none")} \ No newline at end of file diff --git a/src/main/scala/scalam/plotting/styles/marker/markers.scala b/src/main/scala/scalam/plotting/styles/marker/markers.scala deleted file mode 100644 index 81ed1fa..0000000 --- a/src/main/scala/scalam/plotting/styles/marker/markers.scala +++ /dev/null @@ -1,24 +0,0 @@ -package scalam.plotting.styles.marker - -import scalam.plotting.DataSet -import scalam.m.ast._ -import scalam.plotting.styles.Style -import scalam.plotting.styles.StyleElement - -trait Marker extends StyleElement { - def name = StringLiteral("Marker") -} -case object Plus extends Marker { def expression = StringLiteral("+") } -case object Circle extends Marker { def expression = StringLiteral("o") } -case object Asterisk extends Marker { def expression = StringLiteral("*") } -case object Point extends Marker { def expression = StringLiteral(".") } -case object Cross extends Marker { def expression = StringLiteral("x") } -case object Square extends Marker { def expression = StringLiteral("s") } -case object Diamond extends Marker { def expression = StringLiteral("d") } -case object UpTriangle extends Marker { def expression = StringLiteral("^") } -case object DownTriangle extends Marker { def expression = StringLiteral("v") } -case object RightTriangle extends Marker { def expression = StringLiteral(">") } -case object LeftTriangle extends Marker { def expression = StringLiteral("<") } -case object Pentagram extends Marker { def expression = StringLiteral("p") } -case object Hexagram extends Marker { def expression = StringLiteral("h") } -case object NoMarker extends Marker { def expression = StringLiteral("none") } \ No newline at end of file diff --git a/src/main/scala/scalam/plotting/styles/marker/styles.scala b/src/main/scala/scalam/plotting/styles/marker/styles.scala deleted file mode 100644 index 9e80d99..0000000 --- a/src/main/scala/scalam/plotting/styles/marker/styles.scala +++ /dev/null @@ -1,17 +0,0 @@ -package scalam.plotting.styles.marker - -import scalam.plotting.DataSet -import scalam.m.ast._ -import scalam.plotting.styles.Style -import scalam.plotting.styles.StyleElement - -object AllMarkerStyle extends Style[Marker] { - - val markers = List(Plus, Circle, Asterisk, Point, Cross, Square, Diamond, UpTriangle, DownTriangle, RightTriangle, LeftTriangle, Pentagram, Hexagram) - private def map(dataSets: Iterable[DataSet]): Map[DataSet, Marker] = dataSets.zipWithIndex.map{ - case (d, i) => d -> markers(i % (markers.length-1)) - }.toMap - - def apply(dataSets: Seq[DataSet]) = (Seq.empty[Statement], map(dataSets)) - -} \ No newline at end of file diff --git a/src/main/scala/scalam/plotting/styles/styles.scala b/src/main/scala/scalam/plotting/styles/styles.scala deleted file mode 100644 index e7d59fc..0000000 --- a/src/main/scala/scalam/plotting/styles/styles.scala +++ /dev/null @@ -1,20 +0,0 @@ -package scalam.plotting.styles - -import scalam.plotting.DataSet -import scalam.m.ast._ - - -trait StyleElement { - //command line option - def name: Expression - //expression - def expression: Expression -} - -trait Style[+S <: StyleElement] { - def apply(dataSets: Seq[DataSet]): Tuple2[Seq[Root], DataSet => S] -} - -case class Uniform[S <: StyleElement](element: S) extends Style[S] { - override def apply(dataSets: Seq[DataSet]) = (Seq.empty[Statement], (d: DataSet) => element) -} \ No newline at end of file -- cgit v1.2.3