diff options
Diffstat (limited to 'tikzit/src/gui/nodeitem.cpp')
-rw-r--r-- | tikzit/src/gui/nodeitem.cpp | 124 |
1 files changed, 0 insertions, 124 deletions
diff --git a/tikzit/src/gui/nodeitem.cpp b/tikzit/src/gui/nodeitem.cpp deleted file mode 100644 index 71226f3..0000000 --- a/tikzit/src/gui/nodeitem.cpp +++ /dev/null @@ -1,124 +0,0 @@ -#include "tikzit.h" -#include "nodeitem.h" -#include "tikzscene.h" -#include <cmath> - -#include <QPen> -#include <QApplication> -#include <QBrush> -#include <QDebug> -#include <QFont> -#include <QFontMetrics> -#include <QPainterPathStroker> - -NodeItem::NodeItem(Node *node) -{ - _node = node; - setFlag(QGraphicsItem::ItemIsSelectable); - setFlag(QGraphicsItem::ItemIsMovable); - setFlag(QGraphicsItem::ItemSendsGeometryChanges); - readPos(); -} - -void NodeItem::readPos() -{ - setPos(toScreen(_node->point())); -} - -void NodeItem::writePos() -{ - _node->setPoint(fromScreen(pos())); -} - -QRectF NodeItem::labelRect() const { - QString label = _node->label(); - //QFont f("Courier", 9); - QFontMetrics fm(Tikzit::LABEL_FONT); - - QRectF rect = fm.boundingRect(label); - //rect.adjust(-2,-2,2,2); - rect.moveCenter(QPointF(0,0)); - return rect; -} - -void NodeItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) -{ - if (_node->style()->isNone()) { - QColor c(180,180,200); - painter->setPen(QPen(c)); - painter->setBrush(QBrush(c)); - painter->drawEllipse(QPointF(0,0), 1,1); - - QPen pen(QColor(180,180,220)); - QVector<qreal> p; - p << 2.0 << 2.0; - pen.setDashPattern(p); - painter->setPen(pen); - painter->setBrush(Qt::NoBrush); - painter->drawPath(shape()); - } else { - QPen pen(_node->style()->strokeColor); - pen.setWidth(_node->style()->strokeThickness); - painter->setPen(pen); - painter->setBrush(QBrush(_node->style()->fillColor)); - painter->drawPath(shape()); - } - - if (_node->label() != "") { - QRectF rect = labelRect(); - QPen pen(QColor(200,0,0,120)); - QVector<qreal> d; - d << 2.0 << 2.0; - pen.setDashPattern(d); - painter->setPen(pen); - painter->setBrush(QBrush(QColor(255,255,100,120))); - painter->drawRect(rect); - - painter->setPen(QPen(Qt::black)); - painter->setFont(Tikzit::LABEL_FONT); - painter->drawText(rect, Qt::AlignCenter, _node->label()); - } - - if (isSelected()) { - QPainterPath sh = shape(); - QPainterPathStroker stroker; - stroker.setWidth(4); - QPainterPath outline = (stroker.createStroke(sh) + sh).simplified(); - painter->setPen(Qt::NoPen); - painter->setBrush(QBrush(QColor(150,200,255,100))); - painter->drawPath(outline); - } - -} - -QPainterPath NodeItem::shape() const -{ - QPainterPath path; - path.addEllipse(QPointF(0,0), GLOBAL_SCALEF * 0.1, GLOBAL_SCALEF * 0.1); - return path; -} - -QRectF NodeItem::boundingRect() const -{ - QRectF r = labelRect(); - return r.united(shape().boundingRect()).adjusted(-4,-4,4,4); -} - -Node *NodeItem::node() const -{ - return _node; -} - -QVariant NodeItem::itemChange(GraphicsItemChange change, const QVariant &value) -{ - if (change == ItemPositionChange) { - QPointF newPos = value.toPointF(); - int gridSize = GLOBAL_SCALE / 8; - QPointF gridPos(round(newPos.x()/gridSize)*gridSize, round(newPos.y()/gridSize)*gridSize); - _node->setPoint(fromScreen(gridPos)); - - return gridPos; - } else { - return QGraphicsItem::itemChange(change, value); - } -} |