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.
Fork of SPI_TFT_ILI9341 by
Revision 16:51b40ebe3280, committed 2014-12-08
- Comitter:
- gregeric
- Date:
- Mon Dec 08 10:03:05 2014 +0000
- Parent:
- 15:b73b8a8c4692
- Child:
- 17:8794e2eadd8d
- Commit message:
- Support large fonts, two bytes now used for char size. All font.h files must be modified:; MSB(len), LSB(len), hor, vert, bpl; Char window shrunk to minimum, gives speed-up & extra char can be written at end of line.; TODO: update _NXP & _NUCLEO.cpp
Changed in this revision
| SPI_TFT_ILI9341.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/SPI_TFT_ILI9341.cpp Sun Nov 30 12:20:56 2014 +0000
+++ b/SPI_TFT_ILI9341.cpp Mon Dec 08 10:03:05 2014 +0000
@@ -575,14 +575,14 @@
int SPI_TFT_ILI9341::columns()
{
- return width() / font[1];
+ return width() / font[2];
}
int SPI_TFT_ILI9341::rows()
{
- return height() / font[2];
+ return height() / font[3];
}
@@ -591,8 +591,8 @@
{
if (value == '\n') { // new line
char_x = 0;
- char_y = char_y + font[2];
- if (char_y >= height() - font[2]) {
+ char_y = char_y + font[3];
+ if (char_y >= height() - font[3]) {
char_y = 0;
}
} else {
@@ -611,27 +611,29 @@
if ((c < 31) || (c > 127)) return; // test char range
// read font parameter from start of array
- offset = font[0]; // bytes / char
- hor = font[1]; // get hor size of font
- vert = font[2]; // get vert size of font
- bpl = font[3]; // bytes per line
+ offset = (font[0]<<8)+font[1]; // bytes / char now 16bits
+ hor = font[2]; // get hor size of font
+ vert = font[3]; // get vert size of font
+ bpl = font[4]; // bytes per line
- if (char_x + hor > width()) {
+ zeichen = &font[((c-32) * offset)+5];
+ w=zeichen[0];
+
+ //check whether there are sufficient pixels to render character
+ if (char_x + w+2 > width()) { //was hor, now w+2 -> enables squeezing extra char at end of line)
char_x = 0;
char_y = char_y + vert;
- if (char_y >= height() - font[2]) {
+ if (char_y >= height() - vert) {
char_y = 0;
}
}
- window(char_x, char_y,hor,vert); // char box
+ window(char_x, char_y,w+2,vert); // was hor, now w+2 -> char box shrunk to smallest size we need (speedup)
wr_cmd(0x2C); // send pixel
#ifndef TARGET_KL25Z // 16 Bit SPI
SPI::format(16,3);
#endif // switch to 16 bit Mode 3
- zeichen = &font[((c -32) * offset) + 4]; // start of char bitmap
- w = zeichen[0]; // width of actual char
for (j=0; j<vert; j++) { // vert line
- for (i=0; i<hor; i++) { // horz line
+ for (i=0; i<w+2; i++) { //w+2 was hor, send just enough pixel data to fill window // horz line
z = zeichen[bpl * i + ((j & 0xF8) >> 3)+1];
b = 1 << (j & 0x07);
if (( z & b ) == 0x00) {
