Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 17:c0c589ffe9bf, committed 2022-06-17
- Comitter:
- hisi
- Date:
- Fri Jun 17 02:24:45 2022 +0000
- Parent:
- 16:7fb1d4d3525d
- Commit message:
- 11
Changed in this revision
--- a/Adafruit_GFX.cpp Tue Nov 11 22:08:20 2014 +0000 +++ b/Adafruit_GFX.cpp Fri Jun 17 02:24:45 2022 +0000 @@ -1,14 +1,14 @@ /*********************************** -This is a our graphics core library, for all our displays. +This is a our graphics core library, for all our displays. We'll be adapting all the -existing libaries to use this core to make updating, support +existing libaries to use this core to make updating, support and upgrading easier! -Adafruit invests time and resources providing this open source code, -please support Adafruit and open-source hardware by purchasing +Adafruit invests time and resources providing this open source code, +please support Adafruit and open-source hardware by purchasing products from Adafruit! -Written by Limor Fried/Ladyada for Adafruit Industries. +Written by Limor Fried/Ladyada for Adafruit Industries. BSD license, check license.txt for more information All text above must be included in any redistribution ****************************************/ @@ -31,16 +31,14 @@ int16_t ddF_y = -2 * r; int16_t x = 0; int16_t y = r; - + drawPixel(x0, y0+r, color); drawPixel(x0, y0-r, color); drawPixel(x0+r, y0, color); drawPixel(x0-r, y0, color); - - while (x<y) - { - if (f >= 0) - { + + while (x<y) { + if (f >= 0) { y--; ddF_y += 2; f += ddF_y; @@ -48,7 +46,7 @@ x++; ddF_x += 2; f += ddF_x; - + drawPixel(x0 + x, y0 + y, color); drawPixel(x0 - x, y0 + y, color); drawPixel(x0 + x, y0 - y, color); @@ -67,11 +65,9 @@ int16_t ddF_y = -2 * r; int16_t x = 0; int16_t y = r; - - while (x<y) - { - if (f >= 0) - { + + while (x<y) { + if (f >= 0) { y--; ddF_y += 2; f += ddF_y; @@ -79,27 +75,23 @@ x++; ddF_x += 2; f += ddF_x; - - if (cornername & 0x4) - { + + if (cornername & 0x4) { drawPixel(x0 + x, y0 + y, color); drawPixel(x0 + y, y0 + x, color); - } + } - if (cornername & 0x2) - { + if (cornername & 0x2) { drawPixel(x0 + x, y0 - y, color); drawPixel(x0 + y, y0 - x, color); } - if (cornername & 0x8) - { + if (cornername & 0x8) { drawPixel(x0 - y, y0 + x, color); drawPixel(x0 - x, y0 + y, color); } - - if (cornername & 0x1) - { + + if (cornername & 0x1) { drawPixel(x0 - y, y0 - x, color); drawPixel(x0 - x, y0 - y, color); } @@ -120,11 +112,9 @@ int16_t ddF_y = -2 * r; int16_t x = 0; int16_t y = r; - - while (x<y) - { - if (f >= 0) - { + + while (x<y) { + if (f >= 0) { y--; ddF_y += 2; f += ddF_y; @@ -132,15 +122,13 @@ x++; ddF_x += 2; f += ddF_x; - - if (cornername & 0x1) - { + + if (cornername & 0x1) { drawFastVLine(x0+x, y0-y, 2*y+1+delta, color); drawFastVLine(x0+y, y0-x, 2*x+1+delta, color); } - if (cornername & 0x2) - { + if (cornername & 0x2) { drawFastVLine(x0-x, y0-y, 2*y+1+delta, color); drawFastVLine(x0-y, y0-x, 2*x+1+delta, color); } @@ -153,41 +141,37 @@ void Adafruit_GFX::drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color) { int16_t steep = abs(y1 - y0) > abs(x1 - x0); - - if (steep) - { + + if (steep) { swap(x0, y0); swap(x1, y1); } - - if (x0 > x1) - { + + if (x0 > x1) { swap(x0, x1); swap(y0, y1); } - + int16_t dx, dy; dx = x1 - x0; dy = abs(y1 - y0); - + int16_t err = dx / 2; int16_t ystep; - + if (y0 < y1) ystep = 1; else ystep = -1; - - for (; x0<=x1; x0++) - { + + for (; x0<=x1; x0++) { if (steep) drawPixel(y0, x0, color); else drawPixel(x0, y0, color); err -= dy; - if (err < 0) - { + if (err < 0) { y0 += ystep; err += dx; } @@ -204,7 +188,7 @@ { // stupidest version - update in subclasses if desired! for (int16_t i=x; i<x+w; i++) - drawFastVLine(i, y, h, color); + drawFastVLine(i, y, h, color); } #endif @@ -233,15 +217,15 @@ void Adafruit_GFX::drawRoundRect(int16_t x, int16_t y, int16_t w, int16_t h, int16_t r, uint16_t color) { // smarter version - drawFastHLine(x+r , y , w-2*r, color); // Top - drawFastHLine(x+r , y+h-1, w-2*r, color); // Bottom - drawFastVLine( x , y+r , h-2*r, color); // Left - drawFastVLine( x+w-1, y+r , h-2*r, color); // Right + drawFastHLine(x+r, y, w-2*r, color); // Top + drawFastHLine(x+r, y+h-1, w-2*r, color); // Bottom + drawFastVLine( x, y+r, h-2*r, color); // Left + drawFastVLine( x+w-1, y+r, h-2*r, color); // Right // draw four corners - drawCircleHelper(x+r , y+r , r, 1, color); - drawCircleHelper(x+w-r-1, y+r , r, 2, color); + drawCircleHelper(x+r, y+r, r, 1, color); + drawCircleHelper(x+w-r-1, y+r, r, 2, color); drawCircleHelper(x+w-r-1, y+h-r-1, r, 4, color); - drawCircleHelper(x+r , y+h-r-1, r, 8, color); + drawCircleHelper(x+r, y+h-r-1, r, 8, color); } // fill a rounded rectangle! @@ -249,10 +233,10 @@ { // smarter version fillRect(x+r, y, w-2*r, h, color); - + // draw four corners fillCircleHelper(x+w-r-1, y+r, r, 1, h-2*r-1, color); - fillCircleHelper(x+r , y+r, r, 2, h-2*r-1, color); + fillCircleHelper(x+r, y+r, r, 2, h-2*r-1, color); } // draw a triangle! @@ -267,42 +251,45 @@ void Adafruit_GFX::fillTriangle ( int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color) { int16_t a, b, y, last; - + // Sort coordinates by Y order (y2 >= y1 >= y0) if (y0 > y1) - swap(y0, y1); swap(x0, x1); + swap(y0, y1); + swap(x0, x1); if (y1 > y2) - swap(y2, y1); swap(x2, x1); + swap(y2, y1); + swap(x2, x1); if (y0 > y1) - swap(y0, y1); swap(x0, x1); + swap(y0, y1); + swap(x0, x1); - - if(y0 == y2) - { // Handle awkward all-on-same-line case as its own thing + + if(y0 == y2) { + // Handle awkward all-on-same-line case as its own thing a = b = x0; if(x1 < a) a = x1; else if(x1 > b) b = x1; - + if(x2 < a) a = x2; else if(x2 > b) b = x2; - drawFastHLine(a, y0, b-a+1, color); + drawFastHLine(a, y0, b-a+1, color); return; } int16_t - dx01 = x1 - x0, - dy01 = y1 - y0, - dx02 = x2 - x0, - dy02 = y2 - y0, - dx12 = x2 - x1, - dy12 = y2 - y1, - sa = 0, - sb = 0; + dx01 = x1 - x0, + dy01 = y1 - y0, + dx02 = x2 - x0, + dy02 = y2 - y0, + dx12 = x2 - x1, + dy12 = y2 - y1, + sa = 0, + sb = 0; // For upper part of triangle, find scanline crossings for segments // 0-1 and 0-2. If y1=y2 (flat-bottomed triangle), the scanline y1 @@ -315,8 +302,7 @@ else last = y1-1; // Skip it - for(y=y0; y<=last; y++) - { + for(y=y0; y<=last; y++) { a = x0 + sa / dy01; b = x0 + sb / dy02; sa += dx01; @@ -334,8 +320,7 @@ // 0-2 and 1-2. This loop is skipped if y1=y2. sa = dx12 * (y - y1); sb = dx02 * (y - y0); - for(; y<=y2; y++) - { + for(; y<=y2; y++) { a = x1 + sa / dy12; b = x0 + sb / dy02; sa += dx12; @@ -352,10 +337,8 @@ void Adafruit_GFX::drawBitmap(int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, int16_t h, uint16_t color) { - for (int16_t j=0; j<h; j++) - { - for (int16_t i=0; i<w; i++ ) - { + for (int16_t j=0; j<h; j++) { + for (int16_t i=0; i<w; i++ ) { if (bitmap[i + (j/8)*w] & _BV(j%8)) drawPixel(x+i, y+j, color); } @@ -365,19 +348,15 @@ size_t Adafruit_GFX::writeChar(uint8_t c) { - if (c == '\n') - { + if (c == '\n') { cursor_y += textsize*8; cursor_x = 0; - } - else if (c == '\r') + } else if (c == '\r') cursor_x = 0; - else - { + else { drawChar(cursor_x, cursor_y, c, textcolor, textbgcolor, textsize); cursor_x += textsize*6; - if (wrap && (cursor_x > (_width - textsize*6))) - { + if (wrap && (cursor_x > (_width - textsize*6))) { cursor_y += textsize*8; cursor_x = 0; } @@ -393,22 +372,19 @@ (y >= _height) || // Clip bottom ((x + 5 * size - 1) < 0) || // Clip left ((y + 8 * size - 1) < 0) // Clip top - ) - return; - - for (int8_t i=0; i<6; i++ ) - { + ) + return; + + for (int8_t i=0; i<6; i++ ) { uint8_t line = 0; - if (i == 5) + if (i == 5) line = 0x0; - else + else line = font[(c*5)+i]; - - for (int8_t j = 0; j<8; j++) - { - if (line & 0x1) - { + + for (int8_t j = 0; j<8; j++) { + if (line & 0x1) { #if defined(GFX_WANT_ABSTRACTS) || defined(GFX_SIZEABLE_TEXT) if (size == 1) // default size drawPixel(x+i, y+j, color); @@ -417,9 +393,7 @@ #else drawPixel(x+i, y+j, color); #endif - } - else if (bg != color) - { + } else if (bg != color) { #if defined(GFX_WANT_ABSTRACTS) || defined(GFX_SIZEABLE_TEXT) if (size == 1) // default size drawPixel(x+i, y+j, bg); @@ -438,8 +412,7 @@ { x %= 4; // cant be higher than 3 rotation = x; - switch (x) - { + switch (x) { case 0: case 2: _width = _rawWidth; @@ -452,3 +425,25 @@ break; } } + +void Adafruit_GFX::drawX11BitMap(const uint8_t bitmap[],uint16_t bitMapWidth,uint16_t bitMapSize,uint16_t posX,uint16_t posY) +{ + int16_t x1 = posX; + int16_t y1 = posY; + for(unsigned int i=0; i<bitMapSize; i++) { + uint8_t val = bitmap[i]; + for(int j=0; j<8; j++) { + uint16_t pixColor; + if(val>>j & 0x01) + pixColor = 1; + else + pixColor = 0; + drawPixel(x1,y1, pixColor); + x1 = x1 + 1; + if(x1 == posX + bitMapWidth) { + x1 = posX; + y1 = y1 + 1; + } + } + } +} \ No newline at end of file
--- a/Adafruit_GFX.h Tue Nov 11 22:08:20 2014 +0000 +++ b/Adafruit_GFX.h Fri Jun 17 02:24:45 2022 +0000 @@ -169,6 +169,9 @@ void setRotation(uint8_t r); /// Get the current rotation inline uint8_t getRotation(void) { rotation %= 4; return rotation; }; + + + virtual void drawX11BitMap ( const uint8_t bitmap [] , uint16_t bitMapWidth, uint16_t bitMapSize, uint16_t posX, uint16_t posY ) ; protected: int16_t _rawWidth, _rawHeight; // this is the 'raw' display w/h - never changes
--- a/Adafruit_GFX_Config.h Tue Nov 11 22:08:20 2014 +0000 +++ b/Adafruit_GFX_Config.h Fri Jun 17 02:24:45 2022 +0000 @@ -2,13 +2,13 @@ #define _ADAFRUIT_GFX_CONFIG_H_ // Uncomment this to turn off the builtin splash -//#define NO_SPLASH_ADAFRUIT +#define NO_SPLASH_ADAFRUIT // Uncomment this to enable all functionality -//#define GFX_WANT_ABSTRACTS +#define GFX_WANT_ABSTRACTS // Uncomment this to enable only runtime font scaling, without all the rest of the Abstracts -//#define GFX_SIZEABLE_TEXT +#define GFX_SIZEABLE_TEXT #endif \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cylogo.h Fri Jun 17 02:24:45 2022 +0000 @@ -0,0 +1,10 @@ +#define cylogo_width 128 +#define cylogo_height 40 + + +static unsigned char cylogo_bits[] = { + 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x3f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xfe, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,}; \ No newline at end of file
--- a/glcdfont.h Tue Nov 11 22:08:20 2014 +0000 +++ b/glcdfont.h Fri Jun 17 02:24:45 2022 +0000 @@ -23,8 +23,7 @@ #ifndef FONT5X7_H #define FONT5X7_H -// standard ascii 5x7 font - + // standard ascii 5x7 font static unsigned char font[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x5B, 0x4F, 0x5B, 0x3E,