aboutsummaryrefslogtreecommitdiff
path: root/pageitem.cc
diff options
context:
space:
mode:
authorJavier <dev.git@javispedro.com>2015-06-07 21:22:45 +0200
committerJavier <dev.git@javispedro.com>2015-06-07 21:22:45 +0200
commita69e97943539a8abc4d2762638c169dc19c88516 (patch)
treef3516ea29745db65971247cee4c260b49f1067b2 /pageitem.cc
downloadscribiu-a69e97943539a8abc4d2762638c169dc19c88516.tar.gz
scribiu-a69e97943539a8abc4d2762638c169dc19c88516.zip
initial import
Diffstat (limited to 'pageitem.cc')
-rw-r--r--pageitem.cc64
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;
+}