mirror of
https://github.com/daveallie/crosspoint-reader.git
synced 2025-12-18 07:07:41 +03:00
* First pass at moving to SDK EInkDisplay library * Add 2-bit grayscale text and anti-aliased rendering of text * Render status bar for empty chapters * Refresh screen every 15 pages to avoid ghosting * Simplify boot and sleep screens * Give FileSelectionScreen task more stack memory * Move text around slightly on Boot and Sleep screens * Re-use existing buffer and write to whole screen for 'partial update'
59 lines
2.5 KiB
C++
59 lines
2.5 KiB
C++
#pragma once
|
|
|
|
#include <EInkDisplay.h>
|
|
|
|
#include <EpdFontRenderer.hpp>
|
|
|
|
class EpdRenderer {
|
|
EInkDisplay& einkDisplay;
|
|
EpdFontRenderer<EInkDisplay>* regularFontRenderer;
|
|
EpdFontRenderer<EInkDisplay>* smallFontRenderer;
|
|
EpdFontRenderer<EInkDisplay>* uiFontRenderer;
|
|
int marginTop;
|
|
int marginBottom;
|
|
int marginLeft;
|
|
int marginRight;
|
|
EpdFontRendererMode fontRendererMode;
|
|
float lineCompression;
|
|
|
|
public:
|
|
explicit EpdRenderer(EInkDisplay& einkDisplay);
|
|
~EpdRenderer();
|
|
void drawPixel(int x, int y, bool state = true) const;
|
|
int getTextWidth(const char* text, EpdFontStyle style = REGULAR) const;
|
|
int getUiTextWidth(const char* text, EpdFontStyle style = REGULAR) const;
|
|
int getSmallTextWidth(const char* text, EpdFontStyle style = REGULAR) const;
|
|
void drawText(int x, int y, const char* text, bool state = true, EpdFontStyle style = REGULAR) const;
|
|
void drawUiText(int x, int y, const char* text, bool state = true, EpdFontStyle style = REGULAR) const;
|
|
void drawSmallText(int x, int y, const char* text, bool state = true, EpdFontStyle style = REGULAR) const;
|
|
void drawTextBox(int x, int y, const std::string& text, int width, int height, EpdFontStyle style = REGULAR) const;
|
|
void drawLine(int x1, int y1, int x2, int y2, bool state = true) const;
|
|
void drawRect(int x, int y, int width, int height, bool state = true) const;
|
|
void fillRect(int x, int y, int width, int height, bool state = true) const;
|
|
void drawImage(const uint8_t bitmap[], int x, int y, int width, int height) const;
|
|
void drawImageNoMargin(const uint8_t bitmap[], int x, int y, int width, int height) const;
|
|
|
|
void swapBuffers() const;
|
|
void copyGrayscaleLsbBuffers() const;
|
|
void copyGrayscaleMsbBuffers() const;
|
|
void displayGrayBuffer() const;
|
|
void clearScreen(uint8_t color = 0xFF) const;
|
|
|
|
void invertScreen() const;
|
|
|
|
void flushDisplay(EInkDisplay::RefreshMode refreshMode = EInkDisplay::FAST_REFRESH) const;
|
|
// void flushArea(int x, int y, int width, int height) const;
|
|
|
|
int getPageWidth() const;
|
|
int getPageHeight() const;
|
|
int getSpaceWidth() const;
|
|
int getLineHeight() const;
|
|
|
|
// set margins
|
|
void setMarginTop(const int newMarginTop) { this->marginTop = newMarginTop; }
|
|
void setMarginBottom(const int newMarginBottom) { this->marginBottom = newMarginBottom; }
|
|
void setMarginLeft(const int newMarginLeft) { this->marginLeft = newMarginLeft; }
|
|
void setMarginRight(const int newMarginRight) { this->marginRight = newMarginRight; }
|
|
void setFontRendererMode(const EpdFontRendererMode mode) { this->fontRendererMode = mode; }
|
|
};
|