tools/templates/pixlabel.cpp
author nemo
Tue, 21 Aug 2018 15:11:28 -0400
branch0.9.24
changeset 13687 f60b3998ba56
parent 8442 535a00ca0d35
permissions -rw-r--r--
only-stats should never create visual gears. and lua should never rely on visual gears being created. critical is just to help ensure ones important to gameplay don't get lost in fast-forward

#include <QPainter>
#include <QPen>
#include "pixlabel.h"

PixLabel::PixLabel()
        : QLabel(0)
{

}

void PixLabel::paintEvent(QPaintEvent * event)
{
    QLabel::paintEvent(event);
    QPainter p(this);

    p.fillRect(QRect(0, 0, 1024, 512), QBrush(Qt::black));

    if (rects.size())
    {
        p.setPen(QPen(Qt::lightGray));
        QVector<QPoint> centers;
        for(QList<QRect>::const_iterator it = rects.begin(); it != rects.end(); ++it)
            centers.push_back((*it).center());
        p.drawPolyline(QPolygon(centers));

        p.setPen(QPen(Qt::white));
        p.drawRects(rects.toVector());

        p.setPen(QPen(Qt::yellow));
        p.drawRect(rects.last());
    }
}

void PixLabel::mousePressEvent(QMouseEvent * e)
{
    if (!rects.empty())
    {
        if (e->button() == Qt::LeftButton)
            rects[rects.size() - 1].moveTopLeft(QPoint(e->x(), e->y()));
        else
        if (e->button() == Qt::RightButton)
            rects[rects.size() - 1].setBottomRight(QPoint(e->x(), e->y()));
        repaint();
    }
}

void PixLabel::AddRect()
{
    rects.push_back(QRect(0, 0, 1, 1));
    repaint();
}