summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Vazquez <christian.vazquez@epfl.ch>2011-05-27 18:56:22 +0000
committerChristian Vazquez <christian.vazquez@epfl.ch>2011-05-27 18:56:22 +0000
commit3fb4ef9717f52398d6a731ffe637815ed37b45ab (patch)
treeab65466ee6380e042995ddc4371c35a7f9c57608
parent1f6a3a16a53342e3885d1d16198bbe18aa1383ab (diff)
downloadvhc-3fb4ef9717f52398d6a731ffe637815ed37b45ab.tar.gz
vhc-3fb4ef9717f52398d6a731ffe637815ed37b45ab.tar.bz2
vhc-3fb4ef9717f52398d6a731ffe637815ed37b45ab.zip
Créé la classe Color. A voir si on en fait hériter quelques classes filles de Printable (p.ex. les Particles) ...
-rw-r--r--src/main/Color.cc113
-rw-r--r--src/main/Color.h56
2 files changed, 169 insertions, 0 deletions
diff --git a/src/main/Color.cc b/src/main/Color.cc
new file mode 100644
index 0000000..91b94d0
--- /dev/null
+++ b/src/main/Color.cc
@@ -0,0 +1,113 @@
+/*
+ * Color.cc
+ *
+ * Created on: 27 mai 2011
+ * Author: christian
+ */
+
+#include "Color.h"
+
+namespace vhc {
+
+static double Color::red[4] = {1.0,0.0,0.0,1.0};
+static double Color::green[4] = {0.0,1.0,0.0,1.0};
+static double Color::blue[4] = {0.0,0.0,1.0,1.0};
+static double Color::turquoise[4] = {0.0,1.0,1.0,1.0};
+static double Color::purple[4] = {1.0,0.0,1.0,1.0};
+static double Color::yellow[4] = {1.0,1.0,0.0,1.0};
+static double Color::white[4] = {1.0,1.0,1.0,1.0};
+static double Color::black[4] = {0.0,0.0,0.0,1.0};
+static double Color::grey[4] = {0.6,0.6,0.6,1.0};
+
+vector<double> Color::convertTabToVector(double const& tab[4]) {
+ vector <double> tmp;
+ for (unsigned int i(0); i < 4; ++i) {
+ tmp.push_back(tab[i]);
+ }
+ return tmp;
+}
+
+Color::setColor(vector<double> const& co){
+ color = co;
+}
+
+Color::setColor(string co) const {
+
+ switch(co){
+ case "red" :
+ color = convertTabToVector(red[4]);
+ break;
+ case "green" :
+ color = convertTabToVector(green[4]);
+ break;
+ case "blue" :
+ color = convertTabToVector(blue[4]);
+ break;
+ case "turquoise" :
+ color = convertTabToVector(turquoise[4]);
+ break;
+ case "purple" :
+ color = convertTabToVector(purple[4]);
+ break;
+ case "yellow" :
+ color = convertTabToVector(yellow[4]);
+ break;
+ case "white" :
+ color = convertTabToVector(white[4]);
+ break;
+ case "black" :
+ color = convertTabToVector(black[4]);
+ break;
+ case "grey" :
+ color = convertTabToVector(grey[4]);
+ break;
+ default:
+ throw IllegalArgumentException("Color is not defined.");
+ }
+}
+
+Color::getColor() const {
+ return color;
+}
+
+Color::getStringColor() const {
+
+ string tmp;
+
+ switch(color){
+ case convertTabToVector(red) :
+ tmp="red";
+ break;
+ case convertTabToVector(green) :
+ tmp="green";
+ break;
+ case convertTabToVector(blue) :
+ tmp="blue";
+ break;
+ case convertTabToVector(turquoise) :
+ break;
+ tmp="turquoise";
+ case convertTabToVector(purple) :
+ tmp="purple";
+ break;
+ case convertTabToVector(yellow) :
+ tmp="yellow";
+ break;
+ case convertTabToVector(white) :
+ tmp="white";
+ break;
+ case convertTabToVector(black) :
+ tmp="black";
+ break;
+ case convertTabToVector(grey) :
+ tmp="grey";
+ break;
+ default :
+ tmp="No valid color.";
+ break;
+ }
+
+ return tmp;
+}
+
+}
diff --git a/src/main/Color.h b/src/main/Color.h
new file mode 100644
index 0000000..fa0f05e
--- /dev/null
+++ b/src/main/Color.h
@@ -0,0 +1,56 @@
+/*
+ * Color.h
+ *
+ * Created on: 27 mai 2011
+ * Author: christian
+ */
+
+#ifndef COLOR_H_
+#define COLOR_H_
+#include <string>
+#include <vector>
+#include "exceptions.h"
+
+namespace vhc {
+
+/** Représente un objet coloré de couleurs suivantes :
+ * rouge, vert, bleu, turquoise, violet, jaune, blanc, noir et gris.
+ * <b>ATTENTION<\b> : la méthode <code>setColor(string color = "white")<\code> lance une exception si la couleur n'est pas reconnue.
+ **/
+
+class Color {
+public:
+ Color() {}
+ virtual ~Color() {}
+
+ /** Retourne (sous forme de vector<double>) la couleur de cet objet. **/
+ vector<double> getColor() const;
+
+ /** Retourne (sous forme de string) la couleur de cet objet. **/
+ string getStringColor() const;
+
+ /** Affecte la couleur de l'objet selon l'argument de la fonction.(Ici un string) **/
+ void setColor(string color = "white");
+
+ /** Affecte la couleur de l'objet selon l'argument de la fonction
+ * (Ici un vector, donc à appeler si on souhaite utiliser d'autres couleurs que celles de la classe Color.) **/
+ void setColor(vector<double> const& co);
+
+protected:
+ vector<double> color;
+private:
+ vector<double> convertTabToVector(double const& tab[4]);
+ static double red[4];
+ static double green[4];
+ static double blue[4];
+ static double turquoise[4];
+ static double purple[4];
+ static double yellow[4];
+ static double white[4];
+ static double black[4];
+ static double grey[4];
+};
+
+}
+
+#endif /* COLOR_H_ */