QtBase  v6.3.1
qpoint.cpp
Go to the documentation of this file.
1 /****************************************************************************
2 **
3 ** Copyright (C) 2016 The Qt Company Ltd.
4 ** Contact: https://www.qt.io/licensing/
5 **
6 ** This file is part of the QtCore module of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:LGPL$
9 ** Commercial License Usage
10 ** Licensees holding valid commercial Qt licenses may use this file in
11 ** accordance with the commercial license agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and The Qt Company. For licensing terms
14 ** and conditions see https://www.qt.io/terms-conditions. For further
15 ** information use the contact form at https://www.qt.io/contact-us.
16 **
17 ** GNU Lesser General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU Lesser
19 ** General Public License version 3 as published by the Free Software
20 ** Foundation and appearing in the file LICENSE.LGPL3 included in the
21 ** packaging of this file. Please review the following information to
22 ** ensure the GNU Lesser General Public License version 3 requirements
23 ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
24 **
25 ** GNU General Public License Usage
26 ** Alternatively, this file may be used under the terms of the GNU
27 ** General Public License version 2.0 or (at your option) the GNU General
28 ** Public license version 3 or any later version approved by the KDE Free
29 ** Qt Foundation. The licenses are as published by the Free Software
30 ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
31 ** included in the packaging of this file. Please review the following
32 ** information to ensure the GNU General Public License requirements will
33 ** be met: https://www.gnu.org/licenses/gpl-2.0.html and
34 ** https://www.gnu.org/licenses/gpl-3.0.html.
35 **
36 ** $QT_END_LICENSE$
37 **
38 ****************************************************************************/
39 
40 #include "qpoint.h"
41 #include "qdatastream.h"
42 
43 #include <private/qdebug_p.h>
44 #include <QtCore/qhashfunctions.h>
45 
47 
83 /*****************************************************************************
84  QPoint member functions
85  *****************************************************************************/
86 
384 /*****************************************************************************
385  QPoint stream functions
386  *****************************************************************************/
387 #ifndef QT_NO_DATASTREAM
399 {
400  if (s.version() == 1)
401  s << (qint16)p.x() << (qint16)p.y();
402  else
403  s << (qint32)p.x() << (qint32)p.y();
404  return s;
405 }
406 
418 {
419  if (s.version() == 1) {
420  qint16 x, y;
421  s >> x; p.rx() = x;
422  s >> y; p.ry() = y;
423  }
424  else {
425  qint32 x, y;
426  s >> x; p.rx() = x;
427  s >> y; p.ry() = y;
428  }
429  return s;
430 }
431 
432 #endif // QT_NO_DATASTREAM
452 #ifndef QT_NO_DEBUG_STREAM
454 {
455  QDebugStateSaver saver(dbg);
456  dbg.nospace();
457  dbg << "QPoint" << '(';
458  QtDebugUtils::formatQPoint(dbg, p);
459  dbg << ')';
460  return dbg;
461 }
462 
464 {
465  QDebugStateSaver saver(dbg);
466  dbg.nospace();
467  dbg << "QPointF" << '(';
468  QtDebugUtils::formatQPoint(dbg, p);
469  dbg << ')';
470  return dbg;
471 }
472 #endif
473 
482 size_t qHash(QPoint key, size_t seed) noexcept
483 {
484  return qHashMulti(seed, key.x(), key.y());
485 }
486 
783 #ifndef QT_NO_DATASTREAM
795 {
796  s << double(p.x()) << double(p.y());
797  return s;
798 }
799 
811 {
812  double x, y;
813  s >> x;
814  s >> y;
815  p.setX(qreal(x));
816  p.setY(qreal(y));
817  return s;
818 }
819 #endif // QT_NO_DATASTREAM
820 
The QDataStream class provides serialization of binary data to a QIODevice.
Definition: qdatastream.h:66
operator>>(QDataStream &ds, qfloat16 &f)
Definition: qfloat16.cpp:344
operator<<(QDataStream &ds, qfloat16 f)
Definition: qfloat16.cpp:327
The QDebug class provides an output stream for debugging information.
Definition: qdebug.h:65
QDebug & nospace()
Definition: qdebug.h:113
Convenience class for custom QDebug operators.
Definition: qdebug.h:176
template< typename Enum > size_t qHash(QFlags< Enum > flags, size_t seed=0) noexcept
template< typename... T > size_t qHashMulti(size_t seed, const T &...args)
The QPointF class defines a point in the plane using floating point precision.
Definition: qpoint.h:242
The QPoint class defines a point in the plane using integer precision.
Definition: qpoint.h:52
short qint16
Definition: qglobal.h:285
int qint32
Definition: qglobal.h:287
QT_END_INCLUDE_NAMESPACE typedef double qreal
Definition: qglobal.h:341
GLint GLint GLint GLint GLint x
[0]
GLuint64 key
GLint y
GLdouble s
[6]
Definition: qopenglext.h:235
GLfloat GLfloat p
[1]
Definition: qopenglext.h:12698