/** * @RDE_HEADER@ * Class Viewpoint2D * $Id$ * $HeadURL$ * $Author$ */ // Own #include "viewpoint2D.h" // Qt #include //---------------------------------------------------------------------------- namespace SituationMap { Viewpoint2D::Viewpoint2D(const QPointF ¢erGeo, double scale, double rotation) : m_centerGeo(centerGeo), m_scale(scale), m_rotation(rotation) { // Q_ASSERT(scale > 0); } bool Viewpoint2D::isNull() const { return m_centerGeo.isNull() && qFuzzyCompare(m_scale, defaultScale) && qFuzzyIsNull(m_rotation); // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } void Viewpoint2D::resetViewpoint() { m_centerGeo = QPointF(); m_scale = defaultScale; m_rotation = 0; } QPointF Viewpoint2D::centerGeo() const { return m_centerGeo; } void Viewpoint2D::setCenterGeo(const QPointF ¢erGeo) { m_centerGeo = centerGeo; } double Viewpoint2D::scale() const { return m_scale; } void Viewpoint2D::setScale(double scale) { m_scale = scale; } double Viewpoint2D::rotation() const { return m_rotation; } void Viewpoint2D::setRotation(double rotation) { m_rotation = rotation; } Viewpoint2D Viewpoint2D::read(const QJsonObject &json) { Viewpoint2D vp; if (json.contains(QLatin1String("centerLon")) && json.contains(QLatin1String("centerLat"))) { QPointF centerGeo; centerGeo.rx() = json[QLatin1String("centerLon")].toDouble(); centerGeo.ry() = json[QLatin1String("centerLat")].toDouble(); vp.setCenterGeo(centerGeo); } if (json.contains(QLatin1String("scale"))) vp.setScale(json[QLatin1String("scale")].toDouble()); if (json.contains(QLatin1String("rotation"))) vp.setRotation(json[QLatin1String("rotation")].toDouble()); return vp; } QJsonObject Viewpoint2D::toJsonObject() const { QJsonObject json; json[QLatin1String("centerLon")] = m_centerGeo.x(); json[QLatin1String("centerLat")] = m_centerGeo.y(); json[QLatin1String("scale")] = m_scale; json[QLatin1String("rotation")] = m_rotation; return json; } QString Viewpoint2D::toString() const { QString asString = QStringLiteral("center %1;%2[rad] %3;%4[deg], scale=%5, rotation=%6") .arg(m_centerGeo.x()).arg(m_centerGeo.y()) .arg(m_centerGeo.x()*180.0/M_PI).arg(m_centerGeo.y()*180.0/M_PI) .arg(m_scale).arg(m_rotation); return asString; } std::ostream &operator<< (std::ostream &stream, const SituationMap::Viewpoint2D &value) { stream << "Viewpoint2D(" << value.toString() << "): "; return stream; } } // namespace SituationMap