From 8909bb8e8c915d105daaf7d1fd03546af5ab4d94 Mon Sep 17 00:00:00 2001 From: gamerdonkey Date: Sat, 14 Sep 2024 16:00:46 -0500 Subject: Changing to use an Adafruit_GFX library from components repo. --- main/Adafruit_GFX.h | 384 ---------------------------------------------------- 1 file changed, 384 deletions(-) delete mode 100644 main/Adafruit_GFX.h (limited to 'main/Adafruit_GFX.h') diff --git a/main/Adafruit_GFX.h b/main/Adafruit_GFX.h deleted file mode 100644 index 84ae991..0000000 --- a/main/Adafruit_GFX.h +++ /dev/null @@ -1,384 +0,0 @@ -#ifndef _ADAFRUIT_GFX_H -#define _ADAFRUIT_GFX_H - -#include - -#include "gfxfont.h" - -/// A generic graphics superclass that can handle all sorts of drawing. At a -/// minimum you can subclass and provide drawPixel(). At a maximum you can do a -/// ton of overriding to optimize. Used for any/all Adafruit displays! -class Adafruit_GFX { - -public: - Adafruit_GFX(int16_t w, int16_t h); // Constructor - - /**********************************************************************/ - /*! - @brief Draw to the screen/framebuffer/etc. - Must be overridden in subclass. - @param x X coordinate in pixels - @param y Y coordinate in pixels - @param color 16-bit pixel color. - */ - /**********************************************************************/ - virtual void drawPixel(int16_t x, int16_t y, uint16_t color) = 0; - - // TRANSACTION API / CORE DRAW API - // These MAY be overridden by the subclass to provide device-specific - // optimized code. Otherwise 'generic' versions are used. - virtual void startWrite(void); - virtual void writePixel(int16_t x, int16_t y, uint16_t color); - virtual void writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h, - uint16_t color); - virtual void writeFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); - virtual void writeFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); - virtual void writeLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, - uint16_t color); - virtual void endWrite(void); - - // CONTROL API - // These MAY be overridden by the subclass to provide device-specific - // optimized code. Otherwise 'generic' versions are used. - virtual void setRotation(uint8_t r); - virtual void invertDisplay(bool i); - - // BASIC DRAW API - // These MAY be overridden by the subclass to provide device-specific - // optimized code. Otherwise 'generic' versions are used. - - // It's good to implement those, even if using transaction API - virtual void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); - virtual void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); - virtual void fillRect(int16_t x, int16_t y, int16_t w, int16_t h, - uint16_t color); - virtual void fillScreen(uint16_t color); - // Optional and probably not necessary to change - virtual void drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, - uint16_t color); - virtual void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, - uint16_t color); - - // These exist only with Adafruit_GFX (no subclass overrides) - void drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color); - void drawCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, - uint16_t color); - void fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color); - void fillCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, - int16_t delta, uint16_t color); - void drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, - int16_t y2, uint16_t color); - void fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, - int16_t y2, uint16_t color); - void drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, - int16_t radius, uint16_t color); - void fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, - int16_t radius, uint16_t color); - void drawBitmap(int16_t x, int16_t y, const uint8_t bitmap[], int16_t w, - int16_t h, uint16_t color); - void drawBitmap(int16_t x, int16_t y, const uint8_t bitmap[], int16_t w, - int16_t h, uint16_t color, uint16_t bg); - void drawBitmap(int16_t x, int16_t y, uint8_t *bitmap, int16_t w, int16_t h, - uint16_t color); - void drawBitmap(int16_t x, int16_t y, uint8_t *bitmap, int16_t w, int16_t h, - uint16_t color, uint16_t bg); - void drawXBitmap(int16_t x, int16_t y, const uint8_t bitmap[], int16_t w, - int16_t h, uint16_t color); - void drawGrayscaleBitmap(int16_t x, int16_t y, const uint8_t bitmap[], - int16_t w, int16_t h); - void drawGrayscaleBitmap(int16_t x, int16_t y, uint8_t *bitmap, int16_t w, - int16_t h); - void drawGrayscaleBitmap(int16_t x, int16_t y, const uint8_t bitmap[], - const uint8_t mask[], int16_t w, int16_t h); - void drawGrayscaleBitmap(int16_t x, int16_t y, uint8_t *bitmap, uint8_t *mask, - int16_t w, int16_t h); - void drawRGBBitmap(int16_t x, int16_t y, const uint16_t bitmap[], int16_t w, - int16_t h); - void drawRGBBitmap(int16_t x, int16_t y, uint16_t *bitmap, int16_t w, - int16_t h); - void drawRGBBitmap(int16_t x, int16_t y, const uint16_t bitmap[], - const uint8_t mask[], int16_t w, int16_t h); - void drawRGBBitmap(int16_t x, int16_t y, uint16_t *bitmap, uint8_t *mask, - int16_t w, int16_t h); - void drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color, - uint16_t bg, uint8_t size); - void drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color, - uint16_t bg, uint8_t size_x, uint8_t size_y); - void getTextBounds(const char *string, int16_t x, int16_t y, int16_t *x1, - int16_t *y1, uint16_t *w, uint16_t *h); - /* void getTextBounds(const __FlashStringHelper *s, int16_t x, int16_t y, */ - /* int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h); */ - void getTextBounds(const std::string &str, int16_t x, int16_t y, int16_t *x1, - int16_t *y1, uint16_t *w, uint16_t *h); - void setTextSize(uint8_t s); - void setTextSize(uint8_t sx, uint8_t sy); - void setFont(const GFXfont *f = NULL); - - /**********************************************************************/ - /*! - @brief Set text cursor location - @param x X coordinate in pixels - @param y Y coordinate in pixels - */ - /**********************************************************************/ - void setCursor(int16_t x, int16_t y) { - cursor_x = x; - cursor_y = y; - } - - /**********************************************************************/ - /*! - @brief Set text font color with transparant background - @param c 16-bit 5-6-5 Color to draw text with - @note For 'transparent' background, background and foreground - are set to same color rather than using a separate flag. - */ - /**********************************************************************/ - void setTextColor(uint16_t c) { textcolor = textbgcolor = c; } - - /**********************************************************************/ - /*! - @brief Set text font color with custom background color - @param c 16-bit 5-6-5 Color to draw text with - @param bg 16-bit 5-6-5 Color to draw background/fill with - */ - /**********************************************************************/ - void setTextColor(uint16_t c, uint16_t bg) { - textcolor = c; - textbgcolor = bg; - } - - /**********************************************************************/ - /*! - @brief Set whether text that is too long for the screen width should - automatically wrap around to the next line (else clip right). - @param w true for wrapping, false for clipping - */ - /**********************************************************************/ - void setTextWrap(bool w) { wrap = w; } - - /**********************************************************************/ - /*! - @brief Enable (or disable) Code Page 437-compatible charset. - There was an error in glcdfont.c for the longest time -- one - character (#176, the 'light shade' block) was missing -- this - threw off the index of every character that followed it. - But a TON of code has been written with the erroneous - character indices. By default, the library uses the original - 'wrong' behavior and old sketches will still work. Pass - 'true' to this function to use correct CP437 character values - in your code. - @param x true = enable (new behavior), false = disable (old behavior) - */ - /**********************************************************************/ - void cp437(bool x = true) { _cp437 = x; } - - /* using Print::write; */ -/* #if ARDUINO >= 100 */ -/* virtual size_t write(uint8_t); */ -/* #else */ -/* virtual void write(uint8_t); */ -/* #endif */ - - /************************************************************************/ - /*! - @brief Get width of the display, accounting for current rotation - @returns Width in pixels - */ - /************************************************************************/ - int16_t width(void) const { return _width; }; - - /************************************************************************/ - /*! - @brief Get height of the display, accounting for current rotation - @returns Height in pixels - */ - /************************************************************************/ - int16_t height(void) const { return _height; } - - /************************************************************************/ - /*! - @brief Get rotation setting for display - @returns 0 thru 3 corresponding to 4 cardinal rotations - */ - /************************************************************************/ - uint8_t getRotation(void) const { return rotation; } - - // get current cursor position (get rotation safe maximum values, - // using: width() for x, height() for y) - /************************************************************************/ - /*! - @brief Get text cursor X location - @returns X coordinate in pixels - */ - /************************************************************************/ - int16_t getCursorX(void) const { return cursor_x; } - - /************************************************************************/ - /*! - @brief Get text cursor Y location - @returns Y coordinate in pixels - */ - /************************************************************************/ - int16_t getCursorY(void) const { return cursor_y; }; - -protected: - void charBounds(unsigned char c, int16_t *x, int16_t *y, int16_t *minx, - int16_t *miny, int16_t *maxx, int16_t *maxy); - int16_t WIDTH; ///< This is the 'raw' display width - never changes - int16_t HEIGHT; ///< This is the 'raw' display height - never changes - int16_t _width; ///< Display width as modified by current rotation - int16_t _height; ///< Display height as modified by current rotation - int16_t cursor_x; ///< x location to start print()ing text - int16_t cursor_y; ///< y location to start print()ing text - uint16_t textcolor; ///< 16-bit background color for print() - uint16_t textbgcolor; ///< 16-bit text color for print() - uint8_t textsize_x; ///< Desired magnification in X-axis of text to print() - uint8_t textsize_y; ///< Desired magnification in Y-axis of text to print() - uint8_t rotation; ///< Display rotation (0 thru 3) - bool wrap; ///< If set, 'wrap' text at right edge of display - bool _cp437; ///< If set, use correct CP437 charset (default is off) - GFXfont *gfxFont; ///< Pointer to special font -}; - -/// A simple drawn button UI element -class Adafruit_GFX_Button { - -public: - Adafruit_GFX_Button(void); - // "Classic" initButton() uses center & size - void initButton(Adafruit_GFX *gfx, int16_t x, int16_t y, uint16_t w, - uint16_t h, uint16_t outline, uint16_t fill, - uint16_t textcolor, char *label, uint8_t textsize); - void initButton(Adafruit_GFX *gfx, int16_t x, int16_t y, uint16_t w, - uint16_t h, uint16_t outline, uint16_t fill, - uint16_t textcolor, char *label, uint8_t textsize_x, - uint8_t textsize_y); - // New/alt initButton() uses upper-left corner & size - void initButtonUL(Adafruit_GFX *gfx, int16_t x1, int16_t y1, uint16_t w, - uint16_t h, uint16_t outline, uint16_t fill, - uint16_t textcolor, char *label, uint8_t textsize); - void initButtonUL(Adafruit_GFX *gfx, int16_t x1, int16_t y1, uint16_t w, - uint16_t h, uint16_t outline, uint16_t fill, - uint16_t textcolor, char *label, uint8_t textsize_x, - uint8_t textsize_y); - void drawButton(bool inverted = false); - bool contains(int16_t x, int16_t y); - - /**********************************************************************/ - /*! - @brief Sets button state, should be done by some touch function - @param p True for pressed, false for not. - */ - /**********************************************************************/ - void press(bool p) { - laststate = currstate; - currstate = p; - } - - bool justPressed(); - bool justReleased(); - - /**********************************************************************/ - /*! - @brief Query whether the button is currently pressed - @returns True if pressed - */ - /**********************************************************************/ - bool isPressed(void) { return currstate; }; - -private: - Adafruit_GFX *_gfx; - int16_t _x1, _y1; // Coordinates of top-left corner - uint16_t _w, _h; - uint8_t _textsize_x; - uint8_t _textsize_y; - uint16_t _outlinecolor, _fillcolor, _textcolor; - char _label[10]; - - bool currstate, laststate; -}; - -/// A GFX 1-bit canvas context for graphics -class GFXcanvas1 : public Adafruit_GFX { -public: - GFXcanvas1(uint16_t w, uint16_t h); - ~GFXcanvas1(void); - void drawPixel(int16_t x, int16_t y, uint16_t color); - void fillScreen(uint16_t color); - void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); - void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); - bool getPixel(int16_t x, int16_t y) const; - /**********************************************************************/ - /*! - @brief Get a pointer to the internal buffer memory - @returns A pointer to the allocated buffer - */ - /**********************************************************************/ - uint8_t *getBuffer(void) const { return buffer; } - -protected: - bool getRawPixel(int16_t x, int16_t y) const; - void drawFastRawVLine(int16_t x, int16_t y, int16_t h, uint16_t color); - void drawFastRawHLine(int16_t x, int16_t y, int16_t w, uint16_t color); - uint8_t *buffer; ///< Raster data: no longer private, allow subclass access - -private: -#ifdef __AVR__ - // Bitmask tables of 0x80>>X and ~(0x80>>X), because X>>Y is slow on AVR - static const uint8_t PROGMEM GFXsetBit[], GFXclrBit[]; -#endif -}; - -/// A GFX 8-bit canvas context for graphics -class GFXcanvas8 : public Adafruit_GFX { -public: - GFXcanvas8(uint16_t w, uint16_t h); - ~GFXcanvas8(void); - void drawPixel(int16_t x, int16_t y, uint16_t color); - void fillScreen(uint16_t color); - void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); - void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); - uint8_t getPixel(int16_t x, int16_t y) const; - /**********************************************************************/ - /*! - @brief Get a pointer to the internal buffer memory - @returns A pointer to the allocated buffer - */ - /**********************************************************************/ - uint8_t *getBuffer(void) const { return buffer; } - -protected: - uint8_t getRawPixel(int16_t x, int16_t y) const; - void drawFastRawVLine(int16_t x, int16_t y, int16_t h, uint16_t color); - void drawFastRawHLine(int16_t x, int16_t y, int16_t w, uint16_t color); - uint8_t *buffer; ///< Raster data: no longer private, allow subclass access -}; - -/// A GFX 16-bit canvas context for graphics -class GFXcanvas16 : public Adafruit_GFX { -public: - GFXcanvas16(uint16_t w, uint16_t h); - ~GFXcanvas16(void); - void drawPixel(int16_t x, int16_t y, uint16_t color); - void fillScreen(uint16_t color); - void byteSwap(void); - void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); - void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); - uint16_t getPixel(int16_t x, int16_t y) const; - /**********************************************************************/ - /*! - @brief Get a pointer to the internal buffer memory - @returns A pointer to the allocated buffer - */ - /**********************************************************************/ - uint16_t *getBuffer(void) const { return buffer; } - -protected: - uint16_t getRawPixel(int16_t x, int16_t y) const; - void drawFastRawVLine(int16_t x, int16_t y, int16_t h, uint16_t color); - void drawFastRawHLine(int16_t x, int16_t y, int16_t w, uint16_t color); - uint16_t *buffer; ///< Raster data: no longer private, allow subclass access -}; - -#endif // _ADAFRUIT_GFX_H -- cgit v1.2.3