#pragma once #include "my_fastled.h" #include "config.h" #include "prototypes.h" enum SubpixelRenderingMode { SUBPIXEL_RENDERING_SET, SUBPIXEL_RENDERING_ADD, SUBPIXEL_RENDERING_RAISE }; class Window { private: void _circle_point(int x0, int y0, int x1, int y1, CRGB* color); void _subpixel_render(uint8_t x, uint8_t y, CRGB* color, SubpixelRenderingMode m); public: static Window window_full; static Window window_with_clock; static Window window_clock; const uint8_t x, y; const uint8_t width, height; uint16_t count; Window(): Window(0, 0, LED_WIDTH, LED_HEIGHT) {}; Window(uint8_t x, uint8_t y) : Window(x, y, LED_WIDTH-x, LED_HEIGHT-y) {}; Window(uint8_t x, uint8_t y, uint8_t width, uint8_t height) : x(x), y(y), width(width), height(height) { count = width*height; }; void clear(); void clear(CRGB* color); void setPixel(uint8_t x, uint8_t y, CRGB* color); void setSubPixel(accum88 x, accum88 y, CRGB* color, SubpixelRenderingMode m = SUBPIXEL_RENDERING_ADD); void setPixelByIndex(uint16_t index, CRGB* color); void raisePixel(uint8_t x, uint8_t y, CRGB* color); void line(saccum78 x1, saccum78 y1, saccum78 x2, saccum78 y2, CRGB* color); void lineWithAngle(uint8_t x, uint8_t y, uint16_t angle, uint8_t length, CRGB* color); void lineWithAngle(uint8_t x, uint8_t y, uint16_t angle, uint8_t startdist, uint8_t length, CRGB* color); void circle(uint8_t x, uint8_t y, uint8_t r, CRGB* color); uint16_t coordsToGlobalIndex(uint8_t x, uint8_t y); uint16_t localToGlobalIndex(uint16_t); void drawChar(Font* f, accum88 x, accum88 y, const char c, CRGB* color, bool mask=false); void drawText(Font* f, uint16_t x, uint16_t y, String s, CRGB* color); void drawSubText(Font* f, accum88 x, accum88 y, String s, CRGB* color); void addPixelColor(uint16_t index, CRGB* color); void addPixelColor(uint8_t x, uint8_t y, CRGB* color); CRGB get_pixel(uint8_t x, uint8_t y); void fadeToBlackBy(fract8 speed); void shift_down(); void shift_down_and_blur(); void clear_row(uint8_t y); void blur(fract8 intensity); void blur_rows(fract8 intensity); void blur_row(uint8_t y, fract8 intensity); void blur_columns(fract8 intensity); void blur_column(uint8_t x, fract8 intensity); void fill_with_checkerboard(); };