KSM edits to RA8875

Dependents:   Liz_Test_Code

Committer:
WiredHome
Date:
Tue Feb 26 19:52:57 2019 +0000
Revision:
167:8aa3fb2a5a31
Parent:
141:2ec78a50dc98
Documentation update to the script in the Fonts/FontMods.h file to improve the understanding of what it does.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
WiredHome 167:8aa3fb2a5a31 1 // mbed TextDisplay Display Library Base Class
WiredHome 167:8aa3fb2a5a31 2 // Copyright © 2007-2009 sford
WiredHome 167:8aa3fb2a5a31 3 // Released under the MIT License: http://mbed.org/license/mit
WiredHome 19:3f82c1161fd2 4
dreschpe 0:de9d1462a835 5 #include "TextDisplay.h"
dreschpe 0:de9d1462a835 6
WiredHome 75:ca78388cfd77 7 //#define DEBUG "Text"
WiredHome 29:422616aa04bd 8 // ...
WiredHome 29:422616aa04bd 9 // INFO("Stuff to show %d", var); // new-line is automatically appended
WiredHome 29:422616aa04bd 10 //
WiredHome 29:422616aa04bd 11 #if (defined(DEBUG) && !defined(TARGET_LPC11U24))
WiredHome 29:422616aa04bd 12 #define INFO(x, ...) std::printf("[INF %s %3d] "x"\r\n", DEBUG, __LINE__, ##__VA_ARGS__);
WiredHome 29:422616aa04bd 13 #define WARN(x, ...) std::printf("[WRN %s %3d] "x"\r\n", DEBUG, __LINE__, ##__VA_ARGS__);
WiredHome 29:422616aa04bd 14 #define ERR(x, ...) std::printf("[ERR %s %3d] "x"\r\n", DEBUG, __LINE__, ##__VA_ARGS__);
WiredHome 29:422616aa04bd 15 #else
WiredHome 29:422616aa04bd 16 #define INFO(x, ...)
WiredHome 29:422616aa04bd 17 #define WARN(x, ...)
WiredHome 29:422616aa04bd 18 #define ERR(x, ...)
WiredHome 29:422616aa04bd 19 #endif
WiredHome 29:422616aa04bd 20
WiredHome 19:3f82c1161fd2 21 TextDisplay::TextDisplay(const char *name) : Stream(name)
WiredHome 19:3f82c1161fd2 22 {
dreschpe 0:de9d1462a835 23 _row = 0;
dreschpe 0:de9d1462a835 24 _column = 0;
dreschpe 0:de9d1462a835 25 if (name == NULL) {
dreschpe 0:de9d1462a835 26 _path = NULL;
dreschpe 0:de9d1462a835 27 } else {
WiredHome 141:2ec78a50dc98 28 int len = strlen(name) + 2;
WiredHome 141:2ec78a50dc98 29 _path = new char[len];
WiredHome 141:2ec78a50dc98 30 snprintf(_path, len, "/%s", name);
dreschpe 0:de9d1462a835 31 }
dreschpe 0:de9d1462a835 32 }
WiredHome 19:3f82c1161fd2 33
WiredHome 104:8d1d3832a215 34 //TextDisplay::~TextDisplay()
WiredHome 104:8d1d3832a215 35 //{
WiredHome 104:8d1d3832a215 36 // delete [] _path;
WiredHome 104:8d1d3832a215 37 //}
WiredHome 103:7e0464ca6c5c 38
WiredHome 19:3f82c1161fd2 39 int TextDisplay::_putc(int value)
WiredHome 19:3f82c1161fd2 40 {
WiredHome 29:422616aa04bd 41 INFO("_putc(%d)", value);
dreschpe 0:de9d1462a835 42 if(value == '\n') {
dreschpe 0:de9d1462a835 43 _column = 0;
dreschpe 0:de9d1462a835 44 _row++;
WiredHome 47:d96a09269f91 45 if(_row >= rows()) {
dreschpe 0:de9d1462a835 46 _row = 0;
dreschpe 0:de9d1462a835 47 }
dreschpe 0:de9d1462a835 48 } else {
dreschpe 0:de9d1462a835 49 character(_column, _row, value);
dreschpe 0:de9d1462a835 50 _column++;
dreschpe 0:de9d1462a835 51 if(_column >= columns()) {
dreschpe 0:de9d1462a835 52 _column = 0;
dreschpe 0:de9d1462a835 53 _row++;
WiredHome 47:d96a09269f91 54 if(_row >= rows()) {
dreschpe 0:de9d1462a835 55 _row = 0;
dreschpe 0:de9d1462a835 56 }
dreschpe 0:de9d1462a835 57 }
dreschpe 0:de9d1462a835 58 }
dreschpe 0:de9d1462a835 59 return value;
dreschpe 0:de9d1462a835 60 }
dreschpe 0:de9d1462a835 61
dreschpe 0:de9d1462a835 62 // crude cls implementation, should generally be overwritten in derived class
WiredHome 61:8f3153bf0baa 63 RetCode_t TextDisplay::cls(uint16_t layers)
WiredHome 19:3f82c1161fd2 64 {
WiredHome 29:422616aa04bd 65 INFO("cls()");
dreschpe 0:de9d1462a835 66 locate(0, 0);
dreschpe 0:de9d1462a835 67 for(int i=0; i<columns()*rows(); i++) {
dreschpe 0:de9d1462a835 68 putc(' ');
dreschpe 0:de9d1462a835 69 }
WiredHome 19:3f82c1161fd2 70 return noerror;
dreschpe 0:de9d1462a835 71 }
dreschpe 0:de9d1462a835 72
WiredHome 37:f19b7e7449dc 73 RetCode_t TextDisplay::locate(textloc_t column, textloc_t row)
WiredHome 19:3f82c1161fd2 74 {
WiredHome 29:422616aa04bd 75 INFO("locate(%d,%d)", column, row);
dreschpe 0:de9d1462a835 76 _column = column;
dreschpe 0:de9d1462a835 77 _row = row;
WiredHome 19:3f82c1161fd2 78 return noerror;
dreschpe 0:de9d1462a835 79 }
dreschpe 0:de9d1462a835 80
WiredHome 19:3f82c1161fd2 81 int TextDisplay::_getc()
WiredHome 19:3f82c1161fd2 82 {
dreschpe 0:de9d1462a835 83 return -1;
dreschpe 0:de9d1462a835 84 }
WiredHome 19:3f82c1161fd2 85
WiredHome 33:b6b710758ab3 86 RetCode_t TextDisplay::foreground(uint16_t color)
WiredHome 19:3f82c1161fd2 87 {
WiredHome 37:f19b7e7449dc 88 //INFO("foreground(%4X)", color);
WiredHome 33:b6b710758ab3 89 _foreground = color;
WiredHome 19:3f82c1161fd2 90 return noerror;
dreschpe 0:de9d1462a835 91 }
dreschpe 0:de9d1462a835 92
WiredHome 33:b6b710758ab3 93 RetCode_t TextDisplay::background(uint16_t color)
WiredHome 19:3f82c1161fd2 94 {
WiredHome 37:f19b7e7449dc 95 //INFO("background(%4X)", color);
WiredHome 33:b6b710758ab3 96 _background = color;
WiredHome 19:3f82c1161fd2 97 return noerror;
dreschpe 0:de9d1462a835 98 }
dreschpe 0:de9d1462a835 99
WiredHome 29:422616aa04bd 100 bool TextDisplay::claim(FILE *stream)
WiredHome 19:3f82c1161fd2 101 {
dreschpe 0:de9d1462a835 102 if ( _path == NULL) {
WiredHome 19:3f82c1161fd2 103 fprintf(stderr, "claim requires a name to be given in the instantiator of the TextDisplay instance!\r\n");
dreschpe 0:de9d1462a835 104 return false;
dreschpe 0:de9d1462a835 105 }
dreschpe 0:de9d1462a835 106 if (freopen(_path, "w", stream) == NULL) {
WiredHome 29:422616aa04bd 107 return false; // Failed, should not happen
dreschpe 0:de9d1462a835 108 }
dreschpe 0:de9d1462a835 109 // make sure we use line buffering
dreschpe 0:de9d1462a835 110 setvbuf(stdout, NULL, _IOLBF, columns());
dreschpe 0:de9d1462a835 111 return true;
WiredHome 19:3f82c1161fd2 112 }
WiredHome 33:b6b710758ab3 113