Initial quantum circuit.
This commit is contained in:
parent
77ce58c612
commit
20c13c1cdf
38 changed files with 1153 additions and 14 deletions
44
plugins/quantum_computing/src/visuals/QuantumCircuitNode.cpp
Normal file
44
plugins/quantum_computing/src/visuals/QuantumCircuitNode.cpp
Normal file
|
@ -0,0 +1,44 @@
|
|||
#include "QuantumCircuitNode.h"
|
||||
|
||||
#include "QuantumCircuit.h"
|
||||
#include "QuantumTerminalNode.h"
|
||||
|
||||
QuantumCircuitNode::QuantumCircuitNode(const Transform& t)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void QuantumCircuitNode::setContent(QuantumCircuit* circuit)
|
||||
{
|
||||
mContent = circuit;
|
||||
mContentDirty = true;
|
||||
}
|
||||
|
||||
void QuantumCircuitNode::update(SceneInfo* sceneInfo)
|
||||
{
|
||||
if (mContentDirty)
|
||||
{
|
||||
createOrUpdateGeometry(sceneInfo);
|
||||
mContentDirty = false;
|
||||
}
|
||||
}
|
||||
|
||||
void QuantumCircuitNode::createOrUpdateGeometry(SceneInfo*)
|
||||
{
|
||||
double terminal_vertical_spacing = 100;
|
||||
double terminal_left_margin = 10;
|
||||
|
||||
double terminal_y = 10;
|
||||
for (auto terminal : mContent->getInputTerminals())
|
||||
{
|
||||
Point loc{ terminal_left_margin, terminal_y };
|
||||
auto terminal_node = std::make_unique<QuantumTerminalNode>(Transform(loc));
|
||||
|
||||
terminal_node->setContent(terminal);
|
||||
|
||||
addChild(terminal_node.get());
|
||||
|
||||
mInputTerminalNodes.push_back(std::move(terminal_node));
|
||||
terminal_y += terminal_vertical_spacing;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue