mirror of
https://github.com/adafruit/Adafruit-GFX-Library.git
synced 2024-10-03 18:18:46 -04:00
Merge pull request #68 from markwal/master
Make custom fonts work on ESP8266 as well
This commit is contained in:
commit
93dde8b70a
13
Adafruit_GFX.cpp
Normal file → Executable file
13
Adafruit_GFX.cpp
Normal file → Executable file
@ -35,11 +35,14 @@ POSSIBILITY OF SUCH DAMAGE.
|
|||||||
#include "glcdfont.c"
|
#include "glcdfont.c"
|
||||||
#ifdef __AVR__
|
#ifdef __AVR__
|
||||||
#include <avr/pgmspace.h>
|
#include <avr/pgmspace.h>
|
||||||
|
#define pgm_read_pointer(addr) ((void *)pgm_read_word(addr))
|
||||||
#elif defined(ESP8266)
|
#elif defined(ESP8266)
|
||||||
#include <pgmspace.h>
|
#include <pgmspace.h>
|
||||||
|
#define pgm_read_pointer(addr) ((void *)pgm_read_dword(addr))
|
||||||
#else
|
#else
|
||||||
#define pgm_read_byte(addr) (*(const unsigned char *)(addr))
|
#define pgm_read_byte(addr) (*(const unsigned char *)(addr))
|
||||||
#define pgm_read_word(addr) (*(const unsigned short *)(addr))
|
#define pgm_read_word(addr) (*(const unsigned short *)(addr))
|
||||||
|
#define pgm_read_pointer(addr) ((void *)pgm_read_word(addr))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef min
|
#ifndef min
|
||||||
@ -474,7 +477,7 @@ void Adafruit_GFX::write(uint8_t c) {
|
|||||||
uint8_t first = pgm_read_byte(&gfxFont->first);
|
uint8_t first = pgm_read_byte(&gfxFont->first);
|
||||||
if((c >= first) && (c <= (uint8_t)pgm_read_byte(&gfxFont->last))) {
|
if((c >= first) && (c <= (uint8_t)pgm_read_byte(&gfxFont->last))) {
|
||||||
uint8_t c2 = c - pgm_read_byte(&gfxFont->first);
|
uint8_t c2 = c - pgm_read_byte(&gfxFont->first);
|
||||||
GFXglyph *glyph = &(((GFXglyph *)pgm_read_word(&gfxFont->glyph))[c2]);
|
GFXglyph *glyph = &(((GFXglyph *)pgm_read_pointer(&gfxFont->glyph))[c2]);
|
||||||
uint8_t w = pgm_read_byte(&glyph->width),
|
uint8_t w = pgm_read_byte(&glyph->width),
|
||||||
h = pgm_read_byte(&glyph->height);
|
h = pgm_read_byte(&glyph->height);
|
||||||
if((w > 0) && (h > 0)) { // Is there an associated bitmap?
|
if((w > 0) && (h > 0)) { // Is there an associated bitmap?
|
||||||
@ -533,8 +536,8 @@ void Adafruit_GFX::drawChar(int16_t x, int16_t y, unsigned char c,
|
|||||||
// directly with 'bad' characters of font may cause mayhem!
|
// directly with 'bad' characters of font may cause mayhem!
|
||||||
|
|
||||||
c -= pgm_read_byte(&gfxFont->first);
|
c -= pgm_read_byte(&gfxFont->first);
|
||||||
GFXglyph *glyph = &(((GFXglyph *)pgm_read_word(&gfxFont->glyph))[c]);
|
GFXglyph *glyph = &(((GFXglyph *)pgm_read_pointer(&gfxFont->glyph))[c]);
|
||||||
uint8_t *bitmap = (uint8_t *)pgm_read_word(&gfxFont->bitmap);
|
uint8_t *bitmap = (uint8_t *)pgm_read_pointer(&gfxFont->bitmap);
|
||||||
|
|
||||||
uint16_t bo = pgm_read_word(&glyph->bitmapOffset);
|
uint16_t bo = pgm_read_word(&glyph->bitmapOffset);
|
||||||
uint8_t w = pgm_read_byte(&glyph->width),
|
uint8_t w = pgm_read_byte(&glyph->width),
|
||||||
@ -690,7 +693,7 @@ void Adafruit_GFX::getTextBounds(char *str, int16_t x, int16_t y,
|
|||||||
if(c != '\r') { // Not a carriage return, is normal char
|
if(c != '\r') { // Not a carriage return, is normal char
|
||||||
if((c >= first) && (c <= last)) { // Char present in current font
|
if((c >= first) && (c <= last)) { // Char present in current font
|
||||||
c -= first;
|
c -= first;
|
||||||
glyph = &(((GFXglyph *)pgm_read_word(&gfxFont->glyph))[c]);
|
glyph = &(((GFXglyph *)pgm_read_pointer(&gfxFont->glyph))[c]);
|
||||||
gw = pgm_read_byte(&glyph->width);
|
gw = pgm_read_byte(&glyph->width);
|
||||||
gh = pgm_read_byte(&glyph->height);
|
gh = pgm_read_byte(&glyph->height);
|
||||||
xa = pgm_read_byte(&glyph->xAdvance);
|
xa = pgm_read_byte(&glyph->xAdvance);
|
||||||
@ -779,7 +782,7 @@ void Adafruit_GFX::getTextBounds(const __FlashStringHelper *str,
|
|||||||
if(c != '\r') { // Not a carriage return, is normal char
|
if(c != '\r') { // Not a carriage return, is normal char
|
||||||
if((c >= first) && (c <= last)) { // Char present in current font
|
if((c >= first) && (c <= last)) { // Char present in current font
|
||||||
c -= first;
|
c -= first;
|
||||||
glyph = &(((GFXglyph *)pgm_read_word(&gfxFont->glyph))[c]);
|
glyph = &(((GFXglyph *)pgm_read_pointer(&gfxFont->glyph))[c]);
|
||||||
gw = pgm_read_byte(&glyph->width);
|
gw = pgm_read_byte(&glyph->width);
|
||||||
gh = pgm_read_byte(&glyph->height);
|
gh = pgm_read_byte(&glyph->height);
|
||||||
xa = pgm_read_byte(&glyph->xAdvance);
|
xa = pgm_read_byte(&glyph->xAdvance);
|
||||||
|
Loading…
Reference in New Issue
Block a user