Arun Raj / Mbed OS MAXREFDES101_SOURCE

Dependencies:   max32630fthr Adafruit_FeatherOLED USBDevice

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers TextDisplay.cpp Source File

TextDisplay.cpp

00001 /* mbed TextDisplay Display Library Base Class
00002  * Copyright (c) 2007-2009 sford
00003  * Released under the MIT License: http://mbed.org/license/mit
00004  */
00005  
00006 #include "TextDisplay.h"
00007 #include <cstdarg>
00008 
00009 TextDisplay::TextDisplay(const char *name){
00010     _row = 0;
00011     _column = 0;
00012 
00013     if (name == NULL) {
00014         _path = NULL;
00015     } else {
00016         _path = new char[strlen(name) + 2];
00017         sprintf(_path, "/%s", name);
00018     }
00019 }
00020     
00021 int TextDisplay::_putc(int value) {
00022     if(value == '\n') {
00023         _column = 0;
00024         _row++;
00025         if(_row >= rows()) {
00026             _row = 0;
00027         }
00028     } else {
00029         character(_column, _row, value);
00030         _column++;
00031         if(_column >= columns()) {
00032             _column = 0;
00033             _row++;
00034             if(_row >= rows()) {
00035                 _row = 0;
00036             }
00037         }
00038     }
00039     return value;
00040 }
00041 
00042 // crude cls implementation, should generally be overwritten in derived class
00043 void TextDisplay::cls() {
00044     locate(0, 0);
00045     for(int i=0; i<columns()*rows(); i++) {
00046         _putc(' ');
00047     }
00048 }
00049 
00050 void TextDisplay::set_font(const unsigned char * f) {
00051     font = f;
00052     if(font==NULL) {
00053         externalfont = 0;  // set display.font
00054         locate(0, 0);
00055     }    
00056     else{
00057         externalfont = 1;
00058         locate(0, 0);
00059     }
00060 }
00061 
00062 void TextDisplay::locate(int column, int row) {
00063     _column = column;
00064     _row = row;
00065     char_x = column;
00066     char_y = row;
00067 }
00068 
00069 int TextDisplay::_getc() {
00070     return -1;
00071 }
00072         
00073 void TextDisplay::foreground(uint16_t colour) {
00074     _foreground = colour;
00075 }
00076 
00077 void TextDisplay::background(uint16_t colour) {
00078     _background = colour;
00079 }
00080 
00081 void TextDisplay::printf(const char* format, ...) {
00082     char buffer[MAX_PRINTF_CHARS + 1] = { 0 };
00083     uint32_t iterator = 0;
00084     va_list args;
00085     va_start(args, format);
00086     vsprintf(buffer, format, args);
00087     va_end(args);
00088 
00089     while((buffer[iterator] != 0) && (iterator < MAX_PRINTF_CHARS)) {
00090         _putc(buffer[iterator++]);
00091     }
00092 }