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 LcdWindow by
Revision 13:99b500b05716, committed 2016-01-13
- Comitter:
- charly
- Date:
- Wed Jan 13 19:38:54 2016 +0000
- Parent:
- 12:393329d0e050
- Commit message:
- added enableDisplay and disableDisplay for Terminal to stop the output to LCD.
Changed in this revision
terminal.cpp | Show annotated file Show diff for this revision Revisions of this file |
terminal.h | Show annotated file Show diff for this revision Revisions of this file |
diff -r 393329d0e050 -r 99b500b05716 terminal.cpp --- a/terminal.cpp Tue Jan 12 20:40:39 2016 +0000 +++ b/terminal.cpp Wed Jan 13 19:38:54 2016 +0000 @@ -24,43 +24,53 @@ #include "terminal.h" #include "string.h" -Terminal::Terminal(Window* window):Window() { +Terminal::Terminal(Window* window):Window() +{ _window=window; _columns=window->getColumns(); _rows=window->getRows(); _lineBuffer=new char*[_rows]; + _enabled = true; clear(); } -char* Terminal::createLine() { +char* Terminal::createLine() +{ char* text=new char[_columns+1]; memset(text,32,_columns); text[_columns]=0; return text; } -void Terminal::character(int column, int row, int c) { +void Terminal::character(int column, int row, int c) +{ if (column>_columns || row > _rows) { return; } _lineBuffer[row][column]=c; - _window->character(column,row,c); + if (_enabled) { + _window->character(column,row,c); + } } -void Terminal::writeText(const unsigned int column, const unsigned int row, const char text[]) { - _window->writeText(column,row,text); +void Terminal::writeText(const unsigned int column, const unsigned int row, const char text[]) +{ + if (_enabled) { + _window->writeText(column,row,text); + } int min=column+strlen(text); if (min>_columns) min=_columns; - for (int i=column;i<min;i++) { + for (int i=column; i<min; i++) { _lineBuffer[row][i]=text[i-column]; // copy text into proper line } } -void Terminal::addText(const char text[]) { +void Terminal::addText(const char text[]) +{ delete [] _lineBuffer[0]; - for (int i=0;i<_rows-1;i++) { + for (int i=0; i<_rows-1; i++) { _lineBuffer[i]=_lineBuffer[i+1]; } _lineBuffer[_rows-1]=createLine(); @@ -68,22 +78,48 @@ int min=strlen(text); if (min>_columns) min=_columns; - for (int i=0;i<min;i++) { + for (int i=0; i<min; i++) { _lineBuffer[_rows-1][i]=text[i]; // copy text into proper line } - _window->clear(); - for (int i=0;i<_rows;i++) { - _window->writeText(0,i,_lineBuffer[i]); + if (_enabled) { + _window->clear(); + for (int i=0; i<_rows; i++) { + _window->writeText(0,i,_lineBuffer[i]); + } } - if (strlen(text) > _columns){ + // text longer than line? + if (strlen(text) > _columns) { // add the remaining text to the next Line this->addText(text + _columns); } } -void Terminal::clear() { - for (int i=0;i<_rows;i++) { +void Terminal::clear() +{ + for (int i=0; i<_rows; i++) { _lineBuffer[i]=createLine(); } - _window->clear(); + if (_enabled) { + _window->clear(); + } +} + +void Terminal::disableDisplay() +{ + if (_enabled) { + _enabled = false; + _window->clear(); + } } + +void Terminal::enableDisplay() +{ + if (! _enabled) { + _enabled = true; + _window->clear(); + //Display the buffer-content + for (int i=0; i<_rows; i++) { + _window->writeText(0,i,_lineBuffer[i]); + } + } +} \ No newline at end of file
diff -r 393329d0e050 -r 99b500b05716 terminal.h --- a/terminal.h Tue Jan 12 20:40:39 2016 +0000 +++ b/terminal.h Wed Jan 13 19:38:54 2016 +0000 @@ -51,6 +51,14 @@ virtual int getRows(){return _rows;}; virtual void clear(); virtual void character(int column, int row, int c); + /** + * disable Output on Display + */ + void disableDisplay(); + /** + * Enable Output on Display + */ + void enableDisplay(); private: Window* _window; @@ -58,6 +66,7 @@ unsigned int _columns; unsigned int _rows; char* createLine(); + bool _enabled; }; #endif \ No newline at end of file