diff --git a/libraries/pico_graphics/pico_graphics.hpp b/libraries/pico_graphics/pico_graphics.hpp index dfc666ca..98bcb965 100644 --- a/libraries/pico_graphics/pico_graphics.hpp +++ b/libraries/pico_graphics/pico_graphics.hpp @@ -372,6 +372,7 @@ namespace pimoroni { void set_thickness(uint t) override {}; int update_pen(uint8_t i, uint8_t r, uint8_t g, uint8_t b) override; int create_pen(uint8_t r, uint8_t g, uint8_t b) override; + int create_pen_hsv(float h, float s, float v) override; int reset_pen(uint8_t i) override; void set_pixel(const Point &p) override; @@ -402,6 +403,7 @@ namespace pimoroni { void set_thickness(uint t) override {}; int update_pen(uint8_t i, uint8_t r, uint8_t g, uint8_t b) override; int create_pen(uint8_t r, uint8_t g, uint8_t b) override; + int create_pen_hsv(float h, float s, float v) override; int reset_pen(uint8_t i) override; void set_pixel(const Point &p) override; @@ -423,6 +425,7 @@ namespace pimoroni { void set_pen(uint8_t r, uint8_t g, uint8_t b) override; void set_thickness(uint t) override {}; int create_pen(uint8_t r, uint8_t g, uint8_t b) override; + int create_pen_hsv(float h, float s, float v) override; void set_pixel(const Point &p) override; void set_pixel_span(const Point &p, uint l) override; void set_pixel_dither(const Point &p, const RGB &c) override; diff --git a/libraries/pico_graphics/pico_graphics_pen_p4.cpp b/libraries/pico_graphics/pico_graphics_pen_p4.cpp index f07dc57d..fd6eb633 100644 --- a/libraries/pico_graphics/pico_graphics_pen_p4.cpp +++ b/libraries/pico_graphics/pico_graphics_pen_p4.cpp @@ -44,6 +44,13 @@ namespace pimoroni { } return -1; } + int PicoGraphics_PenP4::create_pen_hsv(float h, float s, float v) { + uint8_t r; + uint8_t g; + uint8_t b; + from_hsv(h, s, v, r, g, b); + return create_pen(r, g, b); + } int PicoGraphics_PenP4::reset_pen(uint8_t i) { palette[i] = {0, 0, 0}; used[i] = false; diff --git a/libraries/pico_graphics/pico_graphics_pen_p8.cpp b/libraries/pico_graphics/pico_graphics_pen_p8.cpp index ae7557cc..92b4d698 100644 --- a/libraries/pico_graphics/pico_graphics_pen_p8.cpp +++ b/libraries/pico_graphics/pico_graphics_pen_p8.cpp @@ -39,6 +39,13 @@ namespace pimoroni { } return -1; } + int PicoGraphics_PenP8::create_pen_hsv(float h, float s, float v) { + uint8_t r; + uint8_t g; + uint8_t b; + from_hsv(h, s, v, r, g, b); + return create_pen(r, g, b); + } int PicoGraphics_PenP8::reset_pen(uint8_t i) { palette[i] = {0, 0, 0}; used[i] = false; diff --git a/libraries/pico_graphics/pico_graphics_pen_rgb332.cpp b/libraries/pico_graphics/pico_graphics_pen_rgb332.cpp index f2a8192c..022f1291 100644 --- a/libraries/pico_graphics/pico_graphics_pen_rgb332.cpp +++ b/libraries/pico_graphics/pico_graphics_pen_rgb332.cpp @@ -18,6 +18,13 @@ namespace pimoroni { int PicoGraphics_PenRGB332::create_pen(uint8_t r, uint8_t g, uint8_t b) { return rgb_to_rgb332(r, g, b); } + int PicoGraphics_PenRGB332::create_pen_hsv(float h, float s, float v) { + uint8_t r; + uint8_t g; + uint8_t b; + from_hsv(h, s, v, r, g, b); + return rgb_to_rgb332(r, g, b); + } void PicoGraphics_PenRGB332::set_pixel(const Point &p) { uint8_t *buf = (uint8_t *)frame_buffer; buf[p.y * bounds.w + p.x] = color;