mirror of
https://github.com/Ralim/IronOS.git
synced 2025-02-26 07:53:55 +00:00
Remove secondFrameBuffer and instead add set_framebuffer method
This commit is contained in:
@@ -101,8 +101,7 @@ public:
|
|||||||
static void drawHeatSymbol(uint8_t state);
|
static void drawHeatSymbol(uint8_t state);
|
||||||
static void presentSecondScreenBufferAnimatedBack();
|
static void presentSecondScreenBufferAnimatedBack();
|
||||||
static void presentSecondScreenBufferAnimated();
|
static void presentSecondScreenBufferAnimated();
|
||||||
static void use_first_buffer();
|
static void set_framebuffer(uint8_t *buffer);
|
||||||
static void use_second_buffer();
|
|
||||||
private:
|
private:
|
||||||
static void drawChar(char c); // Draw a character to a specific location
|
static void drawChar(char c); // Draw a character to a specific location
|
||||||
static const uint8_t* currentFont;// Pointer to the current font used for rendering to the buffer
|
static const uint8_t* currentFont;// Pointer to the current font used for rendering to the buffer
|
||||||
@@ -114,7 +113,6 @@ private:
|
|||||||
static int16_t cursor_x, cursor_y;
|
static int16_t cursor_x, cursor_y;
|
||||||
static uint8_t displayOffset;
|
static uint8_t displayOffset;
|
||||||
static uint8_t screenBuffer[16 + (OLED_WIDTH * 2) + 10]; // The data buffer
|
static uint8_t screenBuffer[16 + (OLED_WIDTH * 2) + 10]; // The data buffer
|
||||||
static uint8_t secondFrameBuffer[OLED_WIDTH * 2]; // The second frame buffer
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* OLED_HPP_ */
|
#endif /* OLED_HPP_ */
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ uint8_t OLED::fontWidth, OLED::fontHeight;
|
|||||||
int16_t OLED::cursor_x, OLED::cursor_y;
|
int16_t OLED::cursor_x, OLED::cursor_y;
|
||||||
uint8_t OLED::displayOffset;
|
uint8_t OLED::displayOffset;
|
||||||
uint8_t OLED::screenBuffer[16 + (OLED_WIDTH * 2) + 10]; // The data buffer
|
uint8_t OLED::screenBuffer[16 + (OLED_WIDTH * 2) + 10]; // The data buffer
|
||||||
uint8_t OLED::secondFrameBuffer[OLED_WIDTH * 2]; // The second frame buffer
|
|
||||||
|
|
||||||
/*Setup params for the OLED screen*/
|
/*Setup params for the OLED screen*/
|
||||||
/*http://www.displayfuture.com/Display/datasheet/controller/SSD1307.pdf*/
|
/*http://www.displayfuture.com/Display/datasheet/controller/SSD1307.pdf*/
|
||||||
@@ -86,14 +85,15 @@ void OLED::initialize() {
|
|||||||
sizeof(OLED_Setup_Array));
|
sizeof(OLED_Setup_Array));
|
||||||
}
|
}
|
||||||
|
|
||||||
void OLED::use_first_buffer() {
|
void OLED::set_framebuffer(uint8_t *buffer) {
|
||||||
|
if (buffer == NULL) {
|
||||||
firstStripPtr = &screenBuffer[FRAMEBUFFER_START];
|
firstStripPtr = &screenBuffer[FRAMEBUFFER_START];
|
||||||
secondStripPtr = &screenBuffer[FRAMEBUFFER_START + OLED_WIDTH];
|
secondStripPtr = &screenBuffer[FRAMEBUFFER_START + OLED_WIDTH];
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OLED::use_second_buffer() {
|
firstStripPtr = &buffer[0];
|
||||||
firstStripPtr = &secondFrameBuffer[0];
|
secondStripPtr = &buffer[OLED_WIDTH];
|
||||||
secondStripPtr = &secondFrameBuffer[OLED_WIDTH];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -118,7 +118,9 @@ void OLED::drawChar(char c) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void OLED::presentSecondScreenBufferAnimatedBack() {
|
void OLED::presentSecondScreenBufferAnimatedBack() {
|
||||||
OLED::use_first_buffer();
|
uint8_t *firstBackStripPtr = &firstStripPtr[0];
|
||||||
|
uint8_t *secondBackStripPtr = &secondStripPtr[0];
|
||||||
|
set_framebuffer(NULL);
|
||||||
|
|
||||||
uint32_t totalDuration = 50;
|
uint32_t totalDuration = 50;
|
||||||
|
|
||||||
@@ -138,8 +140,6 @@ void OLED::presentSecondScreenBufferAnimatedBack() {
|
|||||||
|
|
||||||
offset = progress;
|
offset = progress;
|
||||||
|
|
||||||
uint8_t *firstBackStripPtr = &secondFrameBuffer[0];
|
|
||||||
uint8_t *secondBackStripPtr = &secondFrameBuffer[OLED_WIDTH];
|
|
||||||
|
|
||||||
for (uint8_t i = 0; i < progress; i++) {
|
for (uint8_t i = 0; i < progress; i++) {
|
||||||
firstStripPtr[i] = firstBackStripPtr[(i - progress) + OLED_WIDTH];
|
firstStripPtr[i] = firstBackStripPtr[(i - progress) + OLED_WIDTH];
|
||||||
@@ -152,7 +152,9 @@ void OLED::presentSecondScreenBufferAnimatedBack() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void OLED::presentSecondScreenBufferAnimated() {
|
void OLED::presentSecondScreenBufferAnimated() {
|
||||||
OLED::use_first_buffer();
|
uint8_t *firstBackStripPtr = &firstStripPtr[0];
|
||||||
|
uint8_t *secondBackStripPtr = &secondStripPtr[0];
|
||||||
|
set_framebuffer(NULL);
|
||||||
|
|
||||||
uint32_t totalDuration = 50;
|
uint32_t totalDuration = 50;
|
||||||
|
|
||||||
@@ -172,8 +174,6 @@ void OLED::presentSecondScreenBufferAnimated() {
|
|||||||
|
|
||||||
offset = progress;
|
offset = progress;
|
||||||
|
|
||||||
uint8_t *firstBackStripPtr = &secondFrameBuffer[0];
|
|
||||||
uint8_t *secondBackStripPtr = &secondFrameBuffer[OLED_WIDTH];
|
|
||||||
|
|
||||||
for (uint8_t i = OLED_WIDTH - progress; i < OLED_WIDTH; i++) {
|
for (uint8_t i = OLED_WIDTH - progress; i < OLED_WIDTH; i++) {
|
||||||
firstStripPtr[i] = firstBackStripPtr[i - (OLED_WIDTH - progress)];
|
firstStripPtr[i] = firstBackStripPtr[i - (OLED_WIDTH - progress)];
|
||||||
|
|||||||
@@ -825,7 +825,8 @@ void gui_Menu(const menuitem *menu) {
|
|||||||
ButtonState lastButtonState = BUTTON_NONE;
|
ButtonState lastButtonState = BUTTON_NONE;
|
||||||
|
|
||||||
if (menu[currentScreen].draw.func != NULL) {
|
if (menu[currentScreen].draw.func != NULL) {
|
||||||
OLED::use_second_buffer();
|
uint8_t secondFrameBuffer[OLED_WIDTH * 2];
|
||||||
|
OLED::set_framebuffer(secondFrameBuffer);
|
||||||
OLED::setFont(0);
|
OLED::setFont(0);
|
||||||
OLED::setCursor(0, 0);
|
OLED::setCursor(0, 0);
|
||||||
OLED::clearScreen();
|
OLED::clearScreen();
|
||||||
|
|||||||
Reference in New Issue
Block a user