aboutsummaryrefslogtreecommitdiff
path: root/qtmips_gui/coreview/instructionview.cpp
diff options
context:
space:
mode:
authorKarel Kočí <cynerd@email.cz>2018-01-21 20:36:41 +0100
committerKarel Kočí <cynerd@email.cz>2018-01-21 20:36:41 +0100
commitb0a3e568a9e10ee9d99e8679b2ddd697705e756c (patch)
tree5254201ae2f6a2709e8d319fcdedaaa787cb27da /qtmips_gui/coreview/instructionview.cpp
parent553187e18f5a587dcf38a7d3f9a82929583ddc84 (diff)
downloadqtmips-b0a3e568a9e10ee9d99e8679b2ddd697705e756c.tar.gz
qtmips-b0a3e568a9e10ee9d99e8679b2ddd697705e756c.tar.bz2
qtmips-b0a3e568a9e10ee9d99e8679b2ddd697705e756c.zip
Update instruction viewers
Diffstat (limited to 'qtmips_gui/coreview/instructionview.cpp')
-rw-r--r--qtmips_gui/coreview/instructionview.cpp34
1 files changed, 29 insertions, 5 deletions
diff --git a/qtmips_gui/coreview/instructionview.cpp b/qtmips_gui/coreview/instructionview.cpp
index bab9bc8..0c9ec68 100644
--- a/qtmips_gui/coreview/instructionview.cpp
+++ b/qtmips_gui/coreview/instructionview.cpp
@@ -1,15 +1,39 @@
#include "instructionview.h"
+#include <QPainter>
#include <QFont>
using namespace coreview;
-InstructionView::InstructionView() : QObject(), QGraphicsSimpleTextItem() {
+//////////////////////
+#define WIDTH 120
+#define HEIGHT 14
+#define ROUND 5
+#define GAP 2
+#define PENW 1
+//////////////////////
+
+InstructionView::InstructionView() : QGraphicsObject(nullptr), text(this) {
QFont f;
- f.setPointSize(8);
- setFont(f);
- instruction_update(machine::Instruction());
+ f.setPointSize(6);
+ text.setFont(f);
+
+ instruction_update(machine::Instruction()); // Initialize to NOP
+}
+
+QRectF InstructionView::boundingRect() const {
+ return QRectF(-WIDTH/2 - PENW/2, -PENW/2, WIDTH + PENW, HEIGHT + PENW);
+}
+
+void InstructionView::paint(QPainter *painter, const QStyleOptionGraphicsItem *option __attribute__((unused)), QWidget *widget __attribute__((unused))) {
+ painter->setPen(QPen(QColor(240, 240, 240)));
+ painter->setBrush(QBrush(QColor(240, 240, 240)));
+ painter->drawRoundRect(-WIDTH/2, 0, WIDTH, HEIGHT, ROUND, ROUND);
}
void InstructionView::instruction_update(const machine::Instruction &i) {
- setText(i.to_str());
+ QRectF prev_box = boundingRect();
+ text.setText(i.to_str());
+ QRectF box = text.boundingRect();
+ text.setPos(-box.width()/2, GAP);
+ update(prev_box.united(boundingRect()));
}