X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=drv%2Flcd_gfx_qt.cpp;h=f838ac7d4e23ae5522239ed25f6432d7e308b4da;hb=c4a2aaf58b87121634905fc689312000aec47ef6;hp=7c2b25f2f8dc18bffc41fb43b51bbd311a99892b;hpb=02119aca75e842d92288d5a0ce02558b42267c7f;p=bertos.git diff --git a/drv/lcd_gfx_qt.cpp b/drv/lcd_gfx_qt.cpp index 7c2b25f2..f838ac7d 100755 --- a/drv/lcd_gfx_qt.cpp +++ b/drv/lcd_gfx_qt.cpp @@ -14,6 +14,12 @@ /*#* *#* $Log$ + *#* Revision 1.6 2006/02/20 02:00:40 bernie + *#* Port to Qt 4.1. + *#* + *#* Revision 1.5 2006/02/15 09:13:16 bernie + *#* Switch to BITMAP_FMT_PLANAR_V_LSB. + *#* *#* Revision 1.4 2006/02/10 12:33:49 bernie *#* Make emulator display a bit larger. *#* @@ -31,11 +37,19 @@ #include "lcd_gfx_qt.h" #include #include - -#include -#include -#include -#include +#include // CONFIG_BITMAP_FMT + +#if _QT < 4 + #include + #include + #include + #include +#else + #include + #include + #include + #include +#endif // Display colors #define LCD_FG_COLOR 0x0, 0x0, 0x0 @@ -43,7 +57,7 @@ EmulLCD::EmulLCD(QWidget *parent, const char *name) : - QFrame(parent, name, WRepaintNoErase | WResizeNoErase), + QFrame(parent, name, Qt::WRepaintNoErase | Qt::WResizeNoErase), fg_color(LCD_FG_COLOR), bg_color(LCD_BG_COLOR) { @@ -76,22 +90,45 @@ QSize EmulLCD::sizeHint() const } -void EmulLCD::drawContents(QPainter *p) +void EmulLCD::paintEvent(QPaintEvent * /*event*/) { + QPainter p(this); QImage img(raster, WIDTH, HEIGHT, 1, NULL, 0, QImage::BigEndian); - p->setBackgroundMode(OpaqueMode); - p->setPen(fg_color); - p->setBackgroundColor(bg_color); - p->drawImage(frame_width, frame_width, img); + p.setBackgroundMode(Qt::OpaqueMode); + p.setPen(fg_color); + p.setBackgroundColor(bg_color); + p.drawImage(frame_width, frame_width, img); } void EmulLCD::writeRaster(uint8_t *new_raster) { +#if CONFIG_BITMAP_FMT == BITMAP_FMT_PLANAR_H_MSB + + /* Straight copy */ memcpy(raster, new_raster, sizeof(raster)); - QPainter p(this); - drawContents(&p); +#elif CONFIG_BITMAP_FMT == BITMAP_FMT_PLANAR_V_LSB + + /* Rotation */ + for (int y = 0; y < HEIGHT; ++y) + { + for (int xbyte = 0; xbyte < WIDTH/8; ++xbyte) + { + uint8_t v = 0; + for (int xbit = 0; xbit < 8; ++xbit) + v |= (new_raster[(xbyte * 8 + xbit) + (y / 8) * WIDTH] & (1 << (y%8)) ) + ? (1 << (7 - xbit)) : 0; + + raster[y * ((WIDTH + 7) / 8) + xbyte] = v; + } + } + +#else + #error Unsupported bitmap format +#endif + + repaint(); }