Fork of LCD-Window which works with Enhanced TextLCD from Wim

Fork of LcdWindow by Hendrik Lipka

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers textlcdadapter.cpp Source File

textlcdadapter.cpp

00001 /*
00002  * mbed LCDWindow library
00003 * Copyright (c) 2010 Hendrik Lipka
00004 *
00005 * Permission is hereby granted, free of charge, to any person obtaining a copy
00006 * of this software and associated documentation files (the "Software"), to deal
00007 * in the Software without restriction, including without limitation the rights
00008 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
00009 * copies of the Software, and to permit persons to whom the Software is
00010 * furnished to do so, subject to the following conditions:
00011 *
00012 * The above copyright notice and this permission notice shall be included in
00013 * all copies or substantial portions of the Software.
00014 *
00015 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
00016 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
00017 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
00018 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
00019 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
00020 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
00021 * THE SOFTWARE.
00022 */
00023 
00024 #include "textlcdadapter.h"
00025 #include <stdarg.h>
00026 
00027 
00028 TextLCDAdapter::TextLCDAdapter(TextLCD_Base *lcd) {
00029     _lcd=lcd;
00030     _columns = _lcd->columns();
00031     _rows    = _lcd->rows();
00032 }
00033 void TextLCDAdapter::clear() {
00034     _lcd->cls();
00035 }
00036 
00037 void TextLCDAdapter::writeText(const unsigned int column, const unsigned int row, const char text[]){
00038     if ((column > getColumns ()) || (row > getRows ())){
00039         return;
00040     }
00041     _lcd->locate(column,row);
00042     int i=0;
00043     while((text[i]!=0) && (column+i < getColumns ()))
00044     {
00045         _lcd->putc(text[i]);
00046         i++;
00047     }
00048 }
00049 
00050 void TextLCDAdapter::character(int column, int row, int c) {
00051     if ((column > getColumns ()) || (row > getRows ())){
00052         return;
00053     }
00054     _lcd->locate(column,row);
00055     _lcd->putc(c);
00056 }
00057 
00058 int TextLCDAdapter::putc(int c) {
00059     return _lcd->putc(c);
00060 }
00061 int TextLCDAdapter::printf(const char* format, ...) {
00062     // create and start the va_list
00063     va_list listPointer ;
00064     va_start( listPointer, format ) ;
00065 
00066     // vsprintf is an example of
00067     // a function that works with
00068     // an "already started" va_list
00069     static char buf[ 1024 ] ;
00070     vsprintf( buf, format, listPointer ) ;
00071 
00072     return _lcd->printf(buf);
00073 }