// Unnamed CAD Software // // License: GPLv3 (or later) // Language: C++17 // Notes: // - use a right-handed, Z-up coordinate system to match Open CASCADE #include "SketchCircle.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()); } } SketchCircle::SketchCircle() : m_radius(0.0) { } SketchCircle::SketchCircle(const gp_Pnt& center, double radius) : m_center(center), m_radius(radius) { } SketchObject::ObjectType SketchCircle::type() const { return ObjectType::Circle; } void SketchCircle::read(const QJsonObject& json) { m_center = jsonToPoint(json["center"].toArray()); m_radius = json["radius"].toDouble(); } void SketchCircle::write(QJsonObject& json) const { QJsonArray centerArr; pointToJson(m_center, centerArr); json["center"] = centerArr; json["radius"] = m_radius; json["type"] = "Circle"; } const gp_Pnt& SketchCircle::center() const { return m_center; } double SketchCircle::radius() const { return m_radius; }