/* void KColorGrid::show() { //updateScrollBars(); QWidget::show(); } */ void KColorGrid::paintEvent(QPaintEvent *e) { //kdDebug(4640) << "KColorGrid::paintEvent" << endl; //updateScrollBars(); //QWidget::paintEvent(e); const QRect urect = e->rect(); //kdDebug(4640) << "Update rect = ( " << //urect.left() << ", " << urect.top() << ", " << urect.width() << ", " << urect.height() << " )" << endl; int firstcol = getX(urect.x())-1; int firstrow = getY(urect.y())-1; int lastcol = getX(urect.right())+1; int lastrow = getY(urect.bottom())+1; QWMatrix matrix; QPixmap pm(urect.width(),urect.height()); pm.fill(paletteBackgroundColor()); QPainter p; p.begin( &pm ); firstrow = (firstrow < 0) ? 0 : firstrow; firstcol = (firstcol < 0) ? 0 : firstcol; lastrow = (lastrow >= rows) ? rows : lastrow; lastcol = (lastcol >= cols) ? cols : lastcol; //kdDebug(4640) << urect.x() << " x " << urect.y() << " - row: " << urect.width() << " x " << urect.height() << endl; //kdDebug(4640) << "col: " << firstcol << " -> " << lastcol << " - row: " << firstrow << " -> " << lastrow << endl; /* if(this->isA("KDrawGrid")) kdDebug(4640) << "KDrawGrid\n firstcol: " << firstcol << "\n lastcol: " << lastcol << "\n firstrow: " << firstrow << "\n lastrow: " << lastrow << endl; */ for(int i = firstrow; i < lastrow; i++) { //if(this->isA("KDrawGrid")) // kdDebug(4640) << "Updating row " << i << endl; for(int j = firstcol; j < lastcol; j++) { matrix.translate( (j*cellsize)-urect.x(), (i*cellsize)-urect.y() ); p.setWorldMatrix( matrix ); //p.setClipRect(j*cellsize, i*cellsize, cellsize, cellsize); paintCell(&p, i, j); //p.setClipping(FALSE); matrix.reset(); p.setWorldMatrix( matrix ); } //kapp->processEvents(); } matrix.translate(-urect.x(),-urect.y()); p.setWorldMatrix( matrix ); paintForeground(&p,e); p.end(); bitBlt(this,urect.topLeft(),&pm,QRect(0,0,pm.width(),pm.height())); }
/* void KColorGrid::show() { //updateScrollBars(); QWidget::show(); } */ void KColorGrid::paintEvent(QPaintEvent *e) { //debug("KColorGrid::paintEvent"); //updateScrollBars(); //QWidget::paintEvent(e); const QRect urect = e->rect(); //debug("Update rect = ( %i, %i, %i, %i )", //urect.left(),urect.top(), urect.width(), urect.height() ); int firstcol = getX(urect.x())-1; int firstrow = getY(urect.y())-1; int lastcol = getX(urect.right())+1; int lastrow = getY(urect.bottom())+1; QWMatrix matrix; QPainter p; p.begin( this ); firstrow = (firstrow < 0) ? 0 : firstrow; firstcol = (firstcol < 0) ? 0 : firstcol; lastrow = (lastrow >= rows) ? rows : lastrow; lastcol = (lastcol >= cols) ? cols : lastcol; //debug("%d x %d - row: %d x %d", urect.x(), urect.y(), urect.width(), urect.height()); //debug("col: %d -> %d - row: %d -> %d", firstcol, lastcol, firstrow, lastrow); /* if(this->isA("KDrawGrid")) debug("KDrawGrid\n firstcol: %d\n lastcol: %d\n firstrow: %d\n lastrow: %d", firstcol, lastcol, firstrow, lastrow); */ for(int i = firstrow; i < lastrow; i++) { //if(this->isA("KDrawGrid")) // debug("Updating row %d", i); for(int j = firstcol; j < lastcol; j++) { matrix.translate( (j*cellsize), (i*cellsize) ); p.setWorldMatrix( matrix ); //p.setClipRect(j*cellsize, i*cellsize, cellsize, cellsize); paintCell(&p, i, j); //p.setClipping(FALSE); matrix.reset(); p.setWorldMatrix( matrix ); } //kapp->processEvents(); } p.end(); }
bool KGrCanvas::changeSize (int d) { #ifdef QT3 if ((d < 0) && (scaleStep <= STEP)) { // Note: Smaller scales lose detail (e.g. the joints in brickwork). KGrMessage::information (this, i18n("Change Size"), i18n("Sorry, you cannot make the play area any smaller.")); return FALSE; } if ((d >= 0) && (scaleStep >= 2 * STEP)) { // Note: Larger scales go off the edge of the monitor. KGrMessage::information (this, i18n("Change Size"), i18n("Sorry, you cannot make the play area any larger.")); return FALSE; } QWMatrix wm = worldMatrix(); double wmScale = 1.0; // Set the scale back to 1:1 and calculate the new scale factor. wm.reset(); scaleStep = (d < 0) ? (scaleStep - 1) : (scaleStep + 1); // If scale > 1:1, scale up to the new factor (e.g. 1.25:1, 1.5:1, etc.) if (scaleStep > STEP) { wmScale = (wmScale * scaleStep) / STEP; wm.scale (wmScale, wmScale); } setWorldMatrix (wm); // Force the title size and position to be re-calculated. QString t = title->text(); makeTitle (); setTitle (t); // Fit the QCanvasView and its frame to the canvas. int frame = frameWidth()*2; setFixedSize ((FIELDWIDTH + 4) * 4 * scaleStep + frame, (FIELDHEIGHT + 4) * 4 * scaleStep + frame); return TRUE; #else KGrMessage::information (this, i18n( "Change Size" ), i18n( "Sorry, you cannot change the size of the playing area. " "That function requires Qt Library version 3 or later." )); return FALSE; #endif }
void KWMThemeClient::doShape() { QBitmap shapemask(width(), height()); shapemask.fill(color0); QPainter p; p.begin(&shapemask); p.setBrush(color1); p.setPen(color1); int x,y; // first the corners int w1 = framePixmaps[FrameTopLeft]->width(); int h1 = framePixmaps[FrameTopLeft]->height(); if (w1 > width()/2) w1 = width()/2; if (h1 > height()/2) h1 = height()/2; if (framePixmaps[FrameTopLeft]->mask()) p.drawPixmap(0,0,*framePixmaps[FrameTopLeft]->mask(), 0,0,w1, h1); else p.fillRect(0,0,w1,h1,color1); int w2 = framePixmaps[FrameTopRight]->width(); int h2 = framePixmaps[FrameTopRight]->height(); if (w2 > width()/2) w2 = width()/2; if (h2 > height()/2) h2 = height()/2; if (framePixmaps[FrameTopRight]->mask()) p.drawPixmap(width()-w2,0,*framePixmaps[FrameTopRight]->mask(), framePixmaps[FrameTopRight]->width()-w2,0,w2, h2); else p.fillRect(width()-w2,0,w2, h2,color1); int w3 = framePixmaps[FrameBottomLeft]->width(); int h3 = framePixmaps[FrameBottomLeft]->height(); if (w3 > width()/2) w3 = width()/2; if (h3 > height()/2) h3 = height()/2; if (framePixmaps[FrameBottomLeft]->mask()) p.drawPixmap(0,height()-h3,*framePixmaps[FrameBottomLeft]->mask(), 0,framePixmaps[FrameBottomLeft]->height()-h3,w3, h3); else p.fillRect(0,height()-h3,w3,h3,color1); int w4 = framePixmaps[FrameBottomRight]->width(); int h4 = framePixmaps[FrameBottomRight]->height(); if (w4 > width()/2) w4 = width()/2; if (h4 > height()/2) h4 = height()/2; if (framePixmaps[FrameBottomRight]->mask()) p.drawPixmap(width()-w4,height()-h4,*framePixmaps[FrameBottomRight]->mask(), framePixmaps[FrameBottomRight]->width()-w4, framePixmaps[FrameBottomRight]->height()-h4, w4, h4); else p.fillRect(width()-w4,height()-h4,w4,h4,color1); QPixmap pm; QWMatrix m; int n,s,w; //top if (framePixmaps[FrameTop]->mask()) { pm = *framePixmaps[FrameTop]->mask(); s = width()-w2-w1; n = s/pm.width(); w = n>0?s/n:s; m.reset(); m.scale(w/(float)pm.width(), 1); pm = pm.xForm(m); x = w1; while (1){ if (pm.width() < width()-w2-x){ p.drawPixmap(x,maxExtent-pm.height()-1, pm); x += pm.width(); } else { p.drawPixmap(x,maxExtent-pm.height()-1, pm, 0,0,width()-w2-x,pm.height()); break; } } } //bottom if (framePixmaps[FrameBottom]->mask()) { pm = *framePixmaps[FrameBottom]->mask(); s = width()-w4-w3; n = s/pm.width(); w = n>0?s/n:s; m.reset(); m.scale(w/(float)pm.width(), 1); pm = pm.xForm(m); x = w3; while (1){ if (pm.width() < width()-w4-x){ p.drawPixmap(x,height()-maxExtent+1,pm); x += pm.width(); } else { p.drawPixmap(x,height()-maxExtent+1,pm, 0,0,width()-w4-x,pm.height()); break; } } } //left if (framePixmaps[FrameLeft]->mask()) { pm = *framePixmaps[FrameLeft]->mask(); s = height()-h3-h1; n = s/pm.height(); w = n>0?s/n:s; m.reset(); m.scale(1, w/(float)pm.height()); pm = pm.xForm(m); y = h1; while (1){ if (pm.height() < height()-h3-y){ p.drawPixmap(maxExtent-pm.width()-1, y, pm); y += pm.height(); } else { p.drawPixmap(maxExtent-pm.width()-1, y, pm, 0,0, pm.width(), height()-h3-y); break; } } } //right if (framePixmaps[FrameRight]->mask()) { pm = *framePixmaps[FrameRight]->mask(); s = height()-h4-h2; n = s/pm.height(); w = n>0?s/n:s; m.reset(); m.scale(1, w/(float)pm.height()); pm = pm.xForm(m); y = h2; while (1){ if (pm.height() < height()-h4-y){ p.drawPixmap(width()-maxExtent+1, y, pm); y += pm.height(); } else { p.drawPixmap(width()-maxExtent+1, y, pm, 0,0, pm.width(), height()-h4-y); break; } } } p.fillRect(maxExtent-1, maxExtent-1, width()-2*maxExtent+2, height()-2*maxExtent+2, color1); setMask(shapemask); }
void KWMThemeClient::paintEvent( QPaintEvent *) { QPainter p; p.begin(widget()); int x,y; // first the corners int w1 = framePixmaps[FrameTopLeft]->width(); int h1 = framePixmaps[FrameTopLeft]->height(); if (w1 > width()/2) w1 = width()/2; if (h1 > height()/2) h1 = height()/2; p.drawPixmap(0,0,*framePixmaps[FrameTopLeft], 0,0,w1, h1); int w2 = framePixmaps[FrameTopRight]->width(); int h2 = framePixmaps[FrameTopRight]->height(); if (w2 > width()/2) w2 = width()/2; if (h2 > height()/2) h2 = height()/2; p.drawPixmap(width()-w2,0,*framePixmaps[FrameTopRight], framePixmaps[FrameTopRight]->width()-w2,0,w2, h2); int w3 = framePixmaps[FrameBottomLeft]->width(); int h3 = framePixmaps[FrameBottomLeft]->height(); if (w3 > width()/2) w3 = width()/2; if (h3 > height()/2) h3 = height()/2; p.drawPixmap(0,height()-h3,*framePixmaps[FrameBottomLeft], 0,framePixmaps[FrameBottomLeft]->height()-h3,w3, h3); int w4 = framePixmaps[FrameBottomRight]->width(); int h4 = framePixmaps[FrameBottomRight]->height(); if (w4 > width()/2) w4 = width()/2; if (h4 > height()/2) h4 = height()/2; p.drawPixmap(width()-w4,height()-h4,*(framePixmaps[FrameBottomRight]), framePixmaps[FrameBottomRight]->width()-w4, framePixmaps[FrameBottomRight]->height()-h4, w4, h4); QPixmap pm; QWMatrix m; int n,s,w; //top pm = *framePixmaps[FrameTop]; if (pm.width() > 0){ s = width()-w2-w1; n = s/pm.width(); w = n>0?s/n:s; m.reset(); m.scale(w/(float)pm.width(), 1); pm = pm.xForm(m); x = w1; while (1){ if (pm.width() < width()-w2-x){ p.drawPixmap(x,maxExtent-pm.height()-1, pm); x += pm.width(); } else { p.drawPixmap(x,maxExtent-pm.height()-1, pm, 0,0,width()-w2-x,pm.height()); break; } } } //bottom pm = *framePixmaps[FrameBottom]; if (pm.width() > 0){ s = width()-w4-w3; n = s/pm.width(); w = n>0?s/n:s; m.reset(); m.scale(w/(float)pm.width(), 1); pm = pm.xForm(m); x = w3; while (1){ if (pm.width() < width()-w4-x){ p.drawPixmap(x,height()-maxExtent+1,pm); x += pm.width(); } else { p.drawPixmap(x,height()-maxExtent+1,pm, 0,0,width()-w4-x,pm.height()); break; } } } //left pm = *framePixmaps[FrameLeft]; if (pm.height() > 0){ s = height()-h3-h1; n = s/pm.height(); w = n>0?s/n:s; m.reset(); m.scale(1, w/(float)pm.height()); pm = pm.xForm(m); y = h1; while (1){ if (pm.height() < height()-h3-y){ p.drawPixmap(maxExtent-pm.width()-1, y, pm); y += pm.height(); } else { p.drawPixmap(maxExtent-pm.width()-1, y, pm, 0,0, pm.width(), height()-h3-y); break; } } } //right pm = *framePixmaps[FrameRight]; if (pm.height() > 0){ s = height()-h4-h2; n = s/pm.height(); w = n>0?s/n:s; m.reset(); m.scale(1, w/(float)pm.height()); pm = pm.xForm(m); y = h2; while (1){ if (pm.height() < height()-h4-y){ p.drawPixmap(width()-maxExtent+1, y, pm); y += pm.height(); } else { p.drawPixmap(width()-maxExtent+1, y, pm, 0,0, pm.width(), height()-h4-y); break; } } } drawTitle(p); QColor c = widget()->colorGroup().background(); // KWM evidently had a 1 pixel border around the client window. We // emulate it here, but should be removed at some point in order to // seamlessly mesh widget themes p.setPen(c); p.drawRect(maxExtent-1, maxExtent-1, width()-(maxExtent-1)*2, height()-(maxExtent-1)*2); // We fill the area behind the wrapped widget to ensure that // shading animation is drawn as smoothly as possible QRect r(layout->cellGeometry(2, 1)); p.fillRect( r.x(), r.y(), r.width(), r.height(), c); p.end(); }
QSize ImageView::getProperMatrixAndSize(QWMatrix &mat, QPixmap &img) { int width, height; int vsplit, hsplit; double scale = 1.0f; width = img.width(); height = img.height(); switch (m_splitMethod) { case IVSM_NONE: vsplit = 1; hsplit = 1; break; case IVSM_STATIC: vsplit = m_vSplit; hsplit = m_hSplit; break; case IVSM_PORTRAIT: hsplit = 1; while (width/hsplit>height) hsplit++; vsplit = 1; break; case IVSM_LANDSCAPE: vsplit = 1; while (height/vsplit>width) hsplit++; hsplit = 1; break; } if (hsplit>1) width = (width+hsplit-1)/hsplit; if (vsplit>1) height = (height+vsplit-1)/vsplit; switch (m_fitMethod) { case IVFM_NONE: scale = 1.0f; break; case IVFM_STATIC: scale = m_scaleFactor; break; case IVFM_WIDTH: scale = (double)m_deskSize.width()/width; break; case IVFM_HEIGHT: scale = (double)m_deskSize.height()/height; break; case IVFM_BOTH: scale = (double)m_deskSize.height()/height; if ((double)m_deskSize.width()/width<scale) scale = (double)m_deskSize.width()/width; break; } if (m_noScaleUp && m_fitMethod!=IVFM_STATIC && scale>1.0f) { scale = 1.0f; } mat.reset(); mat.scale(scale, scale); return QSize(hsplit, vsplit); }