Fix the bug related to the empty version list
[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  * \version $Id$
35  *
36  * \author Bernie Innocenti <bernie@codewiz.org>
37  *
38  * \brief Custom Qt widget for emulating a graphics LCD display (implementation)
39  */
40
41 #ifndef EMULLCD_H
42 #define EMULLCD_H
43
44 #include <qframe.h>
45 #include <qfont.h>
46 #include <qcolor.h>
47
48 // fwd decls
49 class QSizePolicy;
50 class QPaintEvent;
51 class QResizeEvent;
52
53 /**
54  * Qt widget to emulate a dot-matrix LCD display.
55  */
56 class EmulLCD : public QFrame
57 {
58         Q_OBJECT
59
60 public:
61 // Attributes
62         enum { COLS = 20, ROWS = 4 };
63
64 // Construction
65         EmulLCD(QWidget *parent = 0, const char *name = 0);
66         virtual ~EmulLCD();
67
68 // Base class overrides
69 protected:
70         virtual QSizePolicy sizePolicy() const;
71         virtual QSize sizeHint() const;
72         virtual void drawContents(QPainter *p);
73
74 // Operations
75 public:
76         void MoveCursor         (int col, int row);
77         void ShowCursor         (bool show = true);
78         void PutChar            (unsigned char c);
79         char GetChar            ();
80         void Clear                      ();
81         void SetCGRamAddr       (unsigned char addr);
82
83 // Implementation
84 protected:
85         void SetPainter(QPainter & p);
86         void RedrawText(QPainter & p);
87         void PrintChar(QPainter & p, int row, int col);
88         void AdvanceCursor();
89
90         QFont lcd_font;                                 ///< Display character font
91         QColor fg_color, bg_color;              ///< LCD colors
92         int font_width, font_height;    ///< Font dimensions
93         int frame_width;                                ///< Frame width (and height)
94         int     cr_row, cr_col;                         ///< Cursor position
95         int cgramaddr;                                  ///< CGRAM Address (-1 disabled)
96         unsigned char ddram[ROWS][COLS];///< Display data RAM
97         unsigned char cgram[8*8];               ///< CGRAM
98         bool show_cursor;                               ///< Cursor enabled?
99 };
100
101 #endif // !defined(EMULLCD_H)
102