mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-19 00:37:25 +01:00
[python/turtle] Added write method
Allows user to print strings with the turtle Change-Id: I06a3832f6fa36d29506be10c48a1b2fb34cb69fb
This commit is contained in:
@@ -193,3 +193,9 @@ mp_obj_t modturtle_hideturtle() {
|
||||
mp_obj_t modturtle_isvisible() {
|
||||
return sTurtle.isVisible() ? mp_const_true : mp_const_false;
|
||||
}
|
||||
|
||||
mp_obj_t modturtle_write(mp_obj_t s) {
|
||||
const char * string = mp_obj_str_get_str(s);
|
||||
sTurtle.write(string);
|
||||
return mp_const_none;
|
||||
}
|
||||
@@ -23,6 +23,7 @@ mp_obj_t modturtle_penup();
|
||||
mp_obj_t modturtle_isdown();
|
||||
mp_obj_t modturtle_pensize(size_t n_args, const mp_obj_t *args);
|
||||
mp_obj_t modturtle_isvisible();
|
||||
mp_obj_t modturtle_write(mp_obj_t s);
|
||||
|
||||
mp_obj_t modturtle_pencolor(size_t n_args, const mp_obj_t *args);
|
||||
mp_obj_t modturtle_colormode(size_t n_args, const mp_obj_t *args);
|
||||
|
||||
@@ -25,6 +25,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_0(modturtle_reset_obj, modturtle_reset);
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_0(modturtle_showturtle_obj, modturtle_showturtle);
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_0(modturtle_hideturtle_obj, modturtle_hideturtle);
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_0(modturtle_isvisible_obj, modturtle_isvisible);
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(modturtle_write_obj, modturtle_write);
|
||||
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_0(modturtle___init___obj, modturtle___init__);
|
||||
|
||||
@@ -74,6 +75,7 @@ STATIC const mp_rom_map_elem_t modturtle_module_globals_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR_hideturtle), (mp_obj_t)&modturtle_hideturtle_obj },
|
||||
{ MP_ROM_QSTR(MP_QSTR_ht), (mp_obj_t)&modturtle_hideturtle_obj },
|
||||
{ MP_ROM_QSTR(MP_QSTR_isvisible), (mp_obj_t)&modturtle_isvisible_obj },
|
||||
{ MP_ROM_QSTR(MP_QSTR_write), (mp_obj_t)&modturtle_write_obj },
|
||||
};
|
||||
|
||||
STATIC MP_DEFINE_CONST_DICT(modturtle_module_globals, modturtle_module_globals_table);
|
||||
|
||||
@@ -175,6 +175,21 @@ void Turtle::setVisible(bool visible) {
|
||||
}
|
||||
}
|
||||
|
||||
void Turtle::write(const char * string) {
|
||||
// To prevent overlapping between the text and the turtle, force redraw
|
||||
m_drawn = false;
|
||||
MicroPython::ExecutionEnvironment::currentExecutionEnvironment()->displaySandbox();
|
||||
KDContext * ctx = KDIonContext::sharedContext();
|
||||
static constexpr KDCoordinate headOffsetLength = 6;
|
||||
KDCoordinate headOffsetX = headOffsetLength * std::cos(m_heading * k_headingScale);
|
||||
KDCoordinate headOffsetY = k_invertedYAxisCoefficient * headOffsetLength * std::sin(m_heading * k_headingScale);
|
||||
KDPoint headOffset(headOffsetX, headOffsetY);
|
||||
KDPoint head(-k_iconHeadSize, -k_iconHeadSize);
|
||||
KDPoint stringOffset = KDPoint(0,-k_font->glyphSize().height());
|
||||
ctx->drawString(string, position().translatedBy(headOffset).translatedBy(head).translatedBy(stringOffset));
|
||||
draw(true);
|
||||
}
|
||||
|
||||
|
||||
void Turtle::viewDidDisappear() {
|
||||
m_drawn = false;
|
||||
|
||||
@@ -78,6 +78,8 @@ public:
|
||||
m_colorMode = colorMode;
|
||||
}
|
||||
|
||||
void write(const char * string);
|
||||
|
||||
void viewDidDisappear();
|
||||
|
||||
private:
|
||||
@@ -91,6 +93,7 @@ private:
|
||||
static constexpr uint8_t k_maxSpeed = 10;
|
||||
static constexpr KDColor k_defaultColor = KDColorBlack;
|
||||
static constexpr uint8_t k_defaultPenSize = 1;
|
||||
static constexpr const KDFont * k_font = KDFont::LargeFont;
|
||||
|
||||
enum class PawType : uint8_t {
|
||||
FrontRight = 0,
|
||||
|
||||
Reference in New Issue
Block a user