diff --git a/python/port/mod/turtle/turtle.cpp b/python/port/mod/turtle/turtle.cpp index 16a73fb64..a865eeb31 100644 --- a/python/port/mod/turtle/turtle.cpp +++ b/python/port/mod/turtle/turtle.cpp @@ -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; + } } } diff --git a/python/port/mod/turtle/turtle.h b/python/port/mod/turtle/turtle.h index 3c3ec406a..e7b50fb47 100644 --- a/python/port/mod/turtle/turtle.h +++ b/python/port/mod/turtle/turtle.h @@ -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); }