From 6976e524ad9a3aa8680a51e40ab7f3fac66fbf8b Mon Sep 17 00:00:00 2001 From: Yaya-Cout Date: Tue, 27 Jun 2023 20:04:24 +0200 Subject: [PATCH] [python/kandinsky] Allow selecting italic font for draw_string using 7th argument --- python/port/mod/kandinsky/modkandinsky.cpp | 13 ++++++++++++- python/port/mod/kandinsky/modkandinsky_table.c | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/python/port/mod/kandinsky/modkandinsky.cpp b/python/port/mod/kandinsky/modkandinsky.cpp index 63e48320933..08c0e57cf93 100644 --- a/python/port/mod/kandinsky/modkandinsky.cpp +++ b/python/port/mod/kandinsky/modkandinsky.cpp @@ -62,7 +62,18 @@ mp_obj_t modkandinsky_draw_string(size_t n_args, const mp_obj_t * args) { KDPoint point(mp_obj_get_int(args[1]), mp_obj_get_int(args[2])); KDColor textColor = (n_args >= 4) ? MicroPython::Color::Parse(args[3]) : Palette::PrimaryText; KDColor backgroundColor = (n_args >= 5) ? MicroPython::Color::Parse(args[4]) : Palette::HomeBackground; - const KDFont * font = (n_args >= 6) ? ((mp_obj_is_true(args[5])) ? KDFont::SmallFont : KDFont::LargeFont) : KDFont::LargeFont; + bool bigFont = (n_args >= 6) ? mp_obj_is_true(args[5]) : false; + bool isItalic = (n_args >= 7) ? mp_obj_is_true(args[6]) : false; + const KDFont * font = KDFont::LargeFont; + if (bigFont && !isItalic) { + font = KDFont::LargeFont; + } else if (!bigFont && !isItalic) { + font = KDFont::SmallFont; + } else if (bigFont && isItalic) { + font = KDFont::ItalicLargeFont; + } else if (!bigFont && isItalic) { + font = KDFont::ItalicSmallFont; + } MicroPython::ExecutionEnvironment::currentExecutionEnvironment()->displaySandbox(); KDIonContext::sharedContext()->drawString(text, point, font, textColor, backgroundColor); return mp_const_none; diff --git a/python/port/mod/kandinsky/modkandinsky_table.c b/python/port/mod/kandinsky/modkandinsky_table.c index 033dbf5b673..82357609b92 100644 --- a/python/port/mod/kandinsky/modkandinsky_table.c +++ b/python/port/mod/kandinsky/modkandinsky_table.c @@ -3,7 +3,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(modkandinsky_color_obj, 1, 3, modkandinsky_color); STATIC MP_DEFINE_CONST_FUN_OBJ_2(modkandinsky_get_pixel_obj, modkandinsky_get_pixel); STATIC MP_DEFINE_CONST_FUN_OBJ_3(modkandinsky_set_pixel_obj, modkandinsky_set_pixel); -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(modkandinsky_draw_string_obj, 3, 6, modkandinsky_draw_string); +STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(modkandinsky_draw_string_obj, 3, 7, modkandinsky_draw_string); STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(modkandinsky_draw_line_obj, 5, 5, modkandinsky_draw_line); STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(modkandinsky_draw_circle_obj, 4, 4, modkandinsky_draw_circle); STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(modkandinsky_fill_rect_obj, 5, 5, modkandinsky_fill_rect);