diff options
author | Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com> | 2016-05-13 13:30:46 +0200 |
---|---|---|
committer | Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com> | 2016-06-10 23:47:15 +0000 |
commit | ebee64645a672e82ffca3b48dbc007cd2f2a52f4 (patch) | |
tree | 0ab5e31523110666cac37f2b8cb76235efab929b /src/corelib | |
parent | cbe62a0e6d0caba8dcb0a63d3af3c458a6298e10 (diff) |
darwin: Add Foundation conversion functions for QRect/QRectF
The fromCGRect function was left out for QRect, as the foundation type is
using CGFloats internally. Clients should use an explicit QRectF::toRect()
when potentially throwing away precision.
Change-Id: I0d4c5c5a4e6a45ea3287e3f37a00b69b0bfdefcf
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
Diffstat (limited to 'src/corelib')
-rw-r--r-- | src/corelib/kernel/qcore_foundation.mm | 44 | ||||
-rw-r--r-- | src/corelib/tools/qrect.h | 13 |
2 files changed, 57 insertions, 0 deletions
diff --git a/src/corelib/kernel/qcore_foundation.mm b/src/corelib/kernel/qcore_foundation.mm index 335920c911..a488f4066d 100644 --- a/src/corelib/kernel/qcore_foundation.mm +++ b/src/corelib/kernel/qcore_foundation.mm @@ -44,9 +44,14 @@ #include <QtCore/qdatetime.h> #include <QtCore/quuid.h> #include <QtCore/qbytearray.h> +#include <QtCore/qrect.h> #import <Foundation/Foundation.h> +#if defined(QT_PLATFORM_UIKIT) +#import <CoreGraphics/CoreGraphics.h> +#endif + QT_BEGIN_NAMESPACE /*! @@ -415,4 +420,43 @@ NSDate *QDateTime::toNSDate() const dateWithTimeIntervalSince1970:static_cast<NSTimeInterval>(toMSecsSinceEpoch()) / 1000]; } +// ---------------------------------------------------------------------------- + +/*! + \since 5.8 + + Creates a CGRect from a QRect. + + \sa fromCGRect() +*/ +CGRect QRect::toCGRect() const Q_DECL_NOTHROW +{ + return CGRectMake(x(), y(), width(), height()); +} + +/*! + \since 5.8 + + Creates a CGRect from a QRectF. + + \sa fromCGRect() +*/ +CGRect QRectF::toCGRect() const Q_DECL_NOTHROW +{ + return CGRectMake(x(), y(), width(), height()); +} + +/*! + \since 5.8 + + Creates a QRectF from a CGRect. + + \sa toCGRect() +*/ +QRectF QRectF::fromCGRect(CGRect rect) Q_DECL_NOTHROW +{ + return QRectF(rect.origin.x, rect.origin.y, rect.size.width, rect.size.height); +} + + QT_END_NAMESPACE diff --git a/src/corelib/tools/qrect.h b/src/corelib/tools/qrect.h index b376b6b999..8ce668f8ec 100644 --- a/src/corelib/tools/qrect.h +++ b/src/corelib/tools/qrect.h @@ -48,6 +48,10 @@ #error qrect.h must be included before any header file that defines topLeft #endif +#if defined(Q_OS_DARWIN) +struct CGRect; +#endif + QT_BEGIN_NAMESPACE class Q_CORE_EXPORT QRect @@ -149,6 +153,10 @@ public: friend Q_DECL_CONSTEXPR inline bool operator==(const QRect &, const QRect &) Q_DECL_NOTHROW; friend Q_DECL_CONSTEXPR inline bool operator!=(const QRect &, const QRect &) Q_DECL_NOTHROW; +#if defined(Q_OS_DARWIN) || defined(Q_QDOC) + CGRect toCGRect() const Q_DECL_NOTHROW Q_REQUIRED_RESULT; +#endif + private: int x1; int y1; @@ -604,6 +612,11 @@ public: Q_DECL_CONSTEXPR inline QRect toRect() const Q_DECL_NOTHROW Q_REQUIRED_RESULT; QRect toAlignedRect() const Q_DECL_NOTHROW Q_REQUIRED_RESULT; +#if defined(Q_OS_DARWIN) || defined(Q_QDOC) + static QRectF fromCGRect(CGRect rect) Q_DECL_NOTHROW Q_REQUIRED_RESULT; + CGRect toCGRect() const Q_DECL_NOTHROW Q_REQUIRED_RESULT; +#endif + private: qreal xp; qreal yp; |