37 lines
1.5 KiB
C++
37 lines
1.5 KiB
C++
// ======================================================
|
|
// uDisplay_panel.h - Base Panel Interface
|
|
// ======================================================
|
|
|
|
#pragma once
|
|
|
|
#if CONFIG_IDF_TARGET_ESP32P4
|
|
#include "esp_cache.h"
|
|
#define CACHE_WRITEBACK_ADDR(addr, size) esp_cache_msync((void*)addr, size, ESP_CACHE_MSYNC_FLAG_DIR_C2M)
|
|
#else
|
|
#define CACHE_WRITEBACK_ADDR(addr, size) Cache_WriteBack_Addr(addr, size)
|
|
#endif
|
|
|
|
#include <Arduino.h>
|
|
|
|
class UniversalPanel {
|
|
public:
|
|
virtual ~UniversalPanel() {}
|
|
|
|
// Core graphics API - return true if handled, false for uDisplay fallback
|
|
virtual bool drawPixel(int16_t x, int16_t y, uint16_t color) = 0;
|
|
virtual bool fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) = 0;
|
|
virtual bool pushColors(uint16_t *data, uint16_t len, bool first = false) = 0;
|
|
virtual bool setAddrWindow(int16_t x0, int16_t y0, int16_t x1, int16_t y1) = 0;
|
|
virtual bool drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color) = 0;
|
|
virtual bool drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color) = 0;
|
|
|
|
// Control API - return true if handled, false for uDisplay fallback
|
|
virtual bool displayOnff(int8_t on) = 0;
|
|
virtual bool invertDisplay(bool invert) = 0;
|
|
virtual bool setRotation(uint8_t rotation) = 0;
|
|
|
|
// Frame update method for displays that need explicit updates
|
|
virtual bool updateFrame() = 0;
|
|
// Framebuffer - own or external
|
|
uint16_t* framebuffer = nullptr;
|
|
}; |