4 * Copyright 2006 Develer S.r.l. (http://www.develer.com/)
5 * This file is part of DevLib - See README.devlib for information.
10 * \author Bernardo Innocenti <bernie@develer.com>
12 * \brief Custom control for graphics LCD emulation (interface)
17 *#* Revision 1.2 2006/01/17 02:30:43 bernie
18 *#* Fix QImage format.
20 *#* Revision 1.1 2006/01/16 03:51:35 bernie
21 *#* Add LCD Qt emulator.
25 #include "lcd_gfx_qt.h"
26 #include <emul/emul.h>
27 #include <cfg/debug.h>
31 #include <qsizepolicy.h>
35 #define LCD_FG_COLOR 0x0, 0x0, 0x0
36 #define LCD_BG_COLOR 0xBB, 0xCC, 0xBB
39 EmulLCD::EmulLCD(QWidget *parent, const char *name) :
40 QFrame(parent, name, WRepaintNoErase | WResizeNoErase),
41 fg_color(LCD_FG_COLOR),
42 bg_color(LCD_BG_COLOR)
45 memset(raster, 0xAA, sizeof(raster));
48 setFrameStyle(QFrame::Panel | QFrame::Sunken);
49 frame_width = frameWidth();
59 QSizePolicy EmulLCD::sizePolicy() const
61 return QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed, false);
65 QSize EmulLCD::sizeHint() const
68 WIDTH + frame_width * 2,
69 HEIGHT + frame_width * 2);
73 void EmulLCD::drawContents(QPainter *p)
75 QImage img(raster, WIDTH, HEIGHT, 1, NULL, 0, QImage::BigEndian);
77 p->setBackgroundMode(OpaqueMode);
79 p->setBackgroundColor(bg_color);
80 p->drawImage(frame_width, frame_width, img);
83 void EmulLCD::writeRaster(uint8_t *new_raster)
85 memcpy(raster, new_raster, sizeof(raster));
94 #include <cfg/debug.h>
97 * Raster buffer to draw into.
98 * Bits in the bitmap bytes have vertical orientation,
99 * as required by the LCD driver.
101 DECLARE_WALL(wall_before_raster, WALL_SIZE)
102 static uint8_t lcd_raster[(EmulLCD::WIDTH + 7 / 8) * EmulLCD::HEIGHT];
103 DECLARE_WALL(wall_after_raster, WALL_SIZE)
105 /*! Default LCD bitmap */
106 struct Bitmap lcd_bitmap;
108 extern "C" void lcd_init(void)
110 //INIT_WALL(wall_before_raster);
111 //INIT_WALL(wall_after_raster);
112 gfx_bitmapInit(&lcd_bitmap, lcd_raster, EmulLCD::WIDTH, EmulLCD::HEIGHT);
113 gfx_bitmapClear(&lcd_bitmap);
116 extern "C" void lcd_blit_bitmap(Bitmap *bm)
118 //CHECK_WALL(wall_before_raster);
119 //CHECK_WALL(wall_after_raster);
120 emul->emulLCD->writeRaster(bm->raster);
123 #include "lcd_gfx_qt_moc.cpp"