// 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 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; }