This commit changes many aspect of our cmake build system
- shared libraries are compiled by default:
* this modifies RPATH of unix executables;
* this will prevent a lot of linking issues, esp. from pascal world;
* the old behaviour (static libs) is still available with -DBUILD_SHARED_LIBS=off;
* of course in this case you have to provide the full list of dependencies with FPFLAGS and CMAKE_C_FLAGS;
- pascal is now fully integrated with cmake, meaning you can just do add_sources and use CMAKE_Pascal_FLAGS:
* some of the language features are only partially implemented, for example .inc files will not get rebuilt if you modify them;
* target_link_libraries for pascal targets is just dummy as linking is determined within pascal files;
* universal builds for osx are not available any more;
- bundled libraries and system libraries are addressed using the target name:
* this avoids depedency tracking;
* this allows to name output as we wish.
#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();
}