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.1 2006/01/16 03:51:35 bernie
18 *#* Add LCD Qt emulator.
22 #include "lcd_gfx_qt.h"
23 #include <emul/emul.h>
27 #include <qsizepolicy.h>
31 #define LCD_FG_COLOR 0x0, 0x0, 0x0
32 #define LCD_BG_COLOR 0xBB, 0xCC, 0xBB
35 EmulLCD::EmulLCD(QWidget *parent, const char *name) :
36 QFrame(parent, name, WRepaintNoErase | WResizeNoErase),
37 fg_color(LCD_FG_COLOR),
38 bg_color(LCD_BG_COLOR)
41 memset(raster, 0xAA, sizeof(raster));
44 setFrameStyle(QFrame::Panel | QFrame::Sunken);
45 frame_width = frameWidth();
55 QSizePolicy EmulLCD::sizePolicy() const
57 return QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed, false);
61 QSize EmulLCD::sizeHint() const
64 WIDTH + frame_width * 2,
65 HEIGHT + frame_width * 2);
69 void EmulLCD::drawContents(QPainter *p)
71 QImage img(raster, WIDTH, HEIGHT, 1, NULL, 0, QImage::IgnoreEndian);
73 p->setBackgroundMode(OpaqueMode);
75 p->setBackgroundColor(bg_color);
76 p->drawImage(frame_width, frame_width, img);
79 void EmulLCD::writeRaster(uint8_t *new_raster)
81 memcpy(raster, new_raster, sizeof(raster));
90 #include <cfg/debug.h>
93 * Raster buffer to draw into.
94 * Bits in the bitmap bytes have vertical orientation,
95 * as required by the LCD driver.
97 DECLARE_WALL(wall_before_raster, WALL_SIZE)
98 static uint8_t lcd_raster[EmulLCD::WIDTH * ((EmulLCD::HEIGHT + 7) / 8)];
99 DECLARE_WALL(wall_after_raster, WALL_SIZE)
101 /*! Default LCD bitmap */
102 struct Bitmap lcd_bitmap;
104 extern "C" void lcd_init(void)
106 gfx_bitmapInit(&lcd_bitmap, lcd_raster, EmulLCD::WIDTH, EmulLCD::HEIGHT);
107 gfx_bitmapClear(&lcd_bitmap);
110 extern "C" void lcd_blit_bitmap(Bitmap *bm)
112 emul->emulLCD->writeRaster(bm->raster);
115 #include "lcd_gfx_qt_moc.cpp"