author | ibotty <ibotty> | 2002-10-14 11:44:23 (UTC) |
---|---|---|
committer | ibotty <ibotty> | 2002-10-14 11:44:23 (UTC) |
commit | 767d7347ce002e7633278d66758e17d49f40b0f0 (patch) (side-by-side diff) | |
tree | d6611d0151cd4c42e51fc98c8e8c87a93788e128 /noncore/apps/opie-console/emulation_widget.cpp | |
parent | 0bccef01b70fec98e744fab286f5ea443287cdad (diff) | |
download | opie-767d7347ce002e7633278d66758e17d49f40b0f0.zip opie-767d7347ce002e7633278d66758e17d49f40b0f0.tar.gz opie-767d7347ce002e7633278d66758e17d49f40b0f0.tar.bz2 |
widget should now update properly
Diffstat (limited to 'noncore/apps/opie-console/emulation_widget.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/apps/opie-console/emulation_widget.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/noncore/apps/opie-console/emulation_widget.cpp b/noncore/apps/opie-console/emulation_widget.cpp index 40199fa..5a02fac 100644 --- a/noncore/apps/opie-console/emulation_widget.cpp +++ b/noncore/apps/opie-console/emulation_widget.cpp @@ -169,2 +169,48 @@ void EmulationWidget::setImage( QArray<Character> const newimg, int lines, int c + +void EmulationWidget::paintEvent( QPaintEvent* pe ) +{ + QPainter painter; + const QPixmap* pm = backgroundPixmap(); + + painter.begin( this ); + painter.setBackgroundMode( TransparentMode ); + + QRect rect = pe->rect().intersect( contentsRect() ); + QPoint tL = contentsRect().topLeft(); + int tLx = tL.x(); + int tLy = tL.y(); + + int lux = QMIN(m_columns-1, QMAX(0,(rect.left() - tLx - m_blX ) / f_width)); + int luy = QMIN(m_lines-1, QMAX(0,(rect.top() - tLy - m_bY ) / f_height)); + int rlx = QMIN(m_columns-1, QMAX(0,(rect.right() - tLx - m_blX ) / f_width)); + int rly = QMIN(m_lines-1, QMAX(0,(rect.bottom() - tLy - m_bY ) / f_height)); + + QChar *disstrU = new QChar[m_columns]; + for (int y = luy; y <= rly; y++) + for (int x = lux; x <= rlx; x++) + { + int len = 1; + disstrU[0] = vt100extended(m_image[loc(x,y)].c); + int cf = m_image[loc(x,y)].f; + int cb = m_image[loc(x,y)].b; + int cr = m_image[loc(x,y)].r; + while (x+len <= rlx && + m_image[loc(x+len,y)].f == cf && + m_image[loc(x+len,y)].b == cb && + m_image[loc(x+len,y)].r == cr ) + { + disstrU[len] = vt100extended(m_image[loc(x+len,y)].c); + len += 1; + } + QString unistr(disstrU,len); + + drawAttrString( unistr, painter, QRect( m_blX+tLx+f_width*x,m_bY+tLy+f_height*y,f_width*len,f_height ), m_image[loc(x ,y )], pm != NULL, false ); + x +=len -1; + } + delete [] disstrU; + drawFrame( &painter ); + painter.end(); +} + void EmulationWidget::calcGeometry() |