tools/templates/pixlabel.cpp
author unc0rr
Mon, 29 Sep 2008 22:14:23 +0000
changeset 1301 c6fe8a4bfd34
parent 361 c3eebac100c0
child 8442 535a00ca0d35
permissions -rw-r--r--
Fix a bug screwing team selection up in network game (REMOVETEAM message doesn't have teamID, and after removing the team QMap still contains old info, when add and remove team with the same name, total hedgehogs number will be decreased by first team hh number)

#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();
}