aboutsummaryrefslogtreecommitdiff
path: root/qtmips_gui/coreview/constant.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qtmips_gui/coreview/constant.cpp')
-rw-r--r--qtmips_gui/coreview/constant.cpp48
1 files changed, 48 insertions, 0 deletions
diff --git a/qtmips_gui/coreview/constant.cpp b/qtmips_gui/coreview/constant.cpp
new file mode 100644
index 0000000..2f39fce
--- /dev/null
+++ b/qtmips_gui/coreview/constant.cpp
@@ -0,0 +1,48 @@
+#include "constant.h"
+#include <cmath>
+
+using namespace coreview;
+
+//////////////////////
+#define OFFSET 6
+//////////////////////
+
+Constant::Constant(const Connector *con, const QString &text) : QGraphicsObject(nullptr), text(text, this) {
+ QFont font;
+ font.setPointSize(7);
+ this->text.setFont(font);
+
+ con_our = new Connector(M_PI);
+ conn = new Connection(con_our, con);
+ connect(con, SIGNAL(updated(QPointF)), this, SLOT(ref_con_updated(QPointF)));
+ ref_con_updated(con->point()); // update initial connector position
+}
+
+Constant::~Constant() {
+ delete conn;
+ delete con_our;
+}
+
+QRectF Constant::boundingRect() const {
+ return conn->boundingRect();
+}
+
+void Constant::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) {
+ conn->paint(painter, option, widget);
+}
+
+void Constant::set_text(const QString &text) {
+ this->text.setText(text);
+ set_text_pos(); // update text positioning
+}
+
+void Constant::ref_con_updated(QPointF p) {
+ con_our->setPos(p.x() - OFFSET, p.y());
+ set_text_pos();
+}
+
+void Constant::set_text_pos() {
+ // We are using here our known position of con_our
+ QRectF box = text.boundingRect();
+ text.setPos(con_our->x() - box.width() - 2, con_our->y() - box.height()/2);
+}