[python] Change names: ColorParse::ParseColor --> Color::Parse

This commit is contained in:
Émilie Feral
2020-05-15 15:26:47 +02:00
parent 5aaa6723d0
commit 273d10dc26
5 changed files with 47 additions and 48 deletions

View File

@@ -31,7 +31,7 @@ mp_obj_t modkandinsky_color(size_t n_args, const mp_obj_t *args) {
assert(n_args == 3);
color = mp_obj_new_tuple(n_args, args);
}
return TupleForKDColor(MicroPython::ColorParser::ParseColor(color));
return TupleForKDColor(MicroPython::Color::Parse(color));
}
/* Calling ExecutionEnvironment::displaySandbox() hides the console and switches
@@ -48,7 +48,7 @@ mp_obj_t modkandinsky_get_pixel(mp_obj_t x, mp_obj_t y) {
mp_obj_t modkandinsky_set_pixel(mp_obj_t x, mp_obj_t y, mp_obj_t input) {
KDPoint point(mp_obj_get_int(x), mp_obj_get_int(y));
KDColor kdColor = MicroPython::ColorParser::ParseColor(input);
KDColor kdColor = MicroPython::Color::Parse(input);
MicroPython::ExecutionEnvironment::currentExecutionEnvironment()->displaySandbox();
KDIonContext::sharedContext()->setPixel(point, kdColor);
return mp_const_none;
@@ -58,8 +58,8 @@ mp_obj_t modkandinsky_set_pixel(mp_obj_t x, mp_obj_t y, mp_obj_t input) {
mp_obj_t modkandinsky_draw_string(size_t n_args, const mp_obj_t * args) {
const char * text = mp_obj_str_get_str(args[0]);
KDPoint point(mp_obj_get_int(args[1]), mp_obj_get_int(args[2]));
KDColor textColor = (n_args >= 4) ? MicroPython::ColorParser::ParseColor(args[3]) : KDColorBlack;
KDColor backgroundColor = (n_args >= 5) ? MicroPython::ColorParser::ParseColor(args[4]) : KDColorWhite;
KDColor textColor = (n_args >= 4) ? MicroPython::Color::Parse(args[3]) : KDColorBlack;
KDColor backgroundColor = (n_args >= 5) ? MicroPython::Color::Parse(args[4]) : KDColorWhite;
MicroPython::ExecutionEnvironment::currentExecutionEnvironment()->displaySandbox();
KDIonContext::sharedContext()->drawString(text, point, KDFont::LargeFont, textColor, backgroundColor);
/* Before and after execution of "modkandinsky_draw_string",
@@ -89,7 +89,7 @@ mp_obj_t modkandinsky_fill_rect(size_t n_args, const mp_obj_t * args) {
y = y - height;
}
KDRect rect(x, y, width, height);
KDColor color = MicroPython::ColorParser::ParseColor(args[4]);
KDColor color = MicroPython::Color::Parse(args[4]);
MicroPython::ExecutionEnvironment::currentExecutionEnvironment()->displaySandbox();
KDIonContext::sharedContext()->fillRect(rect, color);
// Cf comment on modkandinsky_draw_string

View File

@@ -139,7 +139,7 @@ mp_obj_t modturtle_pencolor(size_t n_args, const mp_obj_t *args) {
// pencolor()
KDColor c = sTurtle.color();
mp_obj_t mp_col[3];
if(sTurtle.colorMode() == MicroPython::ColorParser::ColorMode::MaxIntensity255){
if(sTurtle.colorMode() == MicroPython::Color::Mode::MaxIntensity255){
mp_col[0] = mp_obj_new_int_from_uint(c.red());
mp_col[1] = mp_obj_new_int_from_uint(c.green());
mp_col[2] = mp_obj_new_int_from_uint(c.blue());
@@ -161,7 +161,7 @@ mp_obj_t modturtle_pencolor(size_t n_args, const mp_obj_t *args) {
assert(n_args == 3);
color = mp_obj_new_tuple(n_args, args);
}
sTurtle.setColor(MicroPython::ColorParser::ParseColor(color, sTurtle.colorMode()));
sTurtle.setColor(MicroPython::Color::Parse(color, sTurtle.colorMode()));
return mp_const_none;
}
@@ -170,12 +170,12 @@ mp_obj_t modturtle_colormode(size_t n_args, const mp_obj_t *args) {
return mp_obj_new_int_from_uint(static_cast<int>(sTurtle.colorMode()));
} else{
int colorMode = mp_obj_get_int(args[0]);
if (colorMode != static_cast<int>(MicroPython::ColorParser::ColorMode::MaxIntensity1) &&
colorMode != static_cast<int>(MicroPython::ColorParser::ColorMode::MaxIntensity255)) {
if (colorMode != static_cast<int>(MicroPython::Color::Mode::MaxIntensity1) &&
colorMode != static_cast<int>(MicroPython::Color::Mode::MaxIntensity255)) {
mp_raise_ValueError("Colormode can be 1 or 255");
return mp_const_none;
}
sTurtle.setColorMode(static_cast<MicroPython::ColorParser::ColorMode>(colorMode));
sTurtle.setColorMode(static_cast<MicroPython::Color::Mode>(colorMode));
return mp_const_none;
}
}

View File

@@ -30,7 +30,7 @@ public:
m_y(0),
m_heading(0),
m_color(k_defaultColor),
m_colorMode(MicroPython::ColorParser::ColorMode::MaxIntensity255),
m_colorMode(MicroPython::Color::Mode::MaxIntensity255),
m_penDown(true),
m_visible(true),
m_speed(k_defaultSpeed),
@@ -73,8 +73,8 @@ public:
void setColor(uint8_t r, uint8_t g, uint8_t b) {
m_color = KDColor::RGB888(r, g, b);
}
MicroPython::ColorParser::ColorMode colorMode() const {return m_colorMode; }
void setColorMode(MicroPython::ColorParser::ColorMode colorMode){
MicroPython::Color::Mode colorMode() const {return m_colorMode; }
void setColorMode(MicroPython::Color::Mode colorMode){
m_colorMode = colorMode;
}
@@ -141,7 +141,7 @@ private:
mp_float_t m_heading;
KDColor m_color;
MicroPython::ColorParser::ColorMode m_colorMode;
MicroPython::Color::Mode m_colorMode;
bool m_penDown;
bool m_visible;

View File

@@ -179,32 +179,32 @@ void MicroPython::collectRootsAtAddress(char * address, int byteLength) {
gc_collect_root((void **)alignedAddress, byteLength / sizeof(uintptr_t));
}
KDColor MicroPython::ColorParser::ParseColor(mp_obj_t input, ColorMode ColorMode){
static constexpr int maxColorIntensity = static_cast<int>(ColorMode::MaxIntensity255);
KDColor MicroPython::Color::Parse(mp_obj_t input, Mode mode){
static constexpr int maxColorIntensity = static_cast<int>(Mode::MaxIntensity255);
if (mp_obj_is_str(input)) {
size_t l;
const char * color = mp_obj_str_get_data(input, &l);
// TODO add cyan
constexpr NameColorPair pairs[] = {
NameColorPair("blue", KDColorBlue),
NameColorPair("b", KDColorBlue),
NameColorPair("red", KDColorRed),
NameColorPair("r", KDColorRed),
NameColorPair("green", Palette::Green),
NameColorPair("g", Palette::Green),
NameColorPair("yellow", KDColorYellow),
NameColorPair("y", KDColorYellow),
NameColorPair("brown", Palette::Brown),
NameColorPair("black", KDColorBlack),
NameColorPair("k", KDColorBlack),
NameColorPair("white", KDColorWhite),
NameColorPair("w", KDColorWhite),
NameColorPair("pink", Palette::Pink),
NameColorPair("orange", Palette::Orange),
NameColorPair("purple", Palette::Purple),
NameColorPair("grey", Palette::GreyDark)
constexpr NamedColor pairs[] = {
NamedColor("blue", KDColorBlue),
NamedColor("b", KDColorBlue),
NamedColor("red", KDColorRed),
NamedColor("r", KDColorRed),
NamedColor("green", Palette::Green),
NamedColor("g", Palette::Green),
NamedColor("yellow", KDColorYellow),
NamedColor("y", KDColorYellow),
NamedColor("brown", Palette::Brown),
NamedColor("black", KDColorBlack),
NamedColor("k", KDColorBlack),
NamedColor("white", KDColorWhite),
NamedColor("w", KDColorWhite),
NamedColor("pink", Palette::Pink),
NamedColor("orange", Palette::Orange),
NamedColor("purple", Palette::Purple),
NamedColor("grey", Palette::GreyDark)
};
for (NameColorPair p : pairs) {
for (NamedColor p : pairs) {
if (strcmp(p.name(), color) == 0) {
return p.color();
}
@@ -237,7 +237,7 @@ KDColor MicroPython::ColorParser::ParseColor(mp_obj_t input, ColorMode ColorMode
if (len != 3) {
mp_raise_TypeError("Color needs 3 components");
}
int intensityFactor = maxColorIntensity/static_cast<int>(ColorMode);
int intensityFactor = maxColorIntensity/static_cast<int>(mode);
return KDColor::RGB888(
intensityFactor * mp_obj_get_float(elem[0]),
intensityFactor * mp_obj_get_float(elem[1]),

View File

@@ -42,11 +42,18 @@ void deinit();
void registerScriptProvider(ScriptProvider * s);
void collectRootsAtAddress(char * address, int len);
class ColorParser {
private:
class NameColorPair {
class Color {
public:
enum class Mode {
MaxIntensity1 = 1,
MaxIntensity255 = 255,
};
static KDColor Parse(mp_obj_t input, Mode Mode = Mode::MaxIntensity255);
private:
class NamedColor {
public:
constexpr NameColorPair(const char * name, KDColor color) :
constexpr NamedColor(const char * name, KDColor color) :
m_name(name),
m_color(color)
{}
@@ -56,14 +63,6 @@ class ColorParser {
const char * m_name;
KDColor m_color;
};
public:
enum class ColorMode {
MaxIntensity1 = 1,
MaxIntensity255 = 255,
};
static KDColor ParseColor(mp_obj_t input, ColorMode ColorMode = ColorMode::MaxIntensity255);
};