diff options
Diffstat (limited to 'src/positioning/qgeopositioninfo.cpp')
-rw-r--r-- | src/positioning/qgeopositioninfo.cpp | 445 |
1 files changed, 0 insertions, 445 deletions
diff --git a/src/positioning/qgeopositioninfo.cpp b/src/positioning/qgeopositioninfo.cpp deleted file mode 100644 index f641c0ad..00000000 --- a/src/positioning/qgeopositioninfo.cpp +++ /dev/null @@ -1,445 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtPositioning module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include "qgeopositioninfo.h" -#include "private/qgeopositioninfo_p.h" -#include <QHash> -#include <QDebug> -#include <QDataStream> -#include <QtCore/QtNumeric> - -#include <algorithm> - -QT_BEGIN_NAMESPACE - -/*! - \class QGeoPositionInfo - \inmodule QtPositioning - \ingroup QtPositioning-positioning - \ingroup shared - \since 5.2 - - \brief The QGeoPositionInfo class contains information gathered on a global position, direction and velocity at a particular point in time. - - A QGeoPositionInfo contains, at a minimum, a geographical coordinate and - a timestamp. It may also have heading and speed measurements as well as - estimates of the accuracy of the provided data. - - \sa QGeoPositionInfoSource -*/ - -/*! - \enum QGeoPositionInfo::Attribute - Defines the attributes for positional information. - - \value Direction The bearing measured in degrees clockwise from true north to the direction of travel. - \value GroundSpeed The ground speed, in meters/sec. - \value VerticalSpeed The vertical speed, in meters/sec. - \value MagneticVariation The angle between the horizontal component of the magnetic field and true north, in degrees. Also known as magnetic declination. A positive value indicates a clockwise direction from true north and a negative value indicates a counter-clockwise direction. - \value HorizontalAccuracy The accuracy of the provided latitude-longitude value, in meters. - \value VerticalAccuracy The accuracy of the provided altitude value, in meters. - - NMEA protocol also suggests another type of accuracy - PositionAccuracy, - which is a 3D accuracy value. Qt does not provide a separate attribute for - it. If you need this value, you can calculate it based on the following - formula: - - \c {PositionAccuracy} \sup 2 \c {= HorizontalAccuracy} \sup 2 \c { + - VerticalAccuracy} \sup 2 -*/ - -/*! - Creates an invalid QGeoPositionInfo object. - - \sa isValid() -*/ -QGeoPositionInfo::QGeoPositionInfo() - : d(new QGeoPositionInfoPrivate) -{ -} - -/*! - Creates a QGeoPositionInfo for the given \a coordinate and \a timestamp. -*/ -QGeoPositionInfo::QGeoPositionInfo(const QGeoCoordinate &coordinate, const QDateTime ×tamp) - : d(new QGeoPositionInfoPrivate) -{ - d->timestamp = timestamp; - d->coord = coordinate; -} - -/*! - Creates a QGeoPositionInfo with the values of \a other. -*/ -QGeoPositionInfo::QGeoPositionInfo(const QGeoPositionInfo &other) - : d(other.d) -{ -} - -/*! - \fn QGeoPositionInfo::QGeoPositionInfo(QGeoPositionInfo &&other) noexcept - \since 6.2 - - Creates a QGeoPositionInfo object by moving from \a other. - - Note that a moved-from QGeoPositionInfo can only be destroyed or - assigned to. The effect of calling other functions than the destructor - or one of the assignment operators is undefined. -*/ - -QGeoPositionInfo::QGeoPositionInfo(QGeoPositionInfoPrivate &dd) : d(&dd) -{ -} - -/*! - Destroys a QGeoPositionInfo object. -*/ -QGeoPositionInfo::~QGeoPositionInfo() -{ -} - -QT_DEFINE_QESDP_SPECIALIZATION_DTOR(QGeoPositionInfoPrivate) - -/*! - Assigns the values from \a other to this QGeoPositionInfo. -*/ -QGeoPositionInfo &QGeoPositionInfo::operator=(const QGeoPositionInfo & other) -{ - if (this == &other) - return *this; - - d = other.d; - return *this; -} - -/*! - \fn QGeoPositionInfo &QGeoPositionInfo::operator=(QGeoPositionInfo &&other) noexcept - \since 6.2 - - Move-assigns the values from \a other to this object. - - Note that a moved-from QGeoPositionInfo can only be destroyed or - assigned to. The effect of calling other functions than the destructor - or one of the assignment operators is undefined. -*/ - -/*! - \fn bool QGeoPositionInfo::operator==(const QGeoPositionInfo &lhs, const QGeoPositionInfo &rhs) - - Returns \c true if all of the \a lhs object's values are the same as those - of \a rhs. Otherwise returns \c false. -*/ - -/*! - \fn bool QGeoPositionInfo::operator!=(const QGeoPositionInfo &lhs, const QGeoPositionInfo &rhs) - - Returns \c true if any of the \a lhs object's values are not the same as - those of \a rhs. Otherwise returns \c false. -*/ - -/*! - Returns true if the timestamp() and coordinate() values are both valid. - - \sa QGeoCoordinate::isValid(), QDateTime::isValid() -*/ -bool QGeoPositionInfo::isValid() const -{ - return d->timestamp.isValid() && d->coord.isValid(); -} - -/*! - Sets the date and time at which this position was reported to \a timestamp. - - The \a timestamp must be in UTC time. - - \sa timestamp() -*/ -void QGeoPositionInfo::setTimestamp(const QDateTime ×tamp) -{ - d.detach(); - d->timestamp = timestamp; -} - -/*! - Returns the date and time at which this position was reported, in UTC time. - - Returns an invalid QDateTime if no date/time value has been set. - - \sa setTimestamp() -*/ -QDateTime QGeoPositionInfo::timestamp() const -{ - return d->timestamp; -} - -/*! - Sets the coordinate for this position to \a coordinate. - - \sa coordinate() -*/ -void QGeoPositionInfo::setCoordinate(const QGeoCoordinate &coordinate) -{ - d.detach(); - d->coord = coordinate; -} - -/*! - Returns the coordinate for this position. - - Returns an invalid coordinate if no coordinate has been set. - - \sa setCoordinate() -*/ -QGeoCoordinate QGeoPositionInfo::coordinate() const -{ - return d->coord; -} - -/*! - Sets the value for \a attribute to \a value. - - \sa attribute() -*/ -void QGeoPositionInfo::setAttribute(Attribute attribute, qreal value) -{ - d.detach(); - d->doubleAttribs[attribute] = value; -} - -/*! - Returns the value of the specified \a attribute as a qreal value. - - Returns NaN if the value has not been set. - - The function hasAttribute() should be used to determine whether or - not a value has been set for an attribute. - - \sa hasAttribute(), setAttribute() -*/ -qreal QGeoPositionInfo::attribute(Attribute attribute) const -{ - if (d->doubleAttribs.contains(attribute)) - return d->doubleAttribs[attribute]; - return qQNaN(); -} - -/*! - Removes the specified \a attribute and its value. -*/ -void QGeoPositionInfo::removeAttribute(Attribute attribute) -{ - d.detach(); - d->doubleAttribs.remove(attribute); -} - -/*! - Returns true if the specified \a attribute is present for this - QGeoPositionInfo object. -*/ -bool QGeoPositionInfo::hasAttribute(Attribute attribute) const -{ - return d->doubleAttribs.contains(attribute); -} - -/*! - \internal -*/ -void QGeoPositionInfo::detach() -{ - if (d) - d.detach(); - else - d = new QGeoPositionInfoPrivate; -} - -bool QGeoPositionInfo::equals(const QGeoPositionInfo &lhs, const QGeoPositionInfo &rhs) -{ - return *lhs.d == *rhs.d; -} - -#ifndef QT_NO_DEBUG_STREAM -QDebug QGeoPositionInfo::debugStreaming(QDebug dbg, const QGeoPositionInfo &info) -{ - QDebugStateSaver saver(dbg); - dbg.nospace() << "QGeoPositionInfo(" << info.d->timestamp; - dbg.nospace() << ", "; // timestamp force dbg.space() -> reverting here - dbg << info.d->coord; - - QList<QGeoPositionInfo::Attribute> attribs = info.d->doubleAttribs.keys(); - std::stable_sort(attribs.begin(), attribs.end()); // Output a sorted list from an unsorted hash. - for (int i = 0; i < attribs.count(); ++i) { - dbg << ", "; - switch (attribs[i]) { - case QGeoPositionInfo::Direction: - dbg << "Direction="; - break; - case QGeoPositionInfo::GroundSpeed: - dbg << "GroundSpeed="; - break; - case QGeoPositionInfo::VerticalSpeed: - dbg << "VerticalSpeed="; - break; - case QGeoPositionInfo::MagneticVariation: - dbg << "MagneticVariation="; - break; - case QGeoPositionInfo::HorizontalAccuracy: - dbg << "HorizontalAccuracy="; - break; - case QGeoPositionInfo::VerticalAccuracy: - dbg << "VerticalAccuracy="; - break; - } - dbg << info.d->doubleAttribs[attribs[i]]; - } - dbg << ')'; - return dbg; -} -#endif - - -#ifndef QT_NO_DATASTREAM -/*! - \fn QDataStream &QGeoPositionInfo::operator<<(QDataStream &stream, QGeoPositionInfo::Attribute attr) - - Writes the given \a attr enumeration to the specified \a stream. - - \sa {Serializing Qt Data Types} -*/ -QDataStream &QGeoPositionInfo::dataStreamOut(QDataStream &stream, QGeoPositionInfo::Attribute attr) -{ - return stream << int(attr); -} - -/*! - \fn QDataStream &QGeoPositionInfo::operator>>(QDataStream &stream, QGeoPositionInfo::Attribute &attr) - - Reads an attribute enumeration from the specified \a stream info the given \a attr. - - \sa {Serializing Qt Data Types} -*/ -QDataStream &QGeoPositionInfo::dataStreamIn(QDataStream &stream, QGeoPositionInfo::Attribute &attr) -{ - int a; - stream >> a; - attr = static_cast<QGeoPositionInfo::Attribute>(a); - return stream; -} - -/*! - \fn QDataStream &QGeoPositionInfo::operator<<(QDataStream &stream, const QGeoPositionInfo &info) - - Writes the given \a info to the specified \a stream. - - \sa {Serializing Qt Data Types} -*/ - -QDataStream &QGeoPositionInfo::dataStreamOut(QDataStream &stream, const QGeoPositionInfo &info) -{ - stream << info.d->timestamp; - stream << info.d->coord; - stream << info.d->doubleAttribs; - return stream; -} - -/*! - \fn QDataStream &QGeoPositionInfo::operator>>(QDataStream &stream, QGeoPositionInfo &info) - - Reads a coordinate from the specified \a stream into the given - \a info. - - \sa {Serializing Qt Data Types} -*/ - -QDataStream &QGeoPositionInfo::dataStreamIn(QDataStream &stream, QGeoPositionInfo &info) -{ - stream >> info.d->timestamp; - stream >> info.d->coord; - stream >> info.d->doubleAttribs; - return stream; -} -#endif - -QGeoPositionInfoPrivate::QGeoPositionInfoPrivate() : QSharedData() -{ -} - -QGeoPositionInfoPrivate::QGeoPositionInfoPrivate(const QGeoPositionInfoPrivate &other) - : QSharedData(other), - timestamp(other.timestamp), - coord(other.coord), - doubleAttribs(other.doubleAttribs) -{ -} - -QGeoPositionInfoPrivate::~QGeoPositionInfoPrivate() -{ - -} - -bool QGeoPositionInfoPrivate::operator==(const QGeoPositionInfoPrivate &other) const -{ - return timestamp == other.timestamp - && coord == other.coord - && doubleAttribs == other.doubleAttribs; -} - -QGeoPositionInfoPrivate *QGeoPositionInfoPrivate::get(const QGeoPositionInfo &info) -{ - return info.d.data(); -} - -size_t qHash(const QGeoPositionInfo &key, size_t seed) noexcept -{ - return qHashMulti(seed, key.d->coord); -} - -namespace QTest -{ - -char *toString(const QGeoPositionInfo &info) -{ - QString result; - QDebug dbg(&result); - dbg << info; - - return qstrdup(qPrintable(result)); -} - -} // namespace QTest - -QT_END_NAMESPACE |