Skip to content

IcingTomato/TomatoGFX

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🍅 TomatoGFX

🍅以高速绘制为目的、牺牲代码可读性为代价、主打一个简单能用的图形库🍅

🍅 API

针对 ESP32 平台专门优化绘制速度。

// 基本绘图API
void drawPixel(int16_t x, int16_t y, uint16_t color);
void drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color);
void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
void fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
void drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color);
void fillCircle(int16_t x0, int16_t y0, int16_t r, 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 x, int16_t y, int16_t w, int16_t h,
                int16_t r, uint16_t color);
void fillRoundRect(int16_t x, int16_t y, int16_t w, int16_t h,
                int16_t r, uint16_t color);
void drawEllipse(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color);
void fillEllipse(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color);

// 位图绘制函数
// 1-bit单色位图
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);
    
// XBitMap格式位图
void drawXBitmap(int16_t x, int16_t y, const uint8_t bitmap[],
    int16_t w, int16_t h, uint16_t color);
    
// 8-bit灰度位图
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);
            
// 16-bit RGB位图
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);

🍅 Supported Platforms

  • Espressif ESP32 Series (Arduino)
  • Raspberry Pi RP2040 (Arduino)

🍅 Supported Displays

  • ST7306
    • Osptek 300×400 4.2" B&W
    • Osptek 300×400 4.2" R&BW
    • Osptek 210×480 2.9" 8 Colors
  • ST7305
    • Osptek 200×200 1.54" B&W
    • Osptek 122×250 2.13" B&W
    • Osptek 168×384 2.9" B&W

🍅 To Do

  • Add Bitmap support for sprites
  • Getting rid of the Arduino library writeup
  • Add more display drivers
  • Add more examples
  • Add more platforms
  • Anti-aliased line drawing

🍅 Finished Features

  • Basic drawing functions
  • Sprite support
  • Font rendering
  • Circle and ellipse drawing
  • Triangle and round rectangle drawing
  • Bitmap drawing (1-bit, 8-bit grayscale, 16-bit RGB)
  • XBitMap format support

About

🍅SPI LCD graphics library for ESP32 (ESP-IDF/ArduinoESP32) / Raspberry Pi (RP2040/RP2350)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published