Fork of LCD-Window which works with Enhanced TextLCD from Wim
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 |
--- 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
--- 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