aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/scalam/charting/colorSchemes.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/scalam/charting/colorSchemes.scala')
-rw-r--r--src/main/scala/scalam/charting/colorSchemes.scala50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/main/scala/scalam/charting/colorSchemes.scala b/src/main/scala/scalam/charting/colorSchemes.scala
new file mode 100644
index 0000000..62c1d39
--- /dev/null
+++ b/src/main/scala/scalam/charting/colorSchemes.scala
@@ -0,0 +1,50 @@
+package scalam.charting
+
+import scalam.DataSet
+
+trait ColorScheme {
+ def color(dataSet: DataSet): String
+}
+
+trait ColorSchemeFactory[C <: ColorScheme] {
+ def create(dataSets: Seq[DataSet]): C
+}
+
+trait MatlabColorScheme extends ColorScheme {
+ private final val ColorVariableName = "cc"
+
+ protected val dataSets: Seq[DataSet]
+ protected val function: String
+ private val indices: Map[DataSet, Int] = dataSets.zipWithIndex.toMap
+
+ def initial = {
+ ColorVariableName + " = " + function + "(" + dataSets.length + ");"
+ }
+
+ def color(dataSet: DataSet) = ColorVariableName + "(" + (indices(dataSet) + 1) + ",:)"
+}
+
+case class Uniform(rgb: (Double, Double, Double) = (0, 0, 0)) extends ColorScheme {
+ private val (r, g, b) = rgb
+ def color(dataSet: DataSet) = "[" + r + "," + g + "," + b + "]"
+}
+
+class HSV(protected val dataSets: Seq[DataSet]) extends MatlabColorScheme {val function = "hsv"}
+object HSV extends ColorSchemeFactory[HSV] {def create(dataSets: Seq[DataSet]) = new HSV(dataSets)}
+class JET(protected val dataSets: Seq[DataSet]) extends MatlabColorScheme {val function = "hsv"}
+object JET extends ColorSchemeFactory[JET] {def create(dataSets: Seq[DataSet]) = new JET(dataSets)}
+
+trait Special extends ColorScheme {
+ val specialDataSet: DataSet
+ val rgb: (Double, Double, Double)
+
+ private val (r, g, b) = rgb
+
+ abstract override def color(dataSet: DataSet): String =
+ if (dataSet == specialDataSet) "[" + r + "," + g + "," + b + "]"
+ else super.color(dataSet)
+}
+
+//abstract class Special(val specialDataSet: DataSet, val rgb: (Double, Double, Double)) extends SpecialImpl
+
+