mirror of
https://github.com/adafruit/Adafruit-GFX-Library.git
synced 2024-10-03 18:18:46 -04:00
Fixed constructor() kludge - all subclass libs updated too
Thanks to Christian Patterson, AquaQuieta, cmason1978 for the fix!
This commit is contained in:
parent
f14c0a2934
commit
f24ae8058a
194
Adafruit_GFX.cpp
194
Adafruit_GFX.cpp
@ -1,47 +1,67 @@
|
|||||||
/******************************************************************
|
/*
|
||||||
This is the core graphics library for all our displays, providing
|
This is the core graphics library for all our displays, providing a common
|
||||||
basic graphics primitives (points, lines, circles, etc.). It needs
|
set of graphics primitives (points, lines, circles, etc.). It needs to be
|
||||||
to be paired with a hardware-specific library for each display
|
paired with a hardware-specific library for each display device we carry
|
||||||
device we carry (handling the lower-level functions).
|
(to handle the lower-level functions).
|
||||||
|
|
||||||
|
Adafruit invests time and resources providing this open source code, please
|
||||||
|
support Adafruit & open-source hardware by purchasing products from Adafruit!
|
||||||
|
|
||||||
Adafruit invests time and resources providing this open
|
Copyright (c) 2013 Adafruit Industries. All rights reserved.
|
||||||
source code, please support Adafruit and open-source hardware
|
|
||||||
by purchasing products from Adafruit!
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
Written by Limor Fried/Ladyada for Adafruit Industries.
|
|
||||||
BSD license, check license.txt for more information.
|
- Redistributions of source code must retain the above copyright notice,
|
||||||
All text above must be included in any redistribution.
|
this list of conditions and the following disclaimer.
|
||||||
******************************************************************/
|
- Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
this list of conditions and the following disclaimer in the documentation
|
||||||
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||||
|
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
#include "Adafruit_GFX.h"
|
#include "Adafruit_GFX.h"
|
||||||
#include "glcdfont.c"
|
#include "glcdfont.c"
|
||||||
#include <avr/pgmspace.h>
|
#ifdef __AVR__
|
||||||
|
#include <avr/pgmspace.h>
|
||||||
|
#else
|
||||||
|
#define pgm_read_byte(addr) (*(const unsigned char *)(addr))
|
||||||
|
#endif
|
||||||
|
|
||||||
void Adafruit_GFX::constructor(int16_t w, int16_t h) {
|
Adafruit_GFX::Adafruit_GFX(int16_t w, int16_t h) {
|
||||||
_width = WIDTH = w;
|
_width = WIDTH = w;
|
||||||
_height = HEIGHT = h;
|
_height = HEIGHT = h;
|
||||||
|
rotation = 0;
|
||||||
rotation = 0;
|
cursor_y = cursor_x = 0;
|
||||||
cursor_y = cursor_x = 0;
|
textsize = 1;
|
||||||
textsize = 1;
|
|
||||||
textcolor = textbgcolor = 0xFFFF;
|
textcolor = textbgcolor = 0xFFFF;
|
||||||
wrap = true;
|
wrap = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Draw a circle outline
|
||||||
// draw a circle outline
|
void Adafruit_GFX::drawCircle(int16_t x0, int16_t y0, int16_t r,
|
||||||
void Adafruit_GFX::drawCircle(int16_t x0, int16_t y0, int16_t r,
|
uint16_t color) {
|
||||||
uint16_t color) {
|
|
||||||
int16_t f = 1 - r;
|
int16_t f = 1 - r;
|
||||||
int16_t ddF_x = 1;
|
int16_t ddF_x = 1;
|
||||||
int16_t ddF_y = -2 * r;
|
int16_t ddF_y = -2 * r;
|
||||||
int16_t x = 0;
|
int16_t x = 0;
|
||||||
int16_t y = r;
|
int16_t y = r;
|
||||||
|
|
||||||
drawPixel(x0, y0+r, color);
|
drawPixel(x0 , y0+r, color);
|
||||||
drawPixel(x0, y0-r, color);
|
drawPixel(x0 , y0-r, color);
|
||||||
drawPixel(x0+r, y0, color);
|
drawPixel(x0+r, y0 , color);
|
||||||
drawPixel(x0-r, y0, color);
|
drawPixel(x0-r, y0 , color);
|
||||||
|
|
||||||
while (x<y) {
|
while (x<y) {
|
||||||
if (f >= 0) {
|
if (f >= 0) {
|
||||||
@ -61,7 +81,6 @@ void Adafruit_GFX::drawCircle(int16_t x0, int16_t y0, int16_t r,
|
|||||||
drawPixel(x0 - y, y0 + x, color);
|
drawPixel(x0 - y, y0 + x, color);
|
||||||
drawPixel(x0 + y, y0 - x, color);
|
drawPixel(x0 + y, y0 - x, color);
|
||||||
drawPixel(x0 - y, y0 - x, color);
|
drawPixel(x0 - y, y0 - x, color);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -101,15 +120,15 @@ void Adafruit_GFX::drawCircleHelper( int16_t x0, int16_t y0,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Adafruit_GFX::fillCircle(int16_t x0, int16_t y0, int16_t r,
|
void Adafruit_GFX::fillCircle(int16_t x0, int16_t y0, int16_t r,
|
||||||
uint16_t color) {
|
uint16_t color) {
|
||||||
drawFastVLine(x0, y0-r, 2*r+1, color);
|
drawFastVLine(x0, y0-r, 2*r+1, color);
|
||||||
fillCircleHelper(x0, y0, r, 3, 0, color);
|
fillCircleHelper(x0, y0, r, 3, 0, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
// used to do circles and roundrects!
|
// Used to do circles and roundrects
|
||||||
void Adafruit_GFX::fillCircleHelper(int16_t x0, int16_t y0, int16_t r,
|
void Adafruit_GFX::fillCircleHelper(int16_t x0, int16_t y0, int16_t r,
|
||||||
uint8_t cornername, int16_t delta, uint16_t color) {
|
uint8_t cornername, int16_t delta, uint16_t color) {
|
||||||
|
|
||||||
int16_t f = 1 - r;
|
int16_t f = 1 - r;
|
||||||
int16_t ddF_x = 1;
|
int16_t ddF_x = 1;
|
||||||
@ -138,9 +157,9 @@ void Adafruit_GFX::fillCircleHelper(int16_t x0, int16_t y0, int16_t r,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// bresenham's algorithm - thx wikpedia
|
// Bresenham's algorithm - thx wikpedia
|
||||||
void Adafruit_GFX::drawLine(int16_t x0, int16_t y0,
|
void Adafruit_GFX::drawLine(int16_t x0, int16_t y0,
|
||||||
int16_t x1, int16_t y1,
|
int16_t x1, int16_t y1,
|
||||||
uint16_t color) {
|
uint16_t color) {
|
||||||
int16_t steep = abs(y1 - y0) > abs(x1 - x0);
|
int16_t steep = abs(y1 - y0) > abs(x1 - x0);
|
||||||
if (steep) {
|
if (steep) {
|
||||||
@ -180,10 +199,9 @@ void Adafruit_GFX::drawLine(int16_t x0, int16_t y0,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Draw a rectangle
|
||||||
// draw a rectangle
|
void Adafruit_GFX::drawRect(int16_t x, int16_t y,
|
||||||
void Adafruit_GFX::drawRect(int16_t x, int16_t y,
|
int16_t w, int16_t h,
|
||||||
int16_t w, int16_t h,
|
|
||||||
uint16_t color) {
|
uint16_t color) {
|
||||||
drawFastHLine(x, y, w, color);
|
drawFastHLine(x, y, w, color);
|
||||||
drawFastHLine(x, y+h-1, w, color);
|
drawFastHLine(x, y+h-1, w, color);
|
||||||
@ -191,40 +209,38 @@ void Adafruit_GFX::drawRect(int16_t x, int16_t y,
|
|||||||
drawFastVLine(x+w-1, y, h, color);
|
drawFastVLine(x+w-1, y, h, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Adafruit_GFX::drawFastVLine(int16_t x, int16_t y,
|
void Adafruit_GFX::drawFastVLine(int16_t x, int16_t y,
|
||||||
int16_t h, uint16_t color) {
|
int16_t h, uint16_t color) {
|
||||||
// stupidest version - update in subclasses if desired!
|
// Update in subclasses if desired!
|
||||||
drawLine(x, y, x, y+h-1, color);
|
drawLine(x, y, x, y+h-1, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Adafruit_GFX::drawFastHLine(int16_t x, int16_t y,
|
||||||
void Adafruit_GFX::drawFastHLine(int16_t x, int16_t y,
|
|
||||||
int16_t w, uint16_t color) {
|
int16_t w, uint16_t color) {
|
||||||
// stupidest version - update in subclasses if desired!
|
// Update in subclasses if desired!
|
||||||
drawLine(x, y, x+w-1, y, color);
|
drawLine(x, y, x+w-1, y, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Adafruit_GFX::fillRect(int16_t x, int16_t y, int16_t w, int16_t h,
|
void Adafruit_GFX::fillRect(int16_t x, int16_t y, int16_t w, int16_t h,
|
||||||
uint16_t color) {
|
uint16_t color) {
|
||||||
// stupidest version - update in subclasses if desired!
|
// Update in subclasses if desired!
|
||||||
for (int16_t i=x; i<x+w; i++) {
|
for (int16_t i=x; i<x+w; i++) {
|
||||||
drawFastVLine(i, y, h, color);
|
drawFastVLine(i, y, h, color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Adafruit_GFX::fillScreen(uint16_t color) {
|
void Adafruit_GFX::fillScreen(uint16_t color) {
|
||||||
fillRect(0, 0, _width, _height, color);
|
fillRect(0, 0, _width, _height, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
// draw a rounded rectangle!
|
// Draw a rounded rectangle
|
||||||
void Adafruit_GFX::drawRoundRect(int16_t x, int16_t y, int16_t w,
|
void Adafruit_GFX::drawRoundRect(int16_t x, int16_t y, int16_t w,
|
||||||
int16_t h, int16_t r, uint16_t color) {
|
int16_t h, int16_t r, uint16_t color) {
|
||||||
// smarter version
|
// smarter version
|
||||||
drawFastHLine(x+r , y , w-2*r, color); // Top
|
drawFastHLine(x+r , y , w-2*r, color); // Top
|
||||||
drawFastHLine(x+r , y+h-1, w-2*r, color); // Bottom
|
drawFastHLine(x+r , y+h-1, w-2*r, color); // Bottom
|
||||||
drawFastVLine( x , y+r , h-2*r, color); // Left
|
drawFastVLine(x , y+r , h-2*r, color); // Left
|
||||||
drawFastVLine( x+w-1, y+r , h-2*r, color); // Right
|
drawFastVLine(x+w-1, y+r , h-2*r, color); // Right
|
||||||
// draw four corners
|
// draw four corners
|
||||||
drawCircleHelper(x+r , y+r , r, 1, 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+r , r, 2, color);
|
||||||
@ -232,7 +248,7 @@ void Adafruit_GFX::drawRoundRect(int16_t x, int16_t y, int16_t w,
|
|||||||
drawCircleHelper(x+r , y+h-r-1, r, 8, color);
|
drawCircleHelper(x+r , y+h-r-1, r, 8, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
// fill a rounded rectangle!
|
// Fill a rounded rectangle
|
||||||
void Adafruit_GFX::fillRoundRect(int16_t x, int16_t y, int16_t w,
|
void Adafruit_GFX::fillRoundRect(int16_t x, int16_t y, int16_t w,
|
||||||
int16_t h, int16_t r, uint16_t color) {
|
int16_t h, int16_t r, uint16_t color) {
|
||||||
// smarter version
|
// smarter version
|
||||||
@ -243,18 +259,18 @@ void Adafruit_GFX::fillRoundRect(int16_t x, int16_t y, int16_t w,
|
|||||||
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!
|
// Draw a triangle
|
||||||
void Adafruit_GFX::drawTriangle(int16_t x0, int16_t y0,
|
void Adafruit_GFX::drawTriangle(int16_t x0, int16_t y0,
|
||||||
int16_t x1, int16_t y1,
|
int16_t x1, int16_t y1,
|
||||||
int16_t x2, int16_t y2, uint16_t color) {
|
int16_t x2, int16_t y2, uint16_t color) {
|
||||||
drawLine(x0, y0, x1, y1, color);
|
drawLine(x0, y0, x1, y1, color);
|
||||||
drawLine(x1, y1, x2, y2, color);
|
drawLine(x1, y1, x2, y2, color);
|
||||||
drawLine(x2, y2, x0, y0, color);
|
drawLine(x2, y2, x0, y0, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
// fill a triangle!
|
// Fill a triangle
|
||||||
void Adafruit_GFX::fillTriangle ( int16_t x0, int16_t y0,
|
void Adafruit_GFX::fillTriangle ( int16_t x0, int16_t y0,
|
||||||
int16_t x1, int16_t y1,
|
int16_t x1, int16_t y1,
|
||||||
int16_t x2, int16_t y2, uint16_t color) {
|
int16_t x2, int16_t y2, uint16_t color) {
|
||||||
|
|
||||||
int16_t a, b, y, last;
|
int16_t a, b, y, last;
|
||||||
@ -330,7 +346,7 @@ void Adafruit_GFX::fillTriangle ( int16_t x0, int16_t y0,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Adafruit_GFX::drawBitmap(int16_t x, int16_t y,
|
void Adafruit_GFX::drawBitmap(int16_t x, int16_t y,
|
||||||
const uint8_t *bitmap, int16_t w, int16_t h,
|
const uint8_t *bitmap, int16_t w, int16_t h,
|
||||||
uint16_t color) {
|
uint16_t color) {
|
||||||
|
|
||||||
@ -345,7 +361,6 @@ void Adafruit_GFX::drawBitmap(int16_t x, int16_t y,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if ARDUINO >= 100
|
#if ARDUINO >= 100
|
||||||
size_t Adafruit_GFX::write(uint8_t c) {
|
size_t Adafruit_GFX::write(uint8_t c) {
|
||||||
#else
|
#else
|
||||||
@ -353,7 +368,7 @@ void Adafruit_GFX::write(uint8_t c) {
|
|||||||
#endif
|
#endif
|
||||||
if (c == '\n') {
|
if (c == '\n') {
|
||||||
cursor_y += textsize*8;
|
cursor_y += textsize*8;
|
||||||
cursor_x = 0;
|
cursor_x = 0;
|
||||||
} else if (c == '\r') {
|
} else if (c == '\r') {
|
||||||
// skip em
|
// skip em
|
||||||
} else {
|
} else {
|
||||||
@ -369,7 +384,7 @@ void Adafruit_GFX::write(uint8_t c) {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// draw a character
|
// Draw a character
|
||||||
void Adafruit_GFX::drawChar(int16_t x, int16_t y, unsigned char c,
|
void Adafruit_GFX::drawChar(int16_t x, int16_t y, unsigned char c,
|
||||||
uint16_t color, uint16_t bg, uint8_t size) {
|
uint16_t color, uint16_t bg, uint8_t size) {
|
||||||
|
|
||||||
@ -397,7 +412,7 @@ void Adafruit_GFX::drawChar(int16_t x, int16_t y, unsigned char c,
|
|||||||
drawPixel(x+i, y+j, bg);
|
drawPixel(x+i, y+j, bg);
|
||||||
else { // big size
|
else { // big size
|
||||||
fillRect(x+i*size, y+j*size, size, size, bg);
|
fillRect(x+i*size, y+j*size, size, size, bg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
line >>= 1;
|
line >>= 1;
|
||||||
}
|
}
|
||||||
@ -409,60 +424,55 @@ void Adafruit_GFX::setCursor(int16_t x, int16_t y) {
|
|||||||
cursor_y = y;
|
cursor_y = y;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Adafruit_GFX::setTextSize(uint8_t s) {
|
void Adafruit_GFX::setTextSize(uint8_t s) {
|
||||||
textsize = (s > 0) ? s : 1;
|
textsize = (s > 0) ? s : 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Adafruit_GFX::setTextColor(uint16_t c) {
|
void Adafruit_GFX::setTextColor(uint16_t c) {
|
||||||
textcolor = c;
|
// For 'transparent' background, we'll set the bg
|
||||||
textbgcolor = c;
|
|
||||||
// for 'transparent' background, we'll set the bg
|
|
||||||
// to the same as fg instead of using a flag
|
// to the same as fg instead of using a flag
|
||||||
|
textcolor = textbgcolor = c;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Adafruit_GFX::setTextColor(uint16_t c, uint16_t b) {
|
void Adafruit_GFX::setTextColor(uint16_t c, uint16_t b) {
|
||||||
textcolor = c;
|
textcolor = c;
|
||||||
textbgcolor = b;
|
textbgcolor = b;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Adafruit_GFX::setTextWrap(boolean w) {
|
void Adafruit_GFX::setTextWrap(boolean w) {
|
||||||
wrap = w;
|
wrap = w;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t Adafruit_GFX::getRotation(void) {
|
uint8_t Adafruit_GFX::getRotation(void) {
|
||||||
rotation %= 4;
|
|
||||||
return rotation;
|
return rotation;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Adafruit_GFX::setRotation(uint8_t x) {
|
void Adafruit_GFX::setRotation(uint8_t x) {
|
||||||
x %= 4; // cant be higher than 3
|
rotation = (x & 3);
|
||||||
rotation = x;
|
switch(rotation) {
|
||||||
switch (x) {
|
case 0:
|
||||||
case 0:
|
case 2:
|
||||||
case 2:
|
_width = WIDTH;
|
||||||
_width = WIDTH;
|
|
||||||
_height = HEIGHT;
|
_height = HEIGHT;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
case 3:
|
case 3:
|
||||||
_width = HEIGHT;
|
_width = HEIGHT;
|
||||||
_height = WIDTH;
|
_height = WIDTH;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Adafruit_GFX::invertDisplay(boolean i) {
|
// Return the size of the display (per current rotation)
|
||||||
// do nothing, can be subclassed
|
int16_t Adafruit_GFX::width(void) {
|
||||||
}
|
return _width;
|
||||||
|
|
||||||
|
|
||||||
// return the size of the display which depends on the rotation!
|
|
||||||
int16_t Adafruit_GFX::width(void) {
|
|
||||||
return _width;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int16_t Adafruit_GFX::height(void) {
|
int16_t Adafruit_GFX::height(void) {
|
||||||
return _height;
|
return _height;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Adafruit_GFX::invertDisplay(boolean i) {
|
||||||
|
// Do nothing, must be subclassed if supported
|
||||||
|
}
|
||||||
|
|
||||||
|
122
Adafruit_GFX.h
122
Adafruit_GFX.h
@ -1,18 +1,3 @@
|
|||||||
/******************************************************************
|
|
||||||
This is the core graphics library for all our displays, providing
|
|
||||||
basic graphics primitives (points, lines, circles, etc.). It needs
|
|
||||||
to be paired with a hardware-specific library for each display
|
|
||||||
device we carry (handling the lower-level functions).
|
|
||||||
|
|
||||||
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.
|
|
||||||
BSD license, check license.txt for more information.
|
|
||||||
All text above must be included in any redistribution.
|
|
||||||
******************************************************************/
|
|
||||||
|
|
||||||
#ifndef _ADAFRUIT_GFX_H
|
#ifndef _ADAFRUIT_GFX_H
|
||||||
#define _ADAFRUIT_GFX_H
|
#define _ADAFRUIT_GFX_H
|
||||||
|
|
||||||
@ -26,73 +11,76 @@
|
|||||||
#define swap(a, b) { int16_t t = a; a = b; b = t; }
|
#define swap(a, b) { int16_t t = a; a = b; b = t; }
|
||||||
|
|
||||||
class Adafruit_GFX : public Print {
|
class Adafruit_GFX : public Print {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
//Adafruit_GFX();
|
Adafruit_GFX(int16_t w, int16_t h); // Constructor
|
||||||
// i have no idea why we have to formally call the constructor. kinda sux
|
|
||||||
void constructor(int16_t w, int16_t h);
|
|
||||||
|
|
||||||
// this must be defined by the subclass
|
// This MUST be defined by the subclass:
|
||||||
virtual void drawPixel(int16_t x, int16_t y, uint16_t color);
|
virtual void drawPixel(int16_t x, int16_t y, uint16_t color) = 0;
|
||||||
virtual void invertDisplay(boolean i);
|
|
||||||
|
|
||||||
// these are 'generic' drawing functions, so we can share them!
|
// These MAY be overridden by the subclass to provide device-specific
|
||||||
virtual void drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1,
|
// optimized code. Otherwise 'generic' versions are used.
|
||||||
uint16_t color);
|
virtual void
|
||||||
virtual void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color);
|
drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color),
|
||||||
virtual void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color);
|
drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color),
|
||||||
virtual void drawRect(int16_t x, int16_t y, int16_t w, int16_t h,
|
drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color),
|
||||||
uint16_t color);
|
drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color),
|
||||||
virtual void fillRect(int16_t x, int16_t y, int16_t w, int16_t h,
|
fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color),
|
||||||
uint16_t color);
|
fillScreen(uint16_t color),
|
||||||
virtual void fillScreen(uint16_t color);
|
invertDisplay(boolean i);
|
||||||
|
|
||||||
void drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color);
|
// These exist only with Adafruit_GFX (no subclass overrides)
|
||||||
void drawCircleHelper(int16_t x0, int16_t y0,
|
void
|
||||||
int16_t r, uint8_t cornername, uint16_t color);
|
drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color),
|
||||||
void fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color);
|
drawCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername,
|
||||||
void fillCircleHelper(int16_t x0, int16_t y0, int16_t r,
|
uint16_t color),
|
||||||
uint8_t cornername, int16_t delta, uint16_t color);
|
fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color),
|
||||||
|
fillCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername,
|
||||||
|
int16_t delta, uint16_t color),
|
||||||
|
drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1,
|
||||||
|
int16_t x2, int16_t y2, uint16_t color),
|
||||||
|
fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1,
|
||||||
|
int16_t x2, int16_t y2, uint16_t color),
|
||||||
|
drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h,
|
||||||
|
int16_t radius, uint16_t color),
|
||||||
|
fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h,
|
||||||
|
int16_t radius, uint16_t color),
|
||||||
|
drawBitmap(int16_t x, int16_t y, const uint8_t *bitmap,
|
||||||
|
int16_t w, int16_t h, uint16_t color),
|
||||||
|
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),
|
||||||
|
setTextColor(uint16_t c),
|
||||||
|
setTextColor(uint16_t c, uint16_t bg),
|
||||||
|
setTextSize(uint8_t s),
|
||||||
|
setTextWrap(boolean w),
|
||||||
|
setRotation(uint8_t r);
|
||||||
|
|
||||||
void drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1,
|
|
||||||
int16_t x2, int16_t y2, uint16_t color);
|
|
||||||
void fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1,
|
|
||||||
int16_t x2, int16_t y2, uint16_t color);
|
|
||||||
void drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h,
|
|
||||||
int16_t radius, uint16_t color);
|
|
||||||
void fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h,
|
|
||||||
int16_t radius, uint16_t color);
|
|
||||||
|
|
||||||
void drawBitmap(int16_t x, int16_t y,
|
|
||||||
const uint8_t *bitmap, int16_t w, int16_t h,
|
|
||||||
uint16_t color);
|
|
||||||
void drawChar(int16_t x, int16_t y, unsigned char c,
|
|
||||||
uint16_t color, uint16_t bg, uint8_t size);
|
|
||||||
#if ARDUINO >= 100
|
#if ARDUINO >= 100
|
||||||
virtual size_t write(uint8_t);
|
virtual size_t write(uint8_t);
|
||||||
#else
|
#else
|
||||||
virtual void write(uint8_t);
|
virtual void write(uint8_t);
|
||||||
#endif
|
#endif
|
||||||
void setCursor(int16_t x, int16_t y);
|
|
||||||
void setTextColor(uint16_t c);
|
|
||||||
void setTextColor(uint16_t c, uint16_t bg);
|
|
||||||
void setTextSize(uint8_t s);
|
|
||||||
void setTextWrap(boolean w);
|
|
||||||
|
|
||||||
int16_t height(void);
|
int16_t
|
||||||
int16_t width(void);
|
height(void),
|
||||||
|
width(void);
|
||||||
|
|
||||||
void setRotation(uint8_t r);
|
|
||||||
uint8_t getRotation(void);
|
uint8_t getRotation(void);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
int16_t WIDTH, HEIGHT; // this is the 'raw' display w/h - never changes
|
int16_t
|
||||||
int16_t _width, _height; // dependent on rotation
|
WIDTH, HEIGHT, // This is the 'raw' display w/h - never changes
|
||||||
int16_t cursor_x, cursor_y;
|
_width, _height, // Display w/h as modified by current rotation
|
||||||
uint16_t textcolor, textbgcolor;
|
cursor_x, cursor_y;
|
||||||
uint8_t textsize;
|
uint16_t
|
||||||
uint8_t rotation;
|
textcolor, textbgcolor;
|
||||||
boolean wrap; // If set, 'wrap' text at right edge of display
|
uint8_t
|
||||||
|
textsize,
|
||||||
|
rotation;
|
||||||
|
boolean
|
||||||
|
wrap; // If set, 'wrap' text at right edge of display
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif // _ADAFRUIT_GFX_H
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
This is the core graphics library for all our displays, providing basic graphics primitives (points, lines, circles, etc.). It needs to be paired with a hardware-specific library for each display device we carry (handling the lower-level functions).
|
This is the core graphics library for all our displays, providing a common set of graphics primitives (points, lines, circles, etc.). It needs to be paired with a hardware-specific library for each display device we carry (to handle the lower-level functions).
|
||||||
|
|
||||||
Adafruit invests time and resources providing this open source code, please support Adafruit and open-source hardware by purchasing products from Adafruit!
|
Adafruit invests time and resources providing this open source code, please support Adafruit and open-source hardware by purchasing products from Adafruit!
|
||||||
|
|
||||||
|
528
glcdfont.c
528
glcdfont.c
@ -1,266 +1,270 @@
|
|||||||
#include <avr/io.h>
|
|
||||||
#include <avr/pgmspace.h>
|
|
||||||
|
|
||||||
#ifndef FONT5X7_H
|
#ifndef FONT5X7_H
|
||||||
#define FONT5X7_H
|
#define FONT5X7_H
|
||||||
|
|
||||||
// standard ascii 5x7 font
|
#ifdef __AVR__
|
||||||
|
#include <avr/io.h>
|
||||||
static const unsigned char font[] PROGMEM = {
|
#include <avr/pgmspace.h>
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00,
|
#else
|
||||||
0x3E, 0x5B, 0x4F, 0x5B, 0x3E,
|
#define PROGMEM
|
||||||
0x3E, 0x6B, 0x4F, 0x6B, 0x3E,
|
|
||||||
0x1C, 0x3E, 0x7C, 0x3E, 0x1C,
|
|
||||||
0x18, 0x3C, 0x7E, 0x3C, 0x18,
|
|
||||||
0x1C, 0x57, 0x7D, 0x57, 0x1C,
|
|
||||||
0x1C, 0x5E, 0x7F, 0x5E, 0x1C,
|
|
||||||
0x00, 0x18, 0x3C, 0x18, 0x00,
|
|
||||||
0xFF, 0xE7, 0xC3, 0xE7, 0xFF,
|
|
||||||
0x00, 0x18, 0x24, 0x18, 0x00,
|
|
||||||
0xFF, 0xE7, 0xDB, 0xE7, 0xFF,
|
|
||||||
0x30, 0x48, 0x3A, 0x06, 0x0E,
|
|
||||||
0x26, 0x29, 0x79, 0x29, 0x26,
|
|
||||||
0x40, 0x7F, 0x05, 0x05, 0x07,
|
|
||||||
0x40, 0x7F, 0x05, 0x25, 0x3F,
|
|
||||||
0x5A, 0x3C, 0xE7, 0x3C, 0x5A,
|
|
||||||
0x7F, 0x3E, 0x1C, 0x1C, 0x08,
|
|
||||||
0x08, 0x1C, 0x1C, 0x3E, 0x7F,
|
|
||||||
0x14, 0x22, 0x7F, 0x22, 0x14,
|
|
||||||
0x5F, 0x5F, 0x00, 0x5F, 0x5F,
|
|
||||||
0x06, 0x09, 0x7F, 0x01, 0x7F,
|
|
||||||
0x00, 0x66, 0x89, 0x95, 0x6A,
|
|
||||||
0x60, 0x60, 0x60, 0x60, 0x60,
|
|
||||||
0x94, 0xA2, 0xFF, 0xA2, 0x94,
|
|
||||||
0x08, 0x04, 0x7E, 0x04, 0x08,
|
|
||||||
0x10, 0x20, 0x7E, 0x20, 0x10,
|
|
||||||
0x08, 0x08, 0x2A, 0x1C, 0x08,
|
|
||||||
0x08, 0x1C, 0x2A, 0x08, 0x08,
|
|
||||||
0x1E, 0x10, 0x10, 0x10, 0x10,
|
|
||||||
0x0C, 0x1E, 0x0C, 0x1E, 0x0C,
|
|
||||||
0x30, 0x38, 0x3E, 0x38, 0x30,
|
|
||||||
0x06, 0x0E, 0x3E, 0x0E, 0x06,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x5F, 0x00, 0x00,
|
|
||||||
0x00, 0x07, 0x00, 0x07, 0x00,
|
|
||||||
0x14, 0x7F, 0x14, 0x7F, 0x14,
|
|
||||||
0x24, 0x2A, 0x7F, 0x2A, 0x12,
|
|
||||||
0x23, 0x13, 0x08, 0x64, 0x62,
|
|
||||||
0x36, 0x49, 0x56, 0x20, 0x50,
|
|
||||||
0x00, 0x08, 0x07, 0x03, 0x00,
|
|
||||||
0x00, 0x1C, 0x22, 0x41, 0x00,
|
|
||||||
0x00, 0x41, 0x22, 0x1C, 0x00,
|
|
||||||
0x2A, 0x1C, 0x7F, 0x1C, 0x2A,
|
|
||||||
0x08, 0x08, 0x3E, 0x08, 0x08,
|
|
||||||
0x00, 0x80, 0x70, 0x30, 0x00,
|
|
||||||
0x08, 0x08, 0x08, 0x08, 0x08,
|
|
||||||
0x00, 0x00, 0x60, 0x60, 0x00,
|
|
||||||
0x20, 0x10, 0x08, 0x04, 0x02,
|
|
||||||
0x3E, 0x51, 0x49, 0x45, 0x3E,
|
|
||||||
0x00, 0x42, 0x7F, 0x40, 0x00,
|
|
||||||
0x72, 0x49, 0x49, 0x49, 0x46,
|
|
||||||
0x21, 0x41, 0x49, 0x4D, 0x33,
|
|
||||||
0x18, 0x14, 0x12, 0x7F, 0x10,
|
|
||||||
0x27, 0x45, 0x45, 0x45, 0x39,
|
|
||||||
0x3C, 0x4A, 0x49, 0x49, 0x31,
|
|
||||||
0x41, 0x21, 0x11, 0x09, 0x07,
|
|
||||||
0x36, 0x49, 0x49, 0x49, 0x36,
|
|
||||||
0x46, 0x49, 0x49, 0x29, 0x1E,
|
|
||||||
0x00, 0x00, 0x14, 0x00, 0x00,
|
|
||||||
0x00, 0x40, 0x34, 0x00, 0x00,
|
|
||||||
0x00, 0x08, 0x14, 0x22, 0x41,
|
|
||||||
0x14, 0x14, 0x14, 0x14, 0x14,
|
|
||||||
0x00, 0x41, 0x22, 0x14, 0x08,
|
|
||||||
0x02, 0x01, 0x59, 0x09, 0x06,
|
|
||||||
0x3E, 0x41, 0x5D, 0x59, 0x4E,
|
|
||||||
0x7C, 0x12, 0x11, 0x12, 0x7C,
|
|
||||||
0x7F, 0x49, 0x49, 0x49, 0x36,
|
|
||||||
0x3E, 0x41, 0x41, 0x41, 0x22,
|
|
||||||
0x7F, 0x41, 0x41, 0x41, 0x3E,
|
|
||||||
0x7F, 0x49, 0x49, 0x49, 0x41,
|
|
||||||
0x7F, 0x09, 0x09, 0x09, 0x01,
|
|
||||||
0x3E, 0x41, 0x41, 0x51, 0x73,
|
|
||||||
0x7F, 0x08, 0x08, 0x08, 0x7F,
|
|
||||||
0x00, 0x41, 0x7F, 0x41, 0x00,
|
|
||||||
0x20, 0x40, 0x41, 0x3F, 0x01,
|
|
||||||
0x7F, 0x08, 0x14, 0x22, 0x41,
|
|
||||||
0x7F, 0x40, 0x40, 0x40, 0x40,
|
|
||||||
0x7F, 0x02, 0x1C, 0x02, 0x7F,
|
|
||||||
0x7F, 0x04, 0x08, 0x10, 0x7F,
|
|
||||||
0x3E, 0x41, 0x41, 0x41, 0x3E,
|
|
||||||
0x7F, 0x09, 0x09, 0x09, 0x06,
|
|
||||||
0x3E, 0x41, 0x51, 0x21, 0x5E,
|
|
||||||
0x7F, 0x09, 0x19, 0x29, 0x46,
|
|
||||||
0x26, 0x49, 0x49, 0x49, 0x32,
|
|
||||||
0x03, 0x01, 0x7F, 0x01, 0x03,
|
|
||||||
0x3F, 0x40, 0x40, 0x40, 0x3F,
|
|
||||||
0x1F, 0x20, 0x40, 0x20, 0x1F,
|
|
||||||
0x3F, 0x40, 0x38, 0x40, 0x3F,
|
|
||||||
0x63, 0x14, 0x08, 0x14, 0x63,
|
|
||||||
0x03, 0x04, 0x78, 0x04, 0x03,
|
|
||||||
0x61, 0x59, 0x49, 0x4D, 0x43,
|
|
||||||
0x00, 0x7F, 0x41, 0x41, 0x41,
|
|
||||||
0x02, 0x04, 0x08, 0x10, 0x20,
|
|
||||||
0x00, 0x41, 0x41, 0x41, 0x7F,
|
|
||||||
0x04, 0x02, 0x01, 0x02, 0x04,
|
|
||||||
0x40, 0x40, 0x40, 0x40, 0x40,
|
|
||||||
0x00, 0x03, 0x07, 0x08, 0x00,
|
|
||||||
0x20, 0x54, 0x54, 0x78, 0x40,
|
|
||||||
0x7F, 0x28, 0x44, 0x44, 0x38,
|
|
||||||
0x38, 0x44, 0x44, 0x44, 0x28,
|
|
||||||
0x38, 0x44, 0x44, 0x28, 0x7F,
|
|
||||||
0x38, 0x54, 0x54, 0x54, 0x18,
|
|
||||||
0x00, 0x08, 0x7E, 0x09, 0x02,
|
|
||||||
0x18, 0xA4, 0xA4, 0x9C, 0x78,
|
|
||||||
0x7F, 0x08, 0x04, 0x04, 0x78,
|
|
||||||
0x00, 0x44, 0x7D, 0x40, 0x00,
|
|
||||||
0x20, 0x40, 0x40, 0x3D, 0x00,
|
|
||||||
0x7F, 0x10, 0x28, 0x44, 0x00,
|
|
||||||
0x00, 0x41, 0x7F, 0x40, 0x00,
|
|
||||||
0x7C, 0x04, 0x78, 0x04, 0x78,
|
|
||||||
0x7C, 0x08, 0x04, 0x04, 0x78,
|
|
||||||
0x38, 0x44, 0x44, 0x44, 0x38,
|
|
||||||
0xFC, 0x18, 0x24, 0x24, 0x18,
|
|
||||||
0x18, 0x24, 0x24, 0x18, 0xFC,
|
|
||||||
0x7C, 0x08, 0x04, 0x04, 0x08,
|
|
||||||
0x48, 0x54, 0x54, 0x54, 0x24,
|
|
||||||
0x04, 0x04, 0x3F, 0x44, 0x24,
|
|
||||||
0x3C, 0x40, 0x40, 0x20, 0x7C,
|
|
||||||
0x1C, 0x20, 0x40, 0x20, 0x1C,
|
|
||||||
0x3C, 0x40, 0x30, 0x40, 0x3C,
|
|
||||||
0x44, 0x28, 0x10, 0x28, 0x44,
|
|
||||||
0x4C, 0x90, 0x90, 0x90, 0x7C,
|
|
||||||
0x44, 0x64, 0x54, 0x4C, 0x44,
|
|
||||||
0x00, 0x08, 0x36, 0x41, 0x00,
|
|
||||||
0x00, 0x00, 0x77, 0x00, 0x00,
|
|
||||||
0x00, 0x41, 0x36, 0x08, 0x00,
|
|
||||||
0x02, 0x01, 0x02, 0x04, 0x02,
|
|
||||||
0x3C, 0x26, 0x23, 0x26, 0x3C,
|
|
||||||
0x1E, 0xA1, 0xA1, 0x61, 0x12,
|
|
||||||
0x3A, 0x40, 0x40, 0x20, 0x7A,
|
|
||||||
0x38, 0x54, 0x54, 0x55, 0x59,
|
|
||||||
0x21, 0x55, 0x55, 0x79, 0x41,
|
|
||||||
0x21, 0x54, 0x54, 0x78, 0x41,
|
|
||||||
0x21, 0x55, 0x54, 0x78, 0x40,
|
|
||||||
0x20, 0x54, 0x55, 0x79, 0x40,
|
|
||||||
0x0C, 0x1E, 0x52, 0x72, 0x12,
|
|
||||||
0x39, 0x55, 0x55, 0x55, 0x59,
|
|
||||||
0x39, 0x54, 0x54, 0x54, 0x59,
|
|
||||||
0x39, 0x55, 0x54, 0x54, 0x58,
|
|
||||||
0x00, 0x00, 0x45, 0x7C, 0x41,
|
|
||||||
0x00, 0x02, 0x45, 0x7D, 0x42,
|
|
||||||
0x00, 0x01, 0x45, 0x7C, 0x40,
|
|
||||||
0xF0, 0x29, 0x24, 0x29, 0xF0,
|
|
||||||
0xF0, 0x28, 0x25, 0x28, 0xF0,
|
|
||||||
0x7C, 0x54, 0x55, 0x45, 0x00,
|
|
||||||
0x20, 0x54, 0x54, 0x7C, 0x54,
|
|
||||||
0x7C, 0x0A, 0x09, 0x7F, 0x49,
|
|
||||||
0x32, 0x49, 0x49, 0x49, 0x32,
|
|
||||||
0x32, 0x48, 0x48, 0x48, 0x32,
|
|
||||||
0x32, 0x4A, 0x48, 0x48, 0x30,
|
|
||||||
0x3A, 0x41, 0x41, 0x21, 0x7A,
|
|
||||||
0x3A, 0x42, 0x40, 0x20, 0x78,
|
|
||||||
0x00, 0x9D, 0xA0, 0xA0, 0x7D,
|
|
||||||
0x39, 0x44, 0x44, 0x44, 0x39,
|
|
||||||
0x3D, 0x40, 0x40, 0x40, 0x3D,
|
|
||||||
0x3C, 0x24, 0xFF, 0x24, 0x24,
|
|
||||||
0x48, 0x7E, 0x49, 0x43, 0x66,
|
|
||||||
0x2B, 0x2F, 0xFC, 0x2F, 0x2B,
|
|
||||||
0xFF, 0x09, 0x29, 0xF6, 0x20,
|
|
||||||
0xC0, 0x88, 0x7E, 0x09, 0x03,
|
|
||||||
0x20, 0x54, 0x54, 0x79, 0x41,
|
|
||||||
0x00, 0x00, 0x44, 0x7D, 0x41,
|
|
||||||
0x30, 0x48, 0x48, 0x4A, 0x32,
|
|
||||||
0x38, 0x40, 0x40, 0x22, 0x7A,
|
|
||||||
0x00, 0x7A, 0x0A, 0x0A, 0x72,
|
|
||||||
0x7D, 0x0D, 0x19, 0x31, 0x7D,
|
|
||||||
0x26, 0x29, 0x29, 0x2F, 0x28,
|
|
||||||
0x26, 0x29, 0x29, 0x29, 0x26,
|
|
||||||
0x30, 0x48, 0x4D, 0x40, 0x20,
|
|
||||||
0x38, 0x08, 0x08, 0x08, 0x08,
|
|
||||||
0x08, 0x08, 0x08, 0x08, 0x38,
|
|
||||||
0x2F, 0x10, 0xC8, 0xAC, 0xBA,
|
|
||||||
0x2F, 0x10, 0x28, 0x34, 0xFA,
|
|
||||||
0x00, 0x00, 0x7B, 0x00, 0x00,
|
|
||||||
0x08, 0x14, 0x2A, 0x14, 0x22,
|
|
||||||
0x22, 0x14, 0x2A, 0x14, 0x08,
|
|
||||||
0xAA, 0x00, 0x55, 0x00, 0xAA,
|
|
||||||
0xAA, 0x55, 0xAA, 0x55, 0xAA,
|
|
||||||
0x00, 0x00, 0x00, 0xFF, 0x00,
|
|
||||||
0x10, 0x10, 0x10, 0xFF, 0x00,
|
|
||||||
0x14, 0x14, 0x14, 0xFF, 0x00,
|
|
||||||
0x10, 0x10, 0xFF, 0x00, 0xFF,
|
|
||||||
0x10, 0x10, 0xF0, 0x10, 0xF0,
|
|
||||||
0x14, 0x14, 0x14, 0xFC, 0x00,
|
|
||||||
0x14, 0x14, 0xF7, 0x00, 0xFF,
|
|
||||||
0x00, 0x00, 0xFF, 0x00, 0xFF,
|
|
||||||
0x14, 0x14, 0xF4, 0x04, 0xFC,
|
|
||||||
0x14, 0x14, 0x17, 0x10, 0x1F,
|
|
||||||
0x10, 0x10, 0x1F, 0x10, 0x1F,
|
|
||||||
0x14, 0x14, 0x14, 0x1F, 0x00,
|
|
||||||
0x10, 0x10, 0x10, 0xF0, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x1F, 0x10,
|
|
||||||
0x10, 0x10, 0x10, 0x1F, 0x10,
|
|
||||||
0x10, 0x10, 0x10, 0xF0, 0x10,
|
|
||||||
0x00, 0x00, 0x00, 0xFF, 0x10,
|
|
||||||
0x10, 0x10, 0x10, 0x10, 0x10,
|
|
||||||
0x10, 0x10, 0x10, 0xFF, 0x10,
|
|
||||||
0x00, 0x00, 0x00, 0xFF, 0x14,
|
|
||||||
0x00, 0x00, 0xFF, 0x00, 0xFF,
|
|
||||||
0x00, 0x00, 0x1F, 0x10, 0x17,
|
|
||||||
0x00, 0x00, 0xFC, 0x04, 0xF4,
|
|
||||||
0x14, 0x14, 0x17, 0x10, 0x17,
|
|
||||||
0x14, 0x14, 0xF4, 0x04, 0xF4,
|
|
||||||
0x00, 0x00, 0xFF, 0x00, 0xF7,
|
|
||||||
0x14, 0x14, 0x14, 0x14, 0x14,
|
|
||||||
0x14, 0x14, 0xF7, 0x00, 0xF7,
|
|
||||||
0x14, 0x14, 0x14, 0x17, 0x14,
|
|
||||||
0x10, 0x10, 0x1F, 0x10, 0x1F,
|
|
||||||
0x14, 0x14, 0x14, 0xF4, 0x14,
|
|
||||||
0x10, 0x10, 0xF0, 0x10, 0xF0,
|
|
||||||
0x00, 0x00, 0x1F, 0x10, 0x1F,
|
|
||||||
0x00, 0x00, 0x00, 0x1F, 0x14,
|
|
||||||
0x00, 0x00, 0x00, 0xFC, 0x14,
|
|
||||||
0x00, 0x00, 0xF0, 0x10, 0xF0,
|
|
||||||
0x10, 0x10, 0xFF, 0x10, 0xFF,
|
|
||||||
0x14, 0x14, 0x14, 0xFF, 0x14,
|
|
||||||
0x10, 0x10, 0x10, 0x1F, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0xF0, 0x10,
|
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
|
||||||
0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
|
|
||||||
0xFF, 0xFF, 0xFF, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0xFF, 0xFF,
|
|
||||||
0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
|
|
||||||
0x38, 0x44, 0x44, 0x38, 0x44,
|
|
||||||
0x7C, 0x2A, 0x2A, 0x3E, 0x14,
|
|
||||||
0x7E, 0x02, 0x02, 0x06, 0x06,
|
|
||||||
0x02, 0x7E, 0x02, 0x7E, 0x02,
|
|
||||||
0x63, 0x55, 0x49, 0x41, 0x63,
|
|
||||||
0x38, 0x44, 0x44, 0x3C, 0x04,
|
|
||||||
0x40, 0x7E, 0x20, 0x1E, 0x20,
|
|
||||||
0x06, 0x02, 0x7E, 0x02, 0x02,
|
|
||||||
0x99, 0xA5, 0xE7, 0xA5, 0x99,
|
|
||||||
0x1C, 0x2A, 0x49, 0x2A, 0x1C,
|
|
||||||
0x4C, 0x72, 0x01, 0x72, 0x4C,
|
|
||||||
0x30, 0x4A, 0x4D, 0x4D, 0x30,
|
|
||||||
0x30, 0x48, 0x78, 0x48, 0x30,
|
|
||||||
0xBC, 0x62, 0x5A, 0x46, 0x3D,
|
|
||||||
0x3E, 0x49, 0x49, 0x49, 0x00,
|
|
||||||
0x7E, 0x01, 0x01, 0x01, 0x7E,
|
|
||||||
0x2A, 0x2A, 0x2A, 0x2A, 0x2A,
|
|
||||||
0x44, 0x44, 0x5F, 0x44, 0x44,
|
|
||||||
0x40, 0x51, 0x4A, 0x44, 0x40,
|
|
||||||
0x40, 0x44, 0x4A, 0x51, 0x40,
|
|
||||||
0x00, 0x00, 0xFF, 0x01, 0x03,
|
|
||||||
0xE0, 0x80, 0xFF, 0x00, 0x00,
|
|
||||||
0x08, 0x08, 0x6B, 0x6B, 0x08,
|
|
||||||
0x36, 0x12, 0x36, 0x24, 0x36,
|
|
||||||
0x06, 0x0F, 0x09, 0x0F, 0x06,
|
|
||||||
0x00, 0x00, 0x18, 0x18, 0x00,
|
|
||||||
0x00, 0x00, 0x10, 0x10, 0x00,
|
|
||||||
0x30, 0x40, 0xFF, 0x01, 0x01,
|
|
||||||
0x00, 0x1F, 0x01, 0x01, 0x1E,
|
|
||||||
0x00, 0x19, 0x1D, 0x17, 0x12,
|
|
||||||
0x00, 0x3C, 0x3C, 0x3C, 0x3C,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
};
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Standard ASCII 5x7 font
|
||||||
|
|
||||||
|
static const unsigned char font[] PROGMEM = {
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x3E, 0x5B, 0x4F, 0x5B, 0x3E,
|
||||||
|
0x3E, 0x6B, 0x4F, 0x6B, 0x3E,
|
||||||
|
0x1C, 0x3E, 0x7C, 0x3E, 0x1C,
|
||||||
|
0x18, 0x3C, 0x7E, 0x3C, 0x18,
|
||||||
|
0x1C, 0x57, 0x7D, 0x57, 0x1C,
|
||||||
|
0x1C, 0x5E, 0x7F, 0x5E, 0x1C,
|
||||||
|
0x00, 0x18, 0x3C, 0x18, 0x00,
|
||||||
|
0xFF, 0xE7, 0xC3, 0xE7, 0xFF,
|
||||||
|
0x00, 0x18, 0x24, 0x18, 0x00,
|
||||||
|
0xFF, 0xE7, 0xDB, 0xE7, 0xFF,
|
||||||
|
0x30, 0x48, 0x3A, 0x06, 0x0E,
|
||||||
|
0x26, 0x29, 0x79, 0x29, 0x26,
|
||||||
|
0x40, 0x7F, 0x05, 0x05, 0x07,
|
||||||
|
0x40, 0x7F, 0x05, 0x25, 0x3F,
|
||||||
|
0x5A, 0x3C, 0xE7, 0x3C, 0x5A,
|
||||||
|
0x7F, 0x3E, 0x1C, 0x1C, 0x08,
|
||||||
|
0x08, 0x1C, 0x1C, 0x3E, 0x7F,
|
||||||
|
0x14, 0x22, 0x7F, 0x22, 0x14,
|
||||||
|
0x5F, 0x5F, 0x00, 0x5F, 0x5F,
|
||||||
|
0x06, 0x09, 0x7F, 0x01, 0x7F,
|
||||||
|
0x00, 0x66, 0x89, 0x95, 0x6A,
|
||||||
|
0x60, 0x60, 0x60, 0x60, 0x60,
|
||||||
|
0x94, 0xA2, 0xFF, 0xA2, 0x94,
|
||||||
|
0x08, 0x04, 0x7E, 0x04, 0x08,
|
||||||
|
0x10, 0x20, 0x7E, 0x20, 0x10,
|
||||||
|
0x08, 0x08, 0x2A, 0x1C, 0x08,
|
||||||
|
0x08, 0x1C, 0x2A, 0x08, 0x08,
|
||||||
|
0x1E, 0x10, 0x10, 0x10, 0x10,
|
||||||
|
0x0C, 0x1E, 0x0C, 0x1E, 0x0C,
|
||||||
|
0x30, 0x38, 0x3E, 0x38, 0x30,
|
||||||
|
0x06, 0x0E, 0x3E, 0x0E, 0x06,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x5F, 0x00, 0x00,
|
||||||
|
0x00, 0x07, 0x00, 0x07, 0x00,
|
||||||
|
0x14, 0x7F, 0x14, 0x7F, 0x14,
|
||||||
|
0x24, 0x2A, 0x7F, 0x2A, 0x12,
|
||||||
|
0x23, 0x13, 0x08, 0x64, 0x62,
|
||||||
|
0x36, 0x49, 0x56, 0x20, 0x50,
|
||||||
|
0x00, 0x08, 0x07, 0x03, 0x00,
|
||||||
|
0x00, 0x1C, 0x22, 0x41, 0x00,
|
||||||
|
0x00, 0x41, 0x22, 0x1C, 0x00,
|
||||||
|
0x2A, 0x1C, 0x7F, 0x1C, 0x2A,
|
||||||
|
0x08, 0x08, 0x3E, 0x08, 0x08,
|
||||||
|
0x00, 0x80, 0x70, 0x30, 0x00,
|
||||||
|
0x08, 0x08, 0x08, 0x08, 0x08,
|
||||||
|
0x00, 0x00, 0x60, 0x60, 0x00,
|
||||||
|
0x20, 0x10, 0x08, 0x04, 0x02,
|
||||||
|
0x3E, 0x51, 0x49, 0x45, 0x3E,
|
||||||
|
0x00, 0x42, 0x7F, 0x40, 0x00,
|
||||||
|
0x72, 0x49, 0x49, 0x49, 0x46,
|
||||||
|
0x21, 0x41, 0x49, 0x4D, 0x33,
|
||||||
|
0x18, 0x14, 0x12, 0x7F, 0x10,
|
||||||
|
0x27, 0x45, 0x45, 0x45, 0x39,
|
||||||
|
0x3C, 0x4A, 0x49, 0x49, 0x31,
|
||||||
|
0x41, 0x21, 0x11, 0x09, 0x07,
|
||||||
|
0x36, 0x49, 0x49, 0x49, 0x36,
|
||||||
|
0x46, 0x49, 0x49, 0x29, 0x1E,
|
||||||
|
0x00, 0x00, 0x14, 0x00, 0x00,
|
||||||
|
0x00, 0x40, 0x34, 0x00, 0x00,
|
||||||
|
0x00, 0x08, 0x14, 0x22, 0x41,
|
||||||
|
0x14, 0x14, 0x14, 0x14, 0x14,
|
||||||
|
0x00, 0x41, 0x22, 0x14, 0x08,
|
||||||
|
0x02, 0x01, 0x59, 0x09, 0x06,
|
||||||
|
0x3E, 0x41, 0x5D, 0x59, 0x4E,
|
||||||
|
0x7C, 0x12, 0x11, 0x12, 0x7C,
|
||||||
|
0x7F, 0x49, 0x49, 0x49, 0x36,
|
||||||
|
0x3E, 0x41, 0x41, 0x41, 0x22,
|
||||||
|
0x7F, 0x41, 0x41, 0x41, 0x3E,
|
||||||
|
0x7F, 0x49, 0x49, 0x49, 0x41,
|
||||||
|
0x7F, 0x09, 0x09, 0x09, 0x01,
|
||||||
|
0x3E, 0x41, 0x41, 0x51, 0x73,
|
||||||
|
0x7F, 0x08, 0x08, 0x08, 0x7F,
|
||||||
|
0x00, 0x41, 0x7F, 0x41, 0x00,
|
||||||
|
0x20, 0x40, 0x41, 0x3F, 0x01,
|
||||||
|
0x7F, 0x08, 0x14, 0x22, 0x41,
|
||||||
|
0x7F, 0x40, 0x40, 0x40, 0x40,
|
||||||
|
0x7F, 0x02, 0x1C, 0x02, 0x7F,
|
||||||
|
0x7F, 0x04, 0x08, 0x10, 0x7F,
|
||||||
|
0x3E, 0x41, 0x41, 0x41, 0x3E,
|
||||||
|
0x7F, 0x09, 0x09, 0x09, 0x06,
|
||||||
|
0x3E, 0x41, 0x51, 0x21, 0x5E,
|
||||||
|
0x7F, 0x09, 0x19, 0x29, 0x46,
|
||||||
|
0x26, 0x49, 0x49, 0x49, 0x32,
|
||||||
|
0x03, 0x01, 0x7F, 0x01, 0x03,
|
||||||
|
0x3F, 0x40, 0x40, 0x40, 0x3F,
|
||||||
|
0x1F, 0x20, 0x40, 0x20, 0x1F,
|
||||||
|
0x3F, 0x40, 0x38, 0x40, 0x3F,
|
||||||
|
0x63, 0x14, 0x08, 0x14, 0x63,
|
||||||
|
0x03, 0x04, 0x78, 0x04, 0x03,
|
||||||
|
0x61, 0x59, 0x49, 0x4D, 0x43,
|
||||||
|
0x00, 0x7F, 0x41, 0x41, 0x41,
|
||||||
|
0x02, 0x04, 0x08, 0x10, 0x20,
|
||||||
|
0x00, 0x41, 0x41, 0x41, 0x7F,
|
||||||
|
0x04, 0x02, 0x01, 0x02, 0x04,
|
||||||
|
0x40, 0x40, 0x40, 0x40, 0x40,
|
||||||
|
0x00, 0x03, 0x07, 0x08, 0x00,
|
||||||
|
0x20, 0x54, 0x54, 0x78, 0x40,
|
||||||
|
0x7F, 0x28, 0x44, 0x44, 0x38,
|
||||||
|
0x38, 0x44, 0x44, 0x44, 0x28,
|
||||||
|
0x38, 0x44, 0x44, 0x28, 0x7F,
|
||||||
|
0x38, 0x54, 0x54, 0x54, 0x18,
|
||||||
|
0x00, 0x08, 0x7E, 0x09, 0x02,
|
||||||
|
0x18, 0xA4, 0xA4, 0x9C, 0x78,
|
||||||
|
0x7F, 0x08, 0x04, 0x04, 0x78,
|
||||||
|
0x00, 0x44, 0x7D, 0x40, 0x00,
|
||||||
|
0x20, 0x40, 0x40, 0x3D, 0x00,
|
||||||
|
0x7F, 0x10, 0x28, 0x44, 0x00,
|
||||||
|
0x00, 0x41, 0x7F, 0x40, 0x00,
|
||||||
|
0x7C, 0x04, 0x78, 0x04, 0x78,
|
||||||
|
0x7C, 0x08, 0x04, 0x04, 0x78,
|
||||||
|
0x38, 0x44, 0x44, 0x44, 0x38,
|
||||||
|
0xFC, 0x18, 0x24, 0x24, 0x18,
|
||||||
|
0x18, 0x24, 0x24, 0x18, 0xFC,
|
||||||
|
0x7C, 0x08, 0x04, 0x04, 0x08,
|
||||||
|
0x48, 0x54, 0x54, 0x54, 0x24,
|
||||||
|
0x04, 0x04, 0x3F, 0x44, 0x24,
|
||||||
|
0x3C, 0x40, 0x40, 0x20, 0x7C,
|
||||||
|
0x1C, 0x20, 0x40, 0x20, 0x1C,
|
||||||
|
0x3C, 0x40, 0x30, 0x40, 0x3C,
|
||||||
|
0x44, 0x28, 0x10, 0x28, 0x44,
|
||||||
|
0x4C, 0x90, 0x90, 0x90, 0x7C,
|
||||||
|
0x44, 0x64, 0x54, 0x4C, 0x44,
|
||||||
|
0x00, 0x08, 0x36, 0x41, 0x00,
|
||||||
|
0x00, 0x00, 0x77, 0x00, 0x00,
|
||||||
|
0x00, 0x41, 0x36, 0x08, 0x00,
|
||||||
|
0x02, 0x01, 0x02, 0x04, 0x02,
|
||||||
|
0x3C, 0x26, 0x23, 0x26, 0x3C,
|
||||||
|
0x1E, 0xA1, 0xA1, 0x61, 0x12,
|
||||||
|
0x3A, 0x40, 0x40, 0x20, 0x7A,
|
||||||
|
0x38, 0x54, 0x54, 0x55, 0x59,
|
||||||
|
0x21, 0x55, 0x55, 0x79, 0x41,
|
||||||
|
0x21, 0x54, 0x54, 0x78, 0x41,
|
||||||
|
0x21, 0x55, 0x54, 0x78, 0x40,
|
||||||
|
0x20, 0x54, 0x55, 0x79, 0x40,
|
||||||
|
0x0C, 0x1E, 0x52, 0x72, 0x12,
|
||||||
|
0x39, 0x55, 0x55, 0x55, 0x59,
|
||||||
|
0x39, 0x54, 0x54, 0x54, 0x59,
|
||||||
|
0x39, 0x55, 0x54, 0x54, 0x58,
|
||||||
|
0x00, 0x00, 0x45, 0x7C, 0x41,
|
||||||
|
0x00, 0x02, 0x45, 0x7D, 0x42,
|
||||||
|
0x00, 0x01, 0x45, 0x7C, 0x40,
|
||||||
|
0xF0, 0x29, 0x24, 0x29, 0xF0,
|
||||||
|
0xF0, 0x28, 0x25, 0x28, 0xF0,
|
||||||
|
0x7C, 0x54, 0x55, 0x45, 0x00,
|
||||||
|
0x20, 0x54, 0x54, 0x7C, 0x54,
|
||||||
|
0x7C, 0x0A, 0x09, 0x7F, 0x49,
|
||||||
|
0x32, 0x49, 0x49, 0x49, 0x32,
|
||||||
|
0x32, 0x48, 0x48, 0x48, 0x32,
|
||||||
|
0x32, 0x4A, 0x48, 0x48, 0x30,
|
||||||
|
0x3A, 0x41, 0x41, 0x21, 0x7A,
|
||||||
|
0x3A, 0x42, 0x40, 0x20, 0x78,
|
||||||
|
0x00, 0x9D, 0xA0, 0xA0, 0x7D,
|
||||||
|
0x39, 0x44, 0x44, 0x44, 0x39,
|
||||||
|
0x3D, 0x40, 0x40, 0x40, 0x3D,
|
||||||
|
0x3C, 0x24, 0xFF, 0x24, 0x24,
|
||||||
|
0x48, 0x7E, 0x49, 0x43, 0x66,
|
||||||
|
0x2B, 0x2F, 0xFC, 0x2F, 0x2B,
|
||||||
|
0xFF, 0x09, 0x29, 0xF6, 0x20,
|
||||||
|
0xC0, 0x88, 0x7E, 0x09, 0x03,
|
||||||
|
0x20, 0x54, 0x54, 0x79, 0x41,
|
||||||
|
0x00, 0x00, 0x44, 0x7D, 0x41,
|
||||||
|
0x30, 0x48, 0x48, 0x4A, 0x32,
|
||||||
|
0x38, 0x40, 0x40, 0x22, 0x7A,
|
||||||
|
0x00, 0x7A, 0x0A, 0x0A, 0x72,
|
||||||
|
0x7D, 0x0D, 0x19, 0x31, 0x7D,
|
||||||
|
0x26, 0x29, 0x29, 0x2F, 0x28,
|
||||||
|
0x26, 0x29, 0x29, 0x29, 0x26,
|
||||||
|
0x30, 0x48, 0x4D, 0x40, 0x20,
|
||||||
|
0x38, 0x08, 0x08, 0x08, 0x08,
|
||||||
|
0x08, 0x08, 0x08, 0x08, 0x38,
|
||||||
|
0x2F, 0x10, 0xC8, 0xAC, 0xBA,
|
||||||
|
0x2F, 0x10, 0x28, 0x34, 0xFA,
|
||||||
|
0x00, 0x00, 0x7B, 0x00, 0x00,
|
||||||
|
0x08, 0x14, 0x2A, 0x14, 0x22,
|
||||||
|
0x22, 0x14, 0x2A, 0x14, 0x08,
|
||||||
|
0xAA, 0x00, 0x55, 0x00, 0xAA,
|
||||||
|
0xAA, 0x55, 0xAA, 0x55, 0xAA,
|
||||||
|
0x00, 0x00, 0x00, 0xFF, 0x00,
|
||||||
|
0x10, 0x10, 0x10, 0xFF, 0x00,
|
||||||
|
0x14, 0x14, 0x14, 0xFF, 0x00,
|
||||||
|
0x10, 0x10, 0xFF, 0x00, 0xFF,
|
||||||
|
0x10, 0x10, 0xF0, 0x10, 0xF0,
|
||||||
|
0x14, 0x14, 0x14, 0xFC, 0x00,
|
||||||
|
0x14, 0x14, 0xF7, 0x00, 0xFF,
|
||||||
|
0x00, 0x00, 0xFF, 0x00, 0xFF,
|
||||||
|
0x14, 0x14, 0xF4, 0x04, 0xFC,
|
||||||
|
0x14, 0x14, 0x17, 0x10, 0x1F,
|
||||||
|
0x10, 0x10, 0x1F, 0x10, 0x1F,
|
||||||
|
0x14, 0x14, 0x14, 0x1F, 0x00,
|
||||||
|
0x10, 0x10, 0x10, 0xF0, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x1F, 0x10,
|
||||||
|
0x10, 0x10, 0x10, 0x1F, 0x10,
|
||||||
|
0x10, 0x10, 0x10, 0xF0, 0x10,
|
||||||
|
0x00, 0x00, 0x00, 0xFF, 0x10,
|
||||||
|
0x10, 0x10, 0x10, 0x10, 0x10,
|
||||||
|
0x10, 0x10, 0x10, 0xFF, 0x10,
|
||||||
|
0x00, 0x00, 0x00, 0xFF, 0x14,
|
||||||
|
0x00, 0x00, 0xFF, 0x00, 0xFF,
|
||||||
|
0x00, 0x00, 0x1F, 0x10, 0x17,
|
||||||
|
0x00, 0x00, 0xFC, 0x04, 0xF4,
|
||||||
|
0x14, 0x14, 0x17, 0x10, 0x17,
|
||||||
|
0x14, 0x14, 0xF4, 0x04, 0xF4,
|
||||||
|
0x00, 0x00, 0xFF, 0x00, 0xF7,
|
||||||
|
0x14, 0x14, 0x14, 0x14, 0x14,
|
||||||
|
0x14, 0x14, 0xF7, 0x00, 0xF7,
|
||||||
|
0x14, 0x14, 0x14, 0x17, 0x14,
|
||||||
|
0x10, 0x10, 0x1F, 0x10, 0x1F,
|
||||||
|
0x14, 0x14, 0x14, 0xF4, 0x14,
|
||||||
|
0x10, 0x10, 0xF0, 0x10, 0xF0,
|
||||||
|
0x00, 0x00, 0x1F, 0x10, 0x1F,
|
||||||
|
0x00, 0x00, 0x00, 0x1F, 0x14,
|
||||||
|
0x00, 0x00, 0x00, 0xFC, 0x14,
|
||||||
|
0x00, 0x00, 0xF0, 0x10, 0xF0,
|
||||||
|
0x10, 0x10, 0xFF, 0x10, 0xFF,
|
||||||
|
0x14, 0x14, 0x14, 0xFF, 0x14,
|
||||||
|
0x10, 0x10, 0x10, 0x1F, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0xF0, 0x10,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
|
||||||
|
0xFF, 0xFF, 0xFF, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0xFF, 0xFF,
|
||||||
|
0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
|
||||||
|
0x38, 0x44, 0x44, 0x38, 0x44,
|
||||||
|
0x7C, 0x2A, 0x2A, 0x3E, 0x14,
|
||||||
|
0x7E, 0x02, 0x02, 0x06, 0x06,
|
||||||
|
0x02, 0x7E, 0x02, 0x7E, 0x02,
|
||||||
|
0x63, 0x55, 0x49, 0x41, 0x63,
|
||||||
|
0x38, 0x44, 0x44, 0x3C, 0x04,
|
||||||
|
0x40, 0x7E, 0x20, 0x1E, 0x20,
|
||||||
|
0x06, 0x02, 0x7E, 0x02, 0x02,
|
||||||
|
0x99, 0xA5, 0xE7, 0xA5, 0x99,
|
||||||
|
0x1C, 0x2A, 0x49, 0x2A, 0x1C,
|
||||||
|
0x4C, 0x72, 0x01, 0x72, 0x4C,
|
||||||
|
0x30, 0x4A, 0x4D, 0x4D, 0x30,
|
||||||
|
0x30, 0x48, 0x78, 0x48, 0x30,
|
||||||
|
0xBC, 0x62, 0x5A, 0x46, 0x3D,
|
||||||
|
0x3E, 0x49, 0x49, 0x49, 0x00,
|
||||||
|
0x7E, 0x01, 0x01, 0x01, 0x7E,
|
||||||
|
0x2A, 0x2A, 0x2A, 0x2A, 0x2A,
|
||||||
|
0x44, 0x44, 0x5F, 0x44, 0x44,
|
||||||
|
0x40, 0x51, 0x4A, 0x44, 0x40,
|
||||||
|
0x40, 0x44, 0x4A, 0x51, 0x40,
|
||||||
|
0x00, 0x00, 0xFF, 0x01, 0x03,
|
||||||
|
0xE0, 0x80, 0xFF, 0x00, 0x00,
|
||||||
|
0x08, 0x08, 0x6B, 0x6B, 0x08,
|
||||||
|
0x36, 0x12, 0x36, 0x24, 0x36,
|
||||||
|
0x06, 0x0F, 0x09, 0x0F, 0x06,
|
||||||
|
0x00, 0x00, 0x18, 0x18, 0x00,
|
||||||
|
0x00, 0x00, 0x10, 0x10, 0x00,
|
||||||
|
0x30, 0x40, 0xFF, 0x01, 0x01,
|
||||||
|
0x00, 0x1F, 0x01, 0x01, 0x1E,
|
||||||
|
0x00, 0x19, 0x1D, 0x17, 0x12,
|
||||||
|
0x00, 0x3C, 0x3C, 0x3C, 0x3C,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00
|
||||||
|
};
|
||||||
|
#endif // FONT5X7_H
|
||||||
|
37
license.txt
37
license.txt
@ -1,25 +1,24 @@
|
|||||||
Software License Agreement (BSD License)
|
Software License Agreement (BSD License)
|
||||||
|
|
||||||
Copyright (c) 2012, Adafruit Industries. All rights reserved.
|
Copyright (c) 2012 Adafruit Industries. All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
1. Redistributions of source code must retain the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer.
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer in the
|
|
||||||
documentation and/or other materials provided with the distribution.
|
|
||||||
3. Neither the name of the copyright holders nor the names of its
|
|
||||||
contributors may be used to endorse or promote products derived from
|
|
||||||
this software without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
|
- Redistributions of source code must retain the above copyright notice,
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
this list of conditions and the following disclaimer.
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
- Redistributions in binary form must reproduce the above copyright notice,
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
|
this list of conditions and the following disclaimer in the documentation
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
and/or other materials provided with the distribution.
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||||
|
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
Loading…
Reference in New Issue
Block a user