Improve node to svg conversion.
This commit is contained in:
parent
64f0b3e77a
commit
26ecae46b3
22 changed files with 403 additions and 126 deletions
|
@ -1,6 +1,7 @@
|
|||
#include "BlochSphereNode.h"
|
||||
|
||||
#include "CircleNode.h"
|
||||
#include "LineNode.h"
|
||||
|
||||
BlochSphereNode::BlochSphereNode(const Point& location)
|
||||
: AbstractVisualNode(location, "BlochSphereNode")
|
||||
|
@ -32,9 +33,17 @@ void BlochSphereNode::update(SceneInfo* sceneInfo)
|
|||
|
||||
mChildren.clear();
|
||||
|
||||
auto loc = DiscretePoint(mSize / 2.0, mSize / 2.0);
|
||||
auto loc = Point(mSize / 2.0, mSize / 2.0);
|
||||
mInnerCircle = std::make_unique<CircleNode>(loc, mSize / 2.0);
|
||||
mInnerCircle->setMinorRadius(mSize / 4.0);
|
||||
|
||||
mOuterCircle = std::make_unique<CircleNode>(loc, mSize/2.0);
|
||||
|
||||
addChild(mOuterCircle.get());
|
||||
mCentreCircle = std::make_unique<CircleNode>(loc, mSize / 50.0);
|
||||
mCentreCircle->setFillColor(Color(0, 0, 0));
|
||||
mCentreCircle->setHasStrokeColor(false);
|
||||
|
||||
addChild(mInnerCircle.get());
|
||||
addChild(mOuterCircle.get());
|
||||
addChild(mCentreCircle.get());
|
||||
}
|
|
@ -1,36 +1,23 @@
|
|||
#include "TestFramework.h"
|
||||
#include "TestUtils.h"
|
||||
#include "TestRenderUtils.h"
|
||||
|
||||
#include "BlochSphereNode.h"
|
||||
#include "BlochSphere.h"
|
||||
#include "Scene.h"
|
||||
|
||||
#include "SvgConverter.h"
|
||||
#include "SvgWriter.h"
|
||||
#include "SvgDocument.h"
|
||||
|
||||
#include "File.h"
|
||||
|
||||
TEST_CASE(TestBlochSphereNode, "quantum_computing")
|
||||
{
|
||||
TestRenderer renderer(100, 100);
|
||||
|
||||
auto node = std::make_unique<BlochSphereNode>(Point(0.5, 0.5));
|
||||
|
||||
Qubit state({ 1.0, 0.0 }, { 0.0, 0.0 });
|
||||
|
||||
auto bloch_sphere = std::make_unique<BlochSphere>(state);
|
||||
|
||||
node->setSize(100);
|
||||
node->setContent(bloch_sphere.get());
|
||||
|
||||
auto scene = std::make_unique<Scene>();
|
||||
scene->addNode(node.get());
|
||||
scene->update();
|
||||
|
||||
SvgConverter converter;
|
||||
auto svg_document = converter.convert(scene.get());
|
||||
|
||||
SvgWriter writer;
|
||||
auto svg_content = writer.toString(svg_document.get());
|
||||
|
||||
File svg_file(TestUtils::getTestOutputDir(__FILE__) / "bloch_sphere.svg");
|
||||
svg_file.writeText(svg_content);
|
||||
renderer.getScene()->addNode(node.get());
|
||||
renderer.writeSvg(TestUtils::getTestOutputDir(__FILE__) / "bloch_sphere.svg");
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue