diff options
author | Karel Kočí <cynerd@email.cz> | 2018-01-17 21:35:51 +0100 |
---|---|---|
committer | Karel Kočí <cynerd@email.cz> | 2018-01-17 21:35:51 +0100 |
commit | 6ed6360bfde189191bd976d8969c2834b33ec64e (patch) | |
tree | 0038b3c3a2fba84204647ac3113519b8255ab164 /qtmips_gui/coreview/logicblock.h | |
parent | 4a9975f012e74022247c3e9e1c143d2b0ea21925 (diff) | |
download | qtmips-6ed6360bfde189191bd976d8969c2834b33ec64e.tar.gz qtmips-6ed6360bfde189191bd976d8969c2834b33ec64e.tar.bz2 qtmips-6ed6360bfde189191bd976d8969c2834b33ec64e.zip |
Add logicblock and Control Unit to scheme
Diffstat (limited to 'qtmips_gui/coreview/logicblock.h')
-rw-r--r-- | qtmips_gui/coreview/logicblock.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/qtmips_gui/coreview/logicblock.h b/qtmips_gui/coreview/logicblock.h new file mode 100644 index 0000000..4c1310c --- /dev/null +++ b/qtmips_gui/coreview/logicblock.h @@ -0,0 +1,44 @@ +#ifndef LOGICBLOCK_H +#define LOGICBLOCK_H + +#include <QGraphicsItem> +#include <QPainter> +#include <QGraphicsSimpleTextItem> +#include <QVector> +#include "connection.h" + +namespace coreview { + +class LogicBlock : public QGraphicsItem { +public: + LogicBlock(QString name); + LogicBlock(QVector<QString> name); + ~LogicBlock(); + + QRectF boundingRect() const; + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); + + void setPos(qreal x, qreal y); + void setSize(qreal width, qreal height); + + // This creates new connector + // Position is determined by x and y in 0 to 1 range and is mapped to real size of this block + // Using x=y and x=-y coordinates is not supported + const Connector *new_connector(qreal x, qreal y); + +private: + QVector<QGraphicsSimpleTextItem*> text; + QRectF box; + + struct Con { + Connector *con; + qreal x, y; + QPointF p; + }; + QVector<struct Con> connectors; + QPointF con_pos(qreal x, qreal y); +}; + +} + +#endif // LOGICBLOCK_H |