Update preset.
[bertos.git] / bertos / drv / lcd_lm44_qt.h
1 /**
2  * \file
3  * <!--
4  * This file is part of BeRTOS.
5  *
6  * Bertos is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19  *
20  * As a special exception, you may use this file as part of a free software
21  * library without restriction.  Specifically, if other files instantiate
22  * templates or use macros or inline functions from this file, or you compile
23  * this file and link it with other files to produce an executable, this
24  * file does not by itself cause the resulting executable to be covered by
25  * the GNU General Public License.  This exception does not however
26  * invalidate any other reasons why the executable file might be covered by
27  * the GNU General Public License.
28  *
29  * Copyright 2006 Develer S.r.l. (http://www.develer.com/)
30  * Copyright 2000,2001 Bernie Innocenti <bernie@codewiz.org>
31  *
32  * -->
33  *
34  *
35  * \author Bernie Innocenti <bernie@codewiz.org>
36  *
37  * \brief Custom Qt widget for emulating a graphics LCD display (implementation)
38  */
39
40 #ifndef EMULLCD_H
41 #define EMULLCD_H
42
43 #include <qframe.h>
44 #include <qfont.h>
45 #include <qcolor.h>
46
47 // fwd decls
48 class QSizePolicy;
49 class QPaintEvent;
50 class QResizeEvent;
51
52 /**
53  * Qt widget to emulate a dot-matrix LCD display.
54  */
55 class EmulLCD : public QFrame
56 {
57         Q_OBJECT
58
59 public:
60 // Attributes
61         enum { COLS = 20, ROWS = 4 };
62
63 // Construction
64         EmulLCD(QWidget *parent = 0, const char *name = 0);
65         virtual ~EmulLCD();
66
67 // Base class overrides
68 protected:
69         virtual QSizePolicy sizePolicy() const;
70         virtual QSize sizeHint() const;
71         virtual void drawContents(QPainter *p);
72
73 // Operations
74 public:
75         void MoveCursor         (int col, int row);
76         void ShowCursor         (bool show = true);
77         void PutChar            (unsigned char c);
78         char GetChar            ();
79         void Clear                      ();
80         void SetCGRamAddr       (unsigned char addr);
81
82 // Implementation
83 protected:
84         void SetPainter(QPainter & p);
85         void RedrawText(QPainter & p);
86         void PrintChar(QPainter & p, int row, int col);
87         void AdvanceCursor();
88
89         QFont lcd_font;                                 ///< Display character font
90         QColor fg_color, bg_color;              ///< LCD colors
91         int font_width, font_height;    ///< Font dimensions
92         int frame_width;                                ///< Frame width (and height)
93         int     cr_row, cr_col;                         ///< Cursor position
94         int cgramaddr;                                  ///< CGRAM Address (-1 disabled)
95         unsigned char ddram[ROWS][COLS];///< Display data RAM
96         unsigned char cgram[8*8];               ///< CGRAM
97         bool show_cursor;                               ///< Cursor enabled?
98 };
99
100 #endif // !defined(EMULLCD_H)
101