Esempio n. 1
0
/**
 * 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");
}
Esempio n. 2
0
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;
}
Esempio n. 3
0
/**
 * 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");
}
Esempio n. 4
0
/**
 * 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;
}
Esempio n. 5
0
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);
    }
}
Esempio n. 6
0
/**
 * @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();
}