Forráskód Böngészése

Allow for drawing bitmaps in RAM (not in progmem).

Marc MERLIN 8 éve
szülő
commit
aad430de1b
2 módosított fájl, 10 hozzáadás és 3 törlés
  1. 9 2
      Adafruit_GFX.cpp
  2. 1 1
      Adafruit_GFX.h

+ 9 - 2
Adafruit_GFX.cpp

@@ -404,14 +404,21 @@ void Adafruit_GFX::drawXBitmap(int16_t x, int16_t y,
 }
 
 // Draw colored bitmap (each pixel is a uint16_t, with colors defined by
+// Draw colored bitmap (each pixel is a uint16_t, with colors defined by
 // the drawpixel method of your graphical backend.
+// progmem defaults to true for bitmaps defined as static const uint16_t PROGMEM
+// but you can set it to false to send a bitmap array in RAM.
 void Adafruit_GFX::drawRGBBitmap(int16_t x, int16_t y,
-			      const uint16_t *bitmap, int16_t w, int16_t h) {
+		const uint16_t *bitmap, int16_t w, int16_t h, bool progmem) {
   int16_t i, j;
 
   for(j=0; j<h; j++) {
     for(i=0; i<w; i++ ) {
-	drawPixel(x+i, y+j, pgm_read_word(bitmap + j * w + i));
+	if (progmem) {
+	  drawPixel(x+i, y+j, pgm_read_word(bitmap + j * w + i));
+	} else {
+	  drawPixel(x+i, y+j, (uint16_t) *(bitmap + j * w + i));
+	}
     }
   }
 }

+ 1 - 1
Adafruit_GFX.h

@@ -53,7 +53,7 @@ class Adafruit_GFX : public Print {
     drawXBitmap(int16_t x, int16_t y, const uint8_t *bitmap, 
       int16_t w, int16_t h, uint16_t color),
     drawRGBBitmap(int16_t x, int16_t y, const uint16_t *bitmap,
-      int16_t w, int16_t h),
+      int16_t w, int16_t h,bool progmem=true),
     drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color,
       uint16_t bg, uint8_t size),
     setCursor(int16_t x, int16_t y),