/** * Repaints the view. If the view has been invalidated before, * the view is redrawn from scratch. Otherwise, only a cached * buffer is drawn (very fast). * * \see invalidate */ void RGraphicsViewQt::paintEvent(QPaintEvent* e) { // enable timer for performance monitoring: //RDebug::startTimer(); RDocumentInterface* di = getDocumentInterface(); if (di!=NULL && di->isSuspended()) { QPainter wPainter(this); //wPainter.drawImage(0, 0, graphicsBuffer); wPainter.drawImage(getRect(), graphicsBuffer); //QPixmap pm; //pm.convertFromImage(graphicsBuffer); //wPainter.drawPixmap(this->rect(), pm); wPainter.end(); return; } updateImage(); // event is NULL for fake paint events (testing): if (e!=NULL) { QPainter wPainter(this); //wPainter.drawImage(0, 0, graphicsBufferWithPreview); wPainter.drawImage(getRect(), graphicsBufferWithPreview); //QPixmap pm; //pm.convertFromImage(graphicsBufferWithPreview); //wPainter.drawPixmap(this->rect(), pm); wPainter.end(); } //RDebug::stopTimer("paintEvent"); }
bool GoTableWidget::buildPixmaps(int diameter) { QSvgRenderer svgR; delete blackStonePixmap; blackStonePixmap = new QPixmap(diameter, diameter); blackStonePixmap->fill(Qt::transparent); svgR.load(QString(":/resources/cursorBlack.svg")); QPainter bPainter(blackStonePixmap); svgR.render(&bPainter); delete blackCursor; blackCursor = new QCursor(*blackStonePixmap); delete whiteStonePixmap; whiteStonePixmap = new QPixmap(diameter, diameter); whiteStonePixmap->fill(QColor(0, 0, 0, 0)); svgR.load(QString(":/resources/cursorWhite.svg")); QPainter wPainter(whiteStonePixmap); svgR.render(&wPainter); delete whiteCursor; whiteCursor = new QCursor(*whiteStonePixmap); delete redStonePixmap; redStonePixmap = new QPixmap(diameter, diameter); redStonePixmap->fill(QColor(0, 0, 0, 0)); svgR.load(QString(":/resources/cursorRed.svg")); QPainter rPainter(redStonePixmap); svgR.render(&rPainter); delete redCursor; redCursor = new QCursor(*redStonePixmap); return true; }
/** * Handles paint events by redrawing the graphic in this view. * usually that's very fast since we only paint the buffer we * have from the last call.. */ void QG_GraphicView::paintEvent(QPaintEvent *) { RS_DEBUG->print("QG_GraphicView::paintEvent begin"); RS_SETTINGS->beginGroup("/Appearance"); bool draftMode = (bool)RS_SETTINGS->readNumEntry("/DraftMode", 0); RS_SETTINGS->endGroup(); // Re-Create or get the layering pixmaps PixmapLayer1=getPixmapForView(PixmapLayer1); PixmapLayer2=getPixmapForView(PixmapLayer2); PixmapLayer3=getPixmapForView(PixmapLayer3); // Draw Layer 1 if (redrawMethod & RS2::RedrawGrid) { PixmapLayer1->fill(background); RS_PainterQt painter1(PixmapLayer1); //painter1->setBackgroundMode(Qt::OpaqueMode); //painter1->setBackgroundColor(background); //painter1->eraseRect(0,0,getWidth(), getHeight()); drawLayer1((RS_Painter*)&painter1); painter1.end(); } if (redrawMethod & RS2::RedrawDrawing) { // DRaw layer 2 PixmapLayer2->fill(Qt::transparent); RS_PainterQt painter2(PixmapLayer2); painter2.setDrawingMode(drawingMode); setDraftMode(draftMode); painter2.setDrawSelectedOnly(false); drawLayer2((RS_Painter*)&painter2); painter2.setDrawSelectedOnly(true); drawLayer2((RS_Painter*)&painter2); //removed to solve bug #3470573 // setDraftMode(false); painter2.end(); } if (redrawMethod & RS2::RedrawOverlay) { PixmapLayer3->fill(Qt::transparent); RS_PainterQt painter3(PixmapLayer3); drawLayer3((RS_Painter*)&painter3); painter3.end(); } // Finally paint the layers back on the screen, bitblk to the rescue! RS_PainterQt wPainter(this); //wPainter.setCompositionMode(QPainter::CompositionMode_Screen); wPainter.drawPixmap(0,0,*PixmapLayer1); wPainter.drawPixmap(0,0,*PixmapLayer2); wPainter.drawPixmap(0,0,*PixmapLayer3); wPainter.end(); redrawMethod=RS2::RedrawNone; RS_DEBUG->print("QG_GraphicView::paintEvent end"); }
/** * Handles paint events by redrawing the graphic in this view. * usually that's very fast since we only paint the buffer we * have from the last call.. */ void QG_GraphicView::paintEvent(QPaintEvent *) { // Re-Create or get the layering pixmaps getPixmapForView(PixmapLayer1); getPixmapForView(PixmapLayer2); getPixmapForView(PixmapLayer3); // Draw Layer 1 if (redrawMethod & RS2::RedrawGrid) { PixmapLayer1->fill(background); RS_PainterQt painter1(PixmapLayer1.get()); drawLayer1((RS_Painter*)&painter1); painter1.end(); } if (redrawMethod & RS2::RedrawDrawing) { view_rect = LC_Rect(toGraph(0, 0), toGraph(getWidth(), getHeight())); // DRaw layer 2 PixmapLayer2->fill(Qt::transparent); RS_PainterQt painter2(PixmapLayer2.get()); if (antialiasing) { painter2.setRenderHint(QPainter::Antialiasing); } painter2.setDrawingMode(drawingMode); painter2.setDrawSelectedOnly(false); drawLayer2((RS_Painter*)&painter2); painter2.setDrawSelectedOnly(true); drawLayer2((RS_Painter*)&painter2); painter2.end(); } if (redrawMethod & RS2::RedrawOverlay) { PixmapLayer3->fill(Qt::transparent); RS_PainterQt painter3(PixmapLayer3.get()); if (antialiasing) { painter3.setRenderHint(QPainter::Antialiasing); } drawLayer3((RS_Painter*)&painter3); painter3.end(); } // Finally paint the layers back on the screen, bitblk to the rescue! RS_PainterQt wPainter(this); wPainter.drawPixmap(0,0,*PixmapLayer1); wPainter.drawPixmap(0,0,*PixmapLayer2); wPainter.drawPixmap(0,0,*PixmapLayer3); wPainter.end(); redrawMethod=RS2::RedrawNone; }
void MyLcdDisplay::paintEvent(QPaintEvent *pe) { Q_UNUSED(pe); QPainter wPainter(viewport()); if (lcdPixmap) { int offset = qMin(0, viewport()->size().height() - verticalOffset); wPainter.drawPixmap(1,offset,*lcdPixmap); } }
/** * @brief This method has been reimplemented. It paints the whole table. * * @param[in] event Paint event * * @return Nothing. */ void AbstractTableView::paintEvent(QPaintEvent* event) { if(!mAllowPainting) return; if(getColumnCount()) //make sure the last column is never smaller than the window { int totalWidth = 0; for(int i = 0; i < getColumnCount(); i++) totalWidth += getColumnWidth(i); int lastWidth = 0; for(int i = 0; i < getColumnCount() - 1; i++) lastWidth += getColumnWidth(i); int width = this->viewport()->width(); lastWidth = width > lastWidth ? width - lastWidth : 0; int last = getColumnCount() - 1; if(totalWidth < width) setColumnWidth(last, lastWidth); else setColumnWidth(last, getColumnWidth(last)); } Q_UNUSED(event); QPainter wPainter(this->viewport()); int wViewableRowsCount = getViewableRowsCount(); int scrollValue = -horizontalScrollBar()->value(); int x = scrollValue; int y = 0; // Reload data if needed if(mPrevTableOffset != mTableOffset || mShouldReload == true) { prepareData(); mPrevTableOffset = mTableOffset; mShouldReload = false; } // Paints background wPainter.fillRect(wPainter.viewport(), QBrush(backgroundColor)); // Paints header if(mHeader.isVisible == true) { for(int i = 0; i < getColumnCount(); i++) { QStyleOptionButton wOpt; if((mColumnList[i].header.isPressed == true) && (mColumnList[i].header.isMouseOver == true)) wOpt.state = QStyle::State_Sunken; else wOpt.state = QStyle::State_Enabled; wOpt.rect = QRect(x, y, getColumnWidth(i), getHeaderHeight()); mHeaderButtonSytle.style()->drawControl(QStyle::CE_PushButton, &wOpt, &wPainter, &mHeaderButtonSytle); wPainter.setPen(headerTextColor); wPainter.drawText(QRect(x + 4, y, getColumnWidth(i) - 8, getHeaderHeight()), Qt::AlignVCenter | Qt::AlignLeft, mColumnList[i].title); x += getColumnWidth(i); } } x = scrollValue; y = getHeaderHeight(); // Iterate over all columns and cells for(int j = 0; j < getColumnCount(); j++) { for(int i = 0; i < wViewableRowsCount; i++) { // Paints cell contents if(i < mNbrOfLineToPrint) { // Don't draw cells if the flag is set, and no process is running //if(!mDrawDebugOnly || DbgIsDebugging()) if(true) { QString wStr = paintContent(&wPainter, mTableOffset, i, j, x, y, getColumnWidth(j), getRowHeight()); if(wStr.length()) { wPainter.setPen(textColor); wPainter.drawText(QRect(x + 4, y, getColumnWidth(j) - 4, getRowHeight()), Qt::AlignVCenter | Qt::AlignLeft, wStr); } } } // Paints cell right borders wPainter.setPen(separatorColor); wPainter.drawLine(x + getColumnWidth(j) - 1, y, x + getColumnWidth(j) - 1, y + getRowHeight() - 1); // Update y for the next iteration y += getRowHeight(); } y = getHeaderHeight(); x += getColumnWidth(j); } //emit repainted(); }