summaryrefslogtreecommitdiff
path: root/lpo/MyLCD.h
blob: 565e11078206df325aeefc1d15a42366aafcbb6a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#ifndef __MYLCD_H
#define __MYLCD_H
#undef PROGMEM
#define PROGMEM
#include <MultiLCD.h>
class MyLCD : public LCD_ILI9325D {
  /* 2.8" ILI9325 based LCD 320x240x16bpp*/
  public:
  uint8_t column, line;
  MyLCD() {
    LCD_ILI9325D::setFontSize(FONT_SIZE_SMALL);
    this->clear();
  }
  byte getLines() { return 30; }
  byte getCols() { return 53; }
  void setCursor(uint8_t column, uint8_t line) {
    /* column and line as in a terminal, start at line 1, col 1. each column is one character wide*/
    this->column = (column==0)?1:column;
    this->line = (column==0)?1:line;
    LCD_ILI9325D::setCursor((column-1)*6, line-1);
  }
  void clear() {
    LCD_ILI9325D::clear();
    this->setCursor(1, 1);
  }
  size_t println() {
    if ( this->line < this->getLines() ) {
      this->setCursor(1, this->line+1);
    } else {
      this->clear();
    }
  }
  void moveRight(size_t len) {
    if ( this->column+len <= this->getCols() ) {
      this->setCursor(this->column+len, this->line);
    } else {
      this->println();
    }
  }
  size_t println(const String &s) {
    size_t len = LCD_ILI9325D::print(s);
    this->println();
    return len;
  }
  size_t print(const String &s) {
    size_t len = LCD_ILI9325D::print(s);
    this->moveRight(len);
    return len;
  }
};
#endif