From b12ba062e4ff73516d01c3bb038a0887c4dbf460 Mon Sep 17 00:00:00 2001 From: KTOWN Date: Tue, 8 Oct 2013 18:20:21 +0200 Subject: [PATCH] Rectangle helper fixed --- Adafruit_RA8875.cpp | 108 +++++++++++++++++++++++++------------------- Adafruit_RA8875.h | 3 +- 2 files changed, 64 insertions(+), 47 deletions(-) diff --git a/Adafruit_RA8875.cpp b/Adafruit_RA8875.cpp index af61b23..2069c59 100644 --- a/Adafruit_RA8875.cpp +++ b/Adafruit_RA8875.cpp @@ -194,58 +194,19 @@ void Adafruit_RA8875::drawPixel(int16_t x, int16_t y, uint16_t color) digitalWrite(_cs, HIGH); } +void Adafruit_RA8875::drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) +{ + rectHelper(x, y, x+w, y+h, color, false); +} + void Adafruit_RA8875::fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { - /* Set X */ - writeCommand(0x91); - writeData(x); - writeCommand(0x92); - writeData(x >> 8); - - /* Set Y */ - writeCommand(0x93); - writeData(y); - writeCommand(0x94); - writeData(y >> 8); - - /* Set X1 */ - writeCommand(0x95); - writeData(x+w); - writeCommand(0x96); - writeData((x+w) >> 8); - - /* Set Y1 */ - writeCommand(0x97); - writeData(y+h); - writeCommand(0x98); - writeData((y+h) >> 8); - - /* Set Color */ - writeCommand(0x63); - writeData((color & 0xf800) >> 11); - writeCommand(0x64); - writeData((color & 0x07e0) >> 5); - writeCommand(0x65); - writeData((color & 0x001f)); - - /* Draw! */ - writeCommand(RA8875_DCR); - /* Square, Filled */ - writeData(0xB0); - - /* Wait for the command to finish */ - bool finished = false; - while (!finished) - { - uint8_t temp = readReg(RA8875_DCR); - if (!(temp & RA8875_DCR_LINESQUTRI_STATUS)) - finished = true; - } + rectHelper(x, y, x+w, y+h, color, true); } void Adafruit_RA8875::fillScreen(uint16_t color) { - fillRect(0, 0, _width-1, _height-1, color); + rectHelper(0, 0, _width-1, _height-1, color, true); } void Adafruit_RA8875::circleHelper(int16_t x0, int16_t y0, int16_t r, uint16_t color, bool filled) @@ -295,6 +256,61 @@ void Adafruit_RA8875::circleHelper(int16_t x0, int16_t y0, int16_t r, uint16_t c } } +void Adafruit_RA8875::rectHelper(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color, bool filled) +{ + /* Set X */ + writeCommand(0x91); + writeData(x); + writeCommand(0x92); + writeData(x >> 8); + + /* Set Y */ + writeCommand(0x93); + writeData(y); + writeCommand(0x94); + writeData(y >> 8); + + /* Set X1 */ + writeCommand(0x95); + writeData(w); + writeCommand(0x96); + writeData((w) >> 8); + + /* Set Y1 */ + writeCommand(0x97); + writeData(h); + writeCommand(0x98); + writeData((h) >> 8); + + /* Set Color */ + writeCommand(0x63); + writeData((color & 0xf800) >> 11); + writeCommand(0x64); + writeData((color & 0x07e0) >> 5); + writeCommand(0x65); + writeData((color & 0x001f)); + + /* Draw! */ + writeCommand(RA8875_DCR); + if (filled) + { + writeData(0xB0); + } + else + { + writeData(0x90); + } + + /* Wait for the command to finish */ + bool finished = false; + while (!finished) + { + uint8_t temp = readReg(RA8875_DCR); + if (!(temp & RA8875_DCR_LINESQUTRI_STATUS)) + finished = true; + } +} + void Adafruit_RA8875::drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color) { circleHelper(x0, y0, r, color, false); diff --git a/Adafruit_RA8875.h b/Adafruit_RA8875.h index 7a72929..47ca657 100644 --- a/Adafruit_RA8875.h +++ b/Adafruit_RA8875.h @@ -33,7 +33,7 @@ class Adafruit_RA8875 : public Adafruit_GFX { //void drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, 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); - //void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, 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 fillScreen(uint16_t color); @@ -70,6 +70,7 @@ class Adafruit_RA8875 : public Adafruit_GFX { /* GFX Helper Functions */ void circleHelper(int16_t x0, int16_t y0, int16_t r, uint16_t color, bool filled); + void rectHelper (int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color, bool filled); uint8_t _cs, _rst; uint16_t _width, _height;