X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=drv%2Flcd_gfx_qt.cpp;h=38d0753863f18176a079276b23fdeecbe478e534;hb=1ab5fa0763879ab997884c8bc88631b69205a191;hp=7c2b25f2f8dc18bffc41fb43b51bbd311a99892b;hpb=02119aca75e842d92288d5a0ce02558b42267c7f;p=bertos.git diff --git a/drv/lcd_gfx_qt.cpp b/drv/lcd_gfx_qt.cpp old mode 100755 new mode 100644 index 7c2b25f2..38d07538 --- a/drv/lcd_gfx_qt.cpp +++ b/drv/lcd_gfx_qt.cpp @@ -1,8 +1,33 @@ /** * \file * * * \version $Id$ @@ -14,6 +39,21 @@ /*#* *#* $Log$ + *#* Revision 1.9 2006/07/19 12:56:25 bernie + *#* Convert to new Doxygen style. + *#* + *#* Revision 1.8 2006/05/28 12:17:57 bernie + *#* Drop almost all the Qt3 cruft. + *#* + *#* Revision 1.7 2006/04/27 05:43:08 bernie + *#* Fix naming conventions. + *#* + *#* 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. *#* @@ -25,17 +65,17 @@ *#* *#* Revision 1.1 2006/01/16 03:51:35 bernie *#* Add LCD Qt emulator. - *#* *#*/ #include "lcd_gfx_qt.h" #include #include +#include // CONFIG_BITMAP_FMT -#include -#include -#include -#include +#include +#include +#include +#include // Display colors #define LCD_FG_COLOR 0x0, 0x0, 0x0 @@ -43,7 +83,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 +116,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)) ) + ? 0 : (1 << (7 - xbit)); + + raster[y * ((WIDTH + 7) / 8) + xbyte] = v; + } + } + +#else + #error Unsupported bitmap format +#endif + + repaint(); } @@ -99,17 +162,17 @@ void EmulLCD::writeRaster(uint8_t *new_raster) #include #include -/*! +DECLARE_WALL(wall_before_raster, WALL_SIZE) +/** * Raster buffer to draw into. * * Bits in the bitmap bytes have vertical orientation, * as required by the LCD driver. */ -DECLARE_WALL(wall_before_raster, WALL_SIZE) static uint8_t lcd_raster[RASTER_SIZE(EmulLCD::WIDTH, EmulLCD::HEIGHT)]; DECLARE_WALL(wall_after_raster, WALL_SIZE) -/*! Default LCD bitmap */ +/** Default LCD bitmap */ struct Bitmap lcd_bitmap; /*extern "C"*/ void lcd_init(void) @@ -120,7 +183,7 @@ struct Bitmap lcd_bitmap; gfx_bitmapClear(&lcd_bitmap); } -/*extern "C"*/ void lcd_blit_bitmap(Bitmap *bm) +/*extern "C"*/ void lcd_blitBitmap(Bitmap *bm) { //FIXME CHECK_WALL(wall_before_raster); //FIXME CHECK_WALL(wall_after_raster);