lol, how did it manage to work for years? (z1 - z2 * z.Round) shouldn't respect signs of z1 and z2. It turns out we often had arbitrary .Frac value in division result. Also fixes
issue #613.
#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();
}