[python/turtle] Clean Turtle::setColor

This commit is contained in:
Léa Saviot
2018-12-12 15:17:31 +01:00
parent 3bd3e64e36
commit 99d71bb0d9
2 changed files with 31 additions and 22 deletions

View File

@@ -146,28 +146,24 @@ void Turtle::setVisible(bool visible) {
}
void Turtle::setColor(const char * color) {
if (strcmp("blue", color) == 0) {
m_color = KDColorBlue;
} else if (strcmp("red", color) == 0) {
m_color = KDColorRed;
} else if (strcmp("green", color) == 0) {
m_color = Palette::Green;
} else if (strcmp("yellow", color) == 0) {
m_color = KDColorYellow;
} else if (strcmp("brown", color) == 0) {
m_color = Palette::Brown;
} else if (strcmp("black", color) == 0) {
m_color = KDColorBlack;
} else if (strcmp("white", color) == 0) {
m_color = KDColorWhite;
} else if (strcmp("pink", color) == 0) {
m_color = Palette::Pink;
} else if (strcmp("orange", color) == 0) {
m_color = Palette::Orange;
} else if (strcmp("purple", color) == 0) {
m_color = Palette::Purple;
} else if (strcmp("grey", color) == 0) {
m_color = Palette::GreyDark;
constexpr NameColorPair pairs[] = {
NameColorPair("blue", KDColorBlue),
NameColorPair("red", KDColorRed),
NameColorPair("green", Palette::Green),
NameColorPair("yellow", KDColorYellow),
NameColorPair("brown", Palette::Brown),
NameColorPair("black", KDColorBlack),
NameColorPair("white", KDColorWhite),
NameColorPair("pink", Palette::Pink),
NameColorPair("orange", Palette::Orange),
NameColorPair("purple", Palette::Purple),
NameColorPair("grey", Palette::GreyDark)
};
for (NameColorPair p : pairs) {
if (strcmp(p.name(), color) == 0) {
m_color = p.color();
return;
}
}
}

View File

@@ -99,6 +99,19 @@ private:
Forward = 4
};
class NameColorPair {
public:
constexpr NameColorPair(const char * name, KDColor color) :
m_name(name),
m_color(color)
{}
const char * name() const { return m_name; }
KDColor color() const { return m_color; }
private:
const char * m_name;
KDColor m_color;
};
void setHeadingPrivate(mp_float_t angle);
KDPoint position(mp_float_t x, mp_float_t y) const;
KDPoint position() const { return position(m_x, m_y); }