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 /pageitem.cc | |
download | scribiu-a69e97943539a8abc4d2762638c169dc19c88516.tar.gz scribiu-a69e97943539a8abc4d2762638c169dc19c88516.zip |
initial import
Diffstat (limited to 'pageitem.cc')
-rw-r--r-- | pageitem.cc | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/pageitem.cc b/pageitem.cc new file mode 100644 index 0000000..f938eeb --- /dev/null +++ b/pageitem.cc @@ -0,0 +1,64 @@ +#include <QtCore/QDebug> +#include <QtGui/QPen> +#include "pageitem.h" +#include "stfgraphicsitem.h" + +PageItem::PageItem(AfdNotebook *nb, int pageNum, QGraphicsItem *parent) : + QGraphicsItem(parent), _nb(nb), _pageNum(pageNum), _strokesLoaded(false) +{ + _pageSize = _nb->getPageSize(pageNum); + _pageTrim = _nb->getPageTrim(pageNum); + + QGraphicsRectItem *border = new QGraphicsRectItem(_pageTrim, this); + border->setPen(QPen(Qt::black)); + + QPixmap bgPix = _nb->getPageBackground(_pageNum); + QGraphicsPixmapItem *bg = new QGraphicsPixmapItem(bgPix, this); + bg->setShapeMode(QGraphicsPixmapItem::BoundingRectShape); + bg->setTransformationMode(Qt::SmoothTransformation); + QRectF bgRect = bg->boundingRect(); + bg->scale(_pageTrim.width() / bgRect.width(), _pageTrim.height() / bgRect.height()); + bg->setPos(_pageTrim.topLeft()); +} + +QRectF PageItem::boundingRect() const +{ + return QRectF(QPointF(0, 0), _pageSize); +} + +void PageItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) +{ + Q_UNUSED(painter); + Q_UNUSED(option); + Q_UNUSED(widget); + if (!_strokesLoaded) { + createStrokes(); + _strokesLoaded = true; + } +} + +int PageItem::type() const +{ + return Type; +} + +int PageItem::pageNum() const +{ + return _pageNum; +} + +void PageItem::createStrokes() +{ + QStringList pens = _nb->penSerials(); + if (pens.isEmpty()) return; + QStringList strokeFiles = _nb->strokeFiles(pens.first(), _pageNum); + foreach (const QString &strokeFile, strokeFiles) { + QFile f(strokeFile); + if (!f.open(QIODevice::ReadOnly)) { + qWarning() << "Could not open stroke file:" << strokeFile; + continue; + } + new StfGraphicsItem(&f, this); + } + qDebug() << "strokes loaded for page" << _pageNum; +} |