diff options
author | Javier <dev.git@javispedro.com> | 2015-06-07 21:22:45 +0200 |
---|---|---|
committer | Javier <dev.git@javispedro.com> | 2015-06-07 21:22:45 +0200 |
commit | a69e97943539a8abc4d2762638c169dc19c88516 (patch) | |
tree | f3516ea29745db65971247cee4c260b49f1067b2 /stfgraphicsitem.cc | |
download | scribiu-a69e97943539a8abc4d2762638c169dc19c88516.tar.gz scribiu-a69e97943539a8abc4d2762638c169dc19c88516.zip |
initial import
Diffstat (limited to 'stfgraphicsitem.cc')
-rw-r--r-- | stfgraphicsitem.cc | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/stfgraphicsitem.cc b/stfgraphicsitem.cc new file mode 100644 index 0000000..865a029 --- /dev/null +++ b/stfgraphicsitem.cc @@ -0,0 +1,67 @@ +#include <QtGui/QPainterPath> + +#include "stfreader.h" +#include "stfgraphicsitem.h" + +class StfToGraphicsPathItems : public StfReader::StrokeHandler { + QGraphicsItem *parent; + QPainterPath path; + QRectF bound; + +public: + StfToGraphicsPathItems(QGraphicsItem* parent) + : parent(parent), path(), bound(0.0, 0.0, 1.0, 1.0) { + } + + ~StfToGraphicsPathItems() { + } + + bool startStroke(const QPoint& p, int, quint64) { + path = QPainterPath(QPointF(p)); + return true; + } + + bool strokePoint(const QPoint& p, int, quint64) { + path.lineTo(QPointF(p)); + return true; + } + + bool endStroke() { + bound |= path.boundingRect(); + new QGraphicsPathItem(path, parent); + /* Parent will take the child down with him when deleted. */ + return true; + } + + const QRectF& boundingRect() { + return bound; + } +}; + +StfGraphicsItem::StfGraphicsItem(QIODevice *dev, QGraphicsItem *parent) : + QGraphicsItem(parent) +{ + setFlags(ItemHasNoContents); + + StfToGraphicsPathItems h(this); + StfReader r; + r.setStrokeHandler(&h); + if (r.parse(dev)) { + bbox = h.boundingRect(); + } +} + +QRectF StfGraphicsItem::boundingRect() const +{ + return bbox; +} + +void StfGraphicsItem::paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *) +{ + /* Intentionally empty; ItemHasNoContents; children will do the painting. */ +} + +int StfGraphicsItem::type() const +{ + return Type; +} |