69 lines
1.4 KiB
C++
69 lines
1.4 KiB
C++
// Unnamed CAD Software
|
|
//
|
|
// License: GPLv3, see LICENSE.txt
|
|
// Language: C++17
|
|
// Notes:
|
|
// - use a right-handed, Z-up coordinate system to match Open CASCADE
|
|
|
|
#include "SketchRectangle.h"
|
|
#include <QJsonArray>
|
|
|
|
namespace
|
|
{
|
|
void pointToJson(const gp_Pnt& p, QJsonArray& arr)
|
|
{
|
|
arr.append(p.X());
|
|
arr.append(p.Y());
|
|
arr.append(p.Z());
|
|
}
|
|
|
|
gp_Pnt jsonToPoint(const QJsonArray& arr)
|
|
{
|
|
return gp_Pnt(arr[0].toDouble(), arr[1].toDouble(), arr[2].toDouble());
|
|
}
|
|
}
|
|
|
|
SketchRectangle::SketchRectangle()
|
|
{
|
|
}
|
|
|
|
SketchRectangle::SketchRectangle(const gp_Pnt& corner1, const gp_Pnt& corner2)
|
|
: m_corner1(corner1), m_corner2(corner2)
|
|
{
|
|
}
|
|
|
|
SketchObject::ObjectType SketchRectangle::type() const
|
|
{
|
|
return ObjectType::Rectangle;
|
|
}
|
|
|
|
void SketchRectangle::read(const QJsonObject& json)
|
|
{
|
|
if (json.contains("corner1") && json["corner1"].isArray()) {
|
|
m_corner1 = jsonToPoint(json["corner1"].toArray());
|
|
}
|
|
if (json.contains("corner2") && json["corner2"].isArray()) {
|
|
m_corner2 = jsonToPoint(json["corner2"].toArray());
|
|
}
|
|
}
|
|
|
|
void SketchRectangle::write(QJsonObject& json) const
|
|
{
|
|
json["type"] = "Rectangle";
|
|
QJsonArray c1, c2;
|
|
pointToJson(m_corner1, c1);
|
|
pointToJson(m_corner2, c2);
|
|
json["corner1"] = c1;
|
|
json["corner2"] = c2;
|
|
}
|
|
|
|
const gp_Pnt& SketchRectangle::corner1() const
|
|
{
|
|
return m_corner1;
|
|
}
|
|
|
|
const gp_Pnt& SketchRectangle::corner2() const
|
|
{
|
|
return m_corner2;
|
|
}
|