8#include <QtCore/qcheckedint_impl.h>
9#include <QtCore/qhashfunctions.h>
10#include <QtCore/qmargins.h>
11#include <QtCore/qsize.h>
12#include <QtCore/qpoint.h>
15#error qrect.h must be included before any header file that defines topLeft
18#if defined(Q_OS_DARWIN) || defined(Q_QDOC)
21#if defined(Q_OS_WASM) || defined(Q_QDOC)
34 constexpr QRect()
noexcept : x1(0), y1(0), x2(-1), y2(-1) {}
35 constexpr QRect(
const QPoint &topleft,
const QPoint &bottomright)
noexcept;
36 constexpr QRect(
const QPoint &topleft,
const QSize &size)
noexcept;
37 constexpr QRect(
int left,
int top,
int width,
int height)
noexcept;
39 constexpr inline bool isNull()
const noexcept;
40 constexpr inline bool isEmpty()
const noexcept;
41 constexpr inline bool isValid()
const noexcept;
43 constexpr inline int left()
const noexcept;
44 constexpr inline int top()
const noexcept;
45 constexpr inline int right()
const noexcept;
46 constexpr inline int bottom()
const noexcept;
47 [[nodiscard]] QRect normalized()
const noexcept;
49 constexpr inline int x()
const noexcept;
50 constexpr inline int y()
const noexcept;
51 constexpr inline void setLeft(
int pos)
noexcept;
52 constexpr inline void setTop(
int pos)
noexcept;
53 constexpr inline void setRight(
int pos)
noexcept;
54 constexpr inline void setBottom(
int pos)
noexcept;
55 constexpr inline void setX(
int x)
noexcept;
56 constexpr inline void setY(
int y)
noexcept;
58 constexpr inline void setTopLeft(
const QPoint &p)
noexcept;
59 constexpr inline void setBottomRight(
const QPoint &p)
noexcept;
60 constexpr inline void setTopRight(
const QPoint &p)
noexcept;
61 constexpr inline void setBottomLeft(
const QPoint &p)
noexcept;
63 constexpr inline QPoint topLeft()
const noexcept;
64 constexpr inline QPoint bottomRight()
const noexcept;
65 constexpr inline QPoint topRight()
const noexcept;
66 constexpr inline QPoint bottomLeft()
const noexcept;
67 constexpr inline QPoint center()
const noexcept;
69 constexpr inline void moveLeft(
int pos)
noexcept;
70 constexpr inline void moveTop(
int pos)
noexcept;
71 constexpr inline void moveRight(
int pos)
noexcept;
72 constexpr inline void moveBottom(
int pos)
noexcept;
73 constexpr inline void moveTopLeft(
const QPoint &p)
noexcept;
74 constexpr inline void moveBottomRight(
const QPoint &p)
noexcept;
75 constexpr inline void moveTopRight(
const QPoint &p)
noexcept;
76 constexpr inline void moveBottomLeft(
const QPoint &p)
noexcept;
77 constexpr inline void moveCenter(
const QPoint &p)
noexcept;
79 constexpr inline void translate(
int dx,
int dy)
noexcept;
80 constexpr inline void translate(
const QPoint &p)
noexcept;
81 [[nodiscard]]
constexpr inline QRect translated(
int dx,
int dy)
const noexcept;
82 [[nodiscard]]
constexpr inline QRect translated(
const QPoint &p)
const noexcept;
83 [[nodiscard]]
constexpr inline QRect transposed()
const noexcept;
85 constexpr inline void moveTo(
int x,
int t)
noexcept;
86 constexpr inline void moveTo(
const QPoint &p)
noexcept;
88 constexpr inline void setRect(
int x,
int y,
int w,
int h)
noexcept;
89 constexpr inline void getRect(
int *x,
int *y,
int *w,
int *h)
const;
91 constexpr inline void setCoords(
int x1,
int y1,
int x2,
int y2)
noexcept;
92 constexpr inline void getCoords(
int *x1,
int *y1,
int *x2,
int *y2)
const;
94 constexpr inline void adjust(
int x1,
int y1,
int x2,
int y2)
noexcept;
95 [[nodiscard]]
constexpr inline QRect adjusted(
int x1,
int y1,
int x2,
int y2)
const noexcept;
97 constexpr inline QSize size()
const noexcept;
98 constexpr inline int width()
const noexcept;
99 constexpr inline int height()
const noexcept;
100 constexpr inline void setWidth(
int w)
noexcept;
101 constexpr inline void setHeight(
int h)
noexcept;
102 constexpr inline void setSize(
const QSize &s)
noexcept;
104 QRect operator|(
const QRect &r)
const noexcept;
105 QRect operator&(
const QRect &r)
const noexcept;
106 inline QRect &operator|=(
const QRect &r)
noexcept;
107 inline QRect &operator&=(
const QRect &r)
noexcept;
109 bool contains(
const QRect &r,
bool proper =
false)
const noexcept;
110 bool contains(
const QPoint &p,
bool proper =
false)
const noexcept;
111 inline bool contains(
int x,
int y)
const noexcept;
112 inline bool contains(
int x,
int y,
bool proper)
const noexcept;
113 [[nodiscard]]
inline QRect united(
const QRect &other)
const noexcept;
114 [[nodiscard]]
inline QRect intersected(
const QRect &other)
const noexcept;
115 bool intersects(
const QRect &r)
const noexcept;
117 constexpr inline QRect marginsAdded(
const QMargins &margins)
const noexcept;
118 constexpr inline QRect marginsRemoved(
const QMargins &margins)
const noexcept;
119 constexpr inline QRect &operator+=(
const QMargins &margins)
noexcept;
120 constexpr inline QRect &operator-=(
const QMargins &margins)
noexcept;
122 [[nodiscard]]
static constexpr inline QRect span(
const QPoint &p1,
const QPoint &p2)
noexcept;
125 friend constexpr bool comparesEqual(
const QRect &r1,
const QRect &r2)
noexcept
126 {
return r1.x1==r2.x1 && r1.x2==r2.x2 && r1.y1==r2.y1 && r1.y2==r2.y2; }
127 Q_DECLARE_EQUALITY_COMPARABLE_LITERAL_TYPE(QRect)
128 friend constexpr inline size_t qHash(
const QRect &, size_t)
noexcept;
131#if defined(Q_OS_DARWIN) || defined(Q_QDOC)
132 [[nodiscard]] CGRect toCGRect()
const noexcept;
134 [[nodiscard]]
constexpr inline QRectF toRectF()
const noexcept;
137 using Representation = QtPrivate::QCheckedIntegers::QCheckedInt<
int>;
139 constexpr QRect(Representation aleft,
141 Representation awidth,
142 Representation aheight)
noexcept
143 : x1(aleft), y1(atop),
144 x2(aleft + awidth - 1), y2(atop + aheight - 1)
156
157
158#ifndef QT_NO_DATASTREAM
159Q_CORE_EXPORT
QDataStream &operator<<(QDataStream &,
const QRect &);
164
165
167constexpr inline QRect::QRect(
int aleft,
int atop,
int awidth,
int aheight)
noexcept
168 : QRect(Representation(aleft), Representation(atop), Representation(awidth), Representation(aheight)) {}
170constexpr inline QRect::QRect(
const QPoint &atopLeft,
const QPoint &abottomRight)
noexcept
171 : x1(atopLeft.x()), y1(atopLeft.y()), x2(abottomRight.x()), y2(abottomRight.y()) {}
173constexpr inline QRect::QRect(
const QPoint &atopLeft,
const QSize &asize)
noexcept
174 : x1(atopLeft.x()), y1(atopLeft.y()), x2(x1 + asize.width() - 1), y2(y1 + asize.height() - 1) {}
176constexpr inline bool QRect::isNull()
const noexcept
180 constexpr Representation minInt((std::numeric_limits<
int>::min)());
181 constexpr Representation maxInt((std::numeric_limits<
int>::max)());
182 const auto adjustedX1 = Q_UNLIKELY(x1 == minInt) ? maxInt : x1 - 1;
183 const auto adjustedY1 = Q_UNLIKELY(y1 == minInt) ? maxInt : y1 - 1;
184 return x2 == adjustedX1 && y2 == adjustedY1;
187constexpr inline bool QRect::isEmpty()
const noexcept
188{
return x1 > x2 || y1 > y2; }
190constexpr inline bool QRect::isValid()
const noexcept
191{
return x1 <= x2 && y1 <= y2; }
193constexpr inline int QRect::left()
const noexcept
194{
return x1.value(); }
196constexpr inline int QRect::top()
const noexcept
197{
return y1.value(); }
199constexpr inline int QRect::right()
const noexcept
200{
return x2.value(); }
202constexpr inline int QRect::bottom()
const noexcept
203{
return y2.value(); }
205constexpr inline int QRect::x()
const noexcept
206{
return x1.value(); }
208constexpr inline int QRect::y()
const noexcept
209{
return y1.value(); }
211constexpr inline void QRect::setLeft(
int pos)
noexcept
214constexpr inline void QRect::setTop(
int pos)
noexcept
217constexpr inline void QRect::setRight(
int pos)
noexcept
220constexpr inline void QRect::setBottom(
int pos)
noexcept
223constexpr inline void QRect::setTopLeft(
const QPoint &p)
noexcept
224{ x1.setValue(p.x()); y1.setValue(p.y()); }
226constexpr inline void QRect::setBottomRight(
const QPoint &p)
noexcept
227{ x2.setValue(p.x()); y2.setValue(p.y()); }
229constexpr inline void QRect::setTopRight(
const QPoint &p)
noexcept
230{ x2.setValue(p.x()); y1.setValue(p.y()); }
232constexpr inline void QRect::setBottomLeft(
const QPoint &p)
noexcept
233{ x1.setValue(p.x()); y2.setValue(p.y()); }
235constexpr inline void QRect::setX(
int ax)
noexcept
238constexpr inline void QRect::setY(
int ay)
noexcept
241constexpr inline QPoint QRect::topLeft()
const noexcept
242{
return QPoint(x1, y1); }
244constexpr inline QPoint QRect::bottomRight()
const noexcept
245{
return QPoint(x2, y2); }
247constexpr inline QPoint QRect::topRight()
const noexcept
248{
return QPoint(x2, y1); }
250constexpr inline QPoint QRect::bottomLeft()
const noexcept
251{
return QPoint(x1, y2); }
253constexpr inline QPoint QRect::center()
const noexcept
256 return QPoint(
int((qint64(x1.value()) + x2.value()) / 2),
257 int((qint64(y1.value()) + y2.value()) / 2));
260constexpr inline int QRect::width()
const noexcept
261{
return (x2 - x1 + 1).value(); }
263constexpr inline int QRect::height()
const noexcept
264{
return (y2 - y1 + 1).value(); }
266constexpr inline QSize QRect::size()
const noexcept
267{
return QSize(width(), height()); }
269constexpr inline void QRect::translate(
int dx,
int dy)
noexcept
277constexpr inline void QRect::translate(
const QPoint &p)
noexcept
285constexpr inline QRect QRect::translated(
int dx,
int dy)
const noexcept
286{
return QRect(QPoint(x1 + dx, y1 + dy), QPoint(x2 + dx, y2 + dy)); }
288constexpr inline QRect QRect::translated(
const QPoint &p)
const noexcept
289{
return QRect(QPoint(x1 + p.x(), y1 + p.y()), QPoint(x2 + p.x(), y2 + p.y())); }
291constexpr inline QRect QRect::transposed()
const noexcept
292{
return QRect(topLeft(), size().transposed()); }
294constexpr inline void QRect::moveTo(
int ax,
int ay)
noexcept
296 Representation rax(ax);
297 Representation ray(ay);
304constexpr inline void QRect::moveTo(
const QPoint &p)
noexcept
306 x2 += Representation(p.x()) - x1;
307 y2 += Representation(p.y()) - y1;
308 x1 = Representation(p.x());
309 y1 = Representation(p.y());
312constexpr inline void QRect::moveLeft(
int pos)
noexcept
313{ x2 += (pos - x1); x1.setValue(pos); }
315constexpr inline void QRect::moveTop(
int pos)
noexcept
316{ y2 += (pos - y1); y1.setValue(pos); }
318constexpr inline void QRect::moveRight(
int pos)
noexcept
324constexpr inline void QRect::moveBottom(
int pos)
noexcept
330constexpr inline void QRect::moveTopLeft(
const QPoint &p)
noexcept
336constexpr inline void QRect::moveBottomRight(
const QPoint &p)
noexcept
342constexpr inline void QRect::moveTopRight(
const QPoint &p)
noexcept
348constexpr inline void QRect::moveBottomLeft(
const QPoint &p)
noexcept
354constexpr inline void QRect::moveCenter(
const QPoint &p)
noexcept
364constexpr inline void QRect::getRect(
int *ax,
int *ay,
int *aw,
int *ah)
const
368 *aw = (x2 - x1 + 1).value();
369 *ah = (y2 - y1 + 1).value();
372constexpr inline void QRect::setRect(
int ax,
int ay,
int aw,
int ah)
noexcept
380constexpr inline void QRect::getCoords(
int *xp1,
int *yp1,
int *xp2,
int *yp2)
const
388constexpr inline void QRect::setCoords(
int xp1,
int yp1,
int xp2,
int yp2)
noexcept
396constexpr inline QRect QRect::adjusted(
int xp1,
int yp1,
int xp2,
int yp2)
const noexcept
397{
return QRect(QPoint(x1 + xp1, y1 + yp1), QPoint(x2 + xp2, y2 + yp2)); }
399constexpr inline void QRect::adjust(
int dx1,
int dy1,
int dx2,
int dy2)
noexcept
407constexpr inline void QRect::setWidth(
int w)
noexcept
408{ x2 = (x1 + w - 1); }
410constexpr inline void QRect::setHeight(
int h)
noexcept
411{ y2 = (y1 + h - 1); }
413constexpr inline void QRect::setSize(
const QSize &s)
noexcept
415 x2 = (s.width() + x1 - 1);
416 y2 = (s.height() + y1 - 1);
419inline bool QRect::contains(
int ax,
int ay,
bool aproper)
const noexcept
421 return contains(QPoint(ax, ay), aproper);
424inline bool QRect::contains(
int ax,
int ay)
const noexcept
426 return contains(QPoint(ax, ay),
false);
429inline QRect &QRect::operator|=(
const QRect &r)
noexcept
435inline QRect &QRect::operator&=(
const QRect &r)
noexcept
441inline QRect QRect::intersected(
const QRect &other)
const noexcept
443 return *
this & other;
446inline QRect QRect::united(
const QRect &r)
const noexcept
451constexpr inline size_t qHash(
const QRect &r, size_t seed = 0)
noexcept
453 return qHashMulti(seed, r.x1, r.x2, r.y1, r.y2);
456constexpr inline QRect
operator+(
const QRect &rectangle,
const QMargins &margins)
noexcept
458 return QRect(
QPoint(rectangle.left() - margins.left(), rectangle.top() - margins.top()),
459 QPoint(rectangle.right() + margins.right(), rectangle.bottom() + margins.bottom()));
462constexpr inline QRect
operator+(
const QMargins &margins,
const QRect &rectangle)
noexcept
464 return QRect(
QPoint(rectangle.left() - margins.left(), rectangle.top() - margins.top()),
465 QPoint(rectangle.right() + margins.right(), rectangle.bottom() + margins.bottom()));
468constexpr inline QRect
operator-(
const QRect &lhs,
const QMargins &rhs)
noexcept
470 return QRect(
QPoint(lhs.left() + rhs.left(), lhs.top() + rhs.top()),
471 QPoint(lhs.right() - rhs.right(), lhs.bottom() - rhs.bottom()));
474constexpr inline QRect QRect::marginsAdded(
const QMargins &margins)
const noexcept
476 return QRect(QPoint(x1 - margins.left(), y1 - margins.top()),
477 QPoint(x2 + margins.right(), y2 + margins.bottom()));
480constexpr inline QRect QRect::marginsRemoved(
const QMargins &margins)
const noexcept
482 return QRect(QPoint(x1 + margins.left(), y1 + margins.top()),
483 QPoint(x2 - margins.right(), y2 - margins.bottom()));
486constexpr inline QRect &QRect::operator+=(
const QMargins &margins)
noexcept
488 *
this = marginsAdded(margins);
492constexpr inline QRect &QRect::operator-=(
const QMargins &margins)
noexcept
494 *
this = marginsRemoved(margins);
498constexpr QRect QRect::span(
const QPoint &p1,
const QPoint &p2)
noexcept
500 return QRect(QPoint(qMin(p1.x(), p2.x()), qMin(p1.y(), p2.y())),
501 QPoint(qMax(p1.x(), p2.x()), qMax(p1.y(), p2.y())));
504#ifndef QT_NO_DEBUG_STREAM
505Q_CORE_EXPORT
QDebug operator<<(QDebug,
const QRect &);
512 constexpr QRectF()
noexcept : xp(0.), yp(0.), w(0.), h(0.) {}
513 constexpr QRectF(
const QPointF &topleft,
const QSizeF &size)
noexcept;
514 constexpr QRectF(
const QPointF &topleft,
const QPointF &bottomRight)
noexcept;
515 constexpr QRectF(qreal left, qreal top, qreal width, qreal height)
noexcept;
516 constexpr QRectF(
const QRect &rect)
noexcept;
518 constexpr inline bool isNull()
const noexcept;
519 constexpr inline bool isEmpty()
const noexcept;
520 constexpr inline bool isValid()
const noexcept;
521 [[nodiscard]] QRectF normalized()
const noexcept;
523 constexpr inline qreal left()
const noexcept {
return xp; }
524 constexpr inline qreal top()
const noexcept {
return yp; }
525 constexpr inline qreal right()
const noexcept {
return xp + w; }
526 constexpr inline qreal bottom()
const noexcept {
return yp + h; }
528 constexpr inline qreal x()
const noexcept;
529 constexpr inline qreal y()
const noexcept;
530 constexpr inline void setLeft(qreal pos)
noexcept;
531 constexpr inline void setTop(qreal pos)
noexcept;
532 constexpr inline void setRight(qreal pos)
noexcept;
533 constexpr inline void setBottom(qreal pos)
noexcept;
534 constexpr inline void setX(qreal pos)
noexcept { setLeft(pos); }
535 constexpr inline void setY(qreal pos)
noexcept { setTop(pos); }
537 constexpr inline QPointF topLeft()
const noexcept {
return QPointF(xp, yp); }
538 constexpr inline QPointF bottomRight()
const noexcept {
return QPointF(xp+w, yp+h); }
539 constexpr inline QPointF topRight()
const noexcept {
return QPointF(xp+w, yp); }
540 constexpr inline QPointF bottomLeft()
const noexcept {
return QPointF(xp, yp+h); }
541 constexpr inline QPointF center()
const noexcept;
543 constexpr inline void setTopLeft(
const QPointF &p)
noexcept;
544 constexpr inline void setBottomRight(
const QPointF &p)
noexcept;
545 constexpr inline void setTopRight(
const QPointF &p)
noexcept;
546 constexpr inline void setBottomLeft(
const QPointF &p)
noexcept;
548 constexpr inline void moveLeft(qreal pos)
noexcept;
549 constexpr inline void moveTop(qreal pos)
noexcept;
550 constexpr inline void moveRight(qreal pos)
noexcept;
551 constexpr inline void moveBottom(qreal pos)
noexcept;
552 constexpr inline void moveTopLeft(
const QPointF &p)
noexcept;
553 constexpr inline void moveBottomRight(
const QPointF &p)
noexcept;
554 constexpr inline void moveTopRight(
const QPointF &p)
noexcept;
555 constexpr inline void moveBottomLeft(
const QPointF &p)
noexcept;
556 constexpr inline void moveCenter(
const QPointF &p)
noexcept;
558 constexpr inline void translate(qreal dx, qreal dy)
noexcept;
559 constexpr inline void translate(
const QPointF &p)
noexcept;
561 [[nodiscard]]
constexpr inline QRectF translated(qreal dx, qreal dy)
const noexcept;
562 [[nodiscard]]
constexpr inline QRectF translated(
const QPointF &p)
const noexcept;
564 [[nodiscard]]
constexpr inline QRectF transposed()
const noexcept;
566 constexpr inline void moveTo(qreal x, qreal y)
noexcept;
567 constexpr inline void moveTo(
const QPointF &p)
noexcept;
569 constexpr inline void setRect(qreal x, qreal y, qreal w, qreal h)
noexcept;
570 constexpr inline void getRect(qreal *x, qreal *y, qreal *w, qreal *h)
const;
572 constexpr inline void setCoords(qreal x1, qreal y1, qreal x2, qreal y2)
noexcept;
573 constexpr inline void getCoords(qreal *x1, qreal *y1, qreal *x2, qreal *y2)
const;
575 constexpr inline void adjust(qreal x1, qreal y1, qreal x2, qreal y2)
noexcept;
576 [[nodiscard]]
constexpr inline QRectF adjusted(qreal x1, qreal y1, qreal x2, qreal y2)
const noexcept;
578 constexpr inline QSizeF size()
const noexcept;
579 constexpr inline qreal width()
const noexcept;
580 constexpr inline qreal height()
const noexcept;
581 constexpr inline void setWidth(qreal w)
noexcept;
582 constexpr inline void setHeight(qreal h)
noexcept;
583 constexpr inline void setSize(
const QSizeF &s)
noexcept;
585 QRectF operator|(
const QRectF &r)
const noexcept;
586 QRectF operator&(
const QRectF &r)
const noexcept;
587 inline QRectF &operator|=(
const QRectF &r)
noexcept;
588 inline QRectF &operator&=(
const QRectF &r)
noexcept;
590 bool contains(
const QRectF &r)
const noexcept;
591 bool contains(
const QPointF &p)
const noexcept;
592 inline bool contains(qreal x, qreal y)
const noexcept;
593 [[nodiscard]]
inline QRectF united(
const QRectF &other)
const noexcept;
594 [[nodiscard]]
inline QRectF intersected(
const QRectF &other)
const noexcept;
595 bool intersects(
const QRectF &r)
const noexcept;
597 constexpr inline QRectF marginsAdded(
const QMarginsF &margins)
const noexcept;
598 constexpr inline QRectF marginsRemoved(
const QMarginsF &margins)
const noexcept;
599 constexpr inline QRectF &operator+=(
const QMarginsF &margins)
noexcept;
600 constexpr inline QRectF &operator-=(
const QMarginsF &margins)
noexcept;
603 friend constexpr bool comparesEqual(
const QRectF &r1,
const QRectF &r2)
noexcept
605 return r1.topLeft() == r2.topLeft()
606 && r1.size() == r2.size();
608 Q_DECLARE_EQUALITY_COMPARABLE_LITERAL_TYPE(QRectF)
610 friend constexpr bool comparesEqual(
const QRectF &r1,
const QRect &r2)
noexcept
611 {
return r1.topLeft() == r2.topLeft() && r1.size() == r2.size(); }
612 Q_DECLARE_EQUALITY_COMPARABLE_LITERAL_TYPE(QRectF, QRect)
614 friend constexpr bool qFuzzyCompare(
const QRectF &lhs,
const QRectF &rhs)
noexcept
616 return qFuzzyCompare(lhs.topLeft(), rhs.topLeft())
617 && qFuzzyCompare(lhs.bottomRight(), rhs.bottomRight());
620 friend constexpr bool qFuzzyIsNull(
const QRectF &rect)
noexcept
622 return qFuzzyIsNull(rect.w) && qFuzzyIsNull(rect.h);
626 [[nodiscard]]
constexpr inline QRect toRect()
const noexcept;
627 [[nodiscard]] QRect toAlignedRect()
const noexcept;
629#if defined(Q_OS_DARWIN) || defined(Q_QDOC)
630 [[nodiscard]]
static QRectF fromCGRect(CGRect rect)
noexcept;
631 [[nodiscard]] CGRect toCGRect()
const noexcept;
634#if defined(Q_OS_WASM) || defined(Q_QDOC)
635 [[nodiscard]]
static QRectF fromDOMRect(emscripten::val domRect);
636 [[nodiscard]] emscripten::val toDOMRect()
const;
649
650
651#ifndef QT_NO_DATASTREAM
652Q_CORE_EXPORT
QDataStream &operator<<(QDataStream &,
const QRectF &);
657
658
660constexpr inline QRectF::QRectF(qreal aleft, qreal atop, qreal awidth, qreal aheight)
noexcept
661 : xp(aleft), yp(atop), w(awidth), h(aheight)
665constexpr inline QRectF::QRectF(
const QPointF &atopLeft,
const QSizeF &asize)
noexcept
666 : xp(atopLeft.x()), yp(atopLeft.y()), w(asize.width()), h(asize.height())
671constexpr inline QRectF::QRectF(
const QPointF &atopLeft,
const QPointF &abottomRight)
noexcept
672 : xp(atopLeft.x()), yp(atopLeft.y()), w(abottomRight.x() - atopLeft.x()), h(abottomRight.y() - atopLeft.y())
676constexpr inline QRectF::QRectF(
const QRect &r)
noexcept
679 w(qint64(r.right()) - r.left() + 1),
680 h(qint64(r.bottom()) - r.top() + 1)
685QT_WARNING_DISABLE_FLOAT_COMPARE
687constexpr inline bool QRectF::isNull()
const noexcept
688{
return w == 0. && h == 0.; }
690constexpr inline bool QRectF::isEmpty()
const noexcept
691{
return w <= 0. || h <= 0.; }
695constexpr inline bool QRectF::isValid()
const noexcept
696{
return w > 0. && h > 0.; }
698constexpr inline qreal QRectF::x()
const noexcept
701constexpr inline qreal QRectF::y()
const noexcept
704constexpr inline void QRectF::setLeft(qreal pos)
noexcept
705{ qreal diff = pos - xp; xp += diff; w -= diff; }
707constexpr inline void QRectF::setRight(qreal pos)
noexcept
710constexpr inline void QRectF::setTop(qreal pos)
noexcept
711{ qreal diff = pos - yp; yp += diff; h -= diff; }
713constexpr inline void QRectF::setBottom(qreal pos)
noexcept
716constexpr inline void QRectF::setTopLeft(
const QPointF &p)
noexcept
717{ setLeft(p.x()); setTop(p.y()); }
719constexpr inline void QRectF::setTopRight(
const QPointF &p)
noexcept
720{ setRight(p.x()); setTop(p.y()); }
722constexpr inline void QRectF::setBottomLeft(
const QPointF &p)
noexcept
723{ setLeft(p.x()); setBottom(p.y()); }
725constexpr inline void QRectF::setBottomRight(
const QPointF &p)
noexcept
726{ setRight(p.x()); setBottom(p.y()); }
728constexpr inline QPointF QRectF::center()
const noexcept
729{
return QPointF(xp + w/2, yp + h/2); }
731constexpr inline void QRectF::moveLeft(qreal pos)
noexcept
734constexpr inline void QRectF::moveTop(qreal pos)
noexcept
737constexpr inline void QRectF::moveRight(qreal pos)
noexcept
740constexpr inline void QRectF::moveBottom(qreal pos)
noexcept
743constexpr inline void QRectF::moveTopLeft(
const QPointF &p)
noexcept
744{ moveLeft(p.x()); moveTop(p.y()); }
746constexpr inline void QRectF::moveTopRight(
const QPointF &p)
noexcept
747{ moveRight(p.x()); moveTop(p.y()); }
749constexpr inline void QRectF::moveBottomLeft(
const QPointF &p)
noexcept
750{ moveLeft(p.x()); moveBottom(p.y()); }
752constexpr inline void QRectF::moveBottomRight(
const QPointF &p)
noexcept
753{ moveRight(p.x()); moveBottom(p.y()); }
755constexpr inline void QRectF::moveCenter(
const QPointF &p)
noexcept
756{ xp = p.x() - w/2; yp = p.y() - h/2; }
758constexpr inline qreal QRectF::width()
const noexcept
761constexpr inline qreal QRectF::height()
const noexcept
764constexpr inline QSizeF QRectF::size()
const noexcept
765{
return QSizeF(w, h); }
767constexpr inline void QRectF::translate(qreal dx, qreal dy)
noexcept
773constexpr inline void QRectF::translate(
const QPointF &p)
noexcept
779constexpr inline void QRectF::moveTo(qreal ax, qreal ay)
noexcept
785constexpr inline void QRectF::moveTo(
const QPointF &p)
noexcept
791constexpr inline QRectF QRectF::translated(qreal dx, qreal dy)
const noexcept
793 return QRectF(xp + dx, yp + dy, w, h);
796constexpr inline QRectF QRectF::translated(
const QPointF &p)
const noexcept
797{
return QRectF(xp + p.x(), yp + p.y(), w, h); }
799constexpr inline QRectF QRectF::transposed()
const noexcept
800{
return QRectF(topLeft(), size().transposed()); }
802constexpr inline void QRectF::getRect(qreal *ax, qreal *ay, qreal *aaw, qreal *aah)
const
810constexpr inline void QRectF::setRect(qreal ax, qreal ay, qreal aaw, qreal aah)
noexcept
818constexpr inline void QRectF::getCoords(qreal *xp1, qreal *yp1, qreal *xp2, qreal *yp2)
const
826constexpr inline void QRectF::setCoords(qreal xp1, qreal yp1, qreal xp2, qreal yp2)
noexcept
834constexpr inline void QRectF::adjust(qreal xp1, qreal yp1, qreal xp2, qreal yp2)
noexcept
842constexpr inline QRectF QRectF::adjusted(qreal xp1, qreal yp1, qreal xp2, qreal yp2)
const noexcept
844 return QRectF(xp + xp1, yp + yp1, w + xp2 - xp1, h + yp2 - yp1);
847constexpr inline void QRectF::setWidth(qreal aw)
noexcept
850constexpr inline void QRectF::setHeight(qreal ah)
noexcept
853constexpr inline void QRectF::setSize(
const QSizeF &s)
noexcept
859inline bool QRectF::contains(qreal ax, qreal ay)
const noexcept
861 return contains(QPointF(ax, ay));
864inline QRectF &QRectF::operator|=(
const QRectF &r)
noexcept
870inline QRectF &QRectF::operator&=(
const QRectF &r)
noexcept
876inline QRectF QRectF::intersected(
const QRectF &r)
const noexcept
881inline QRectF QRectF::united(
const QRectF &r)
const noexcept
886constexpr QRectF QRect::toRectF()
const noexcept {
return *
this; }
888constexpr inline QRect QRectF::toRect()
const noexcept
893 const int nxp = QtPrivate::qSaturateRound(xp);
894 const int nyp = QtPrivate::qSaturateRound(yp);
895 const int nw = QtPrivate::qSaturateRound(w + (xp - nxp) / 2);
896 const int nh = QtPrivate::qSaturateRound(h + (yp - nyp) / 2);
897 return QRect(nxp, nyp, nw, nh);
900constexpr inline QRectF
operator+(
const QRectF &lhs,
const QMarginsF &rhs)
noexcept
902 return QRectF(
QPointF(lhs.left() - rhs.left(), lhs.top() - rhs.top()),
903 QSizeF(lhs.width() + rhs.left() + rhs.right(), lhs.height() + rhs.top() + rhs.bottom()));
906constexpr inline QRectF
operator+(
const QMarginsF &lhs,
const QRectF &rhs)
noexcept
908 return QRectF(
QPointF(rhs.left() - lhs.left(), rhs.top() - lhs.top()),
909 QSizeF(rhs.width() + lhs.left() + lhs.right(), rhs.height() + lhs.top() + lhs.bottom()));
912constexpr inline QRectF
operator-(
const QRectF &lhs,
const QMarginsF &rhs)
noexcept
914 return QRectF(
QPointF(lhs.left() + rhs.left(), lhs.top() + rhs.top()),
915 QSizeF(lhs.width() - rhs.left() - rhs.right(), lhs.height() - rhs.top() - rhs.bottom()));
918constexpr inline QRectF QRectF::marginsAdded(
const QMarginsF &margins)
const noexcept
920 return QRectF(QPointF(xp - margins.left(), yp - margins.top()),
921 QSizeF(w + margins.left() + margins.right(), h + margins.top() + margins.bottom()));
924constexpr inline QRectF QRectF::marginsRemoved(
const QMarginsF &margins)
const noexcept
926 return QRectF(QPointF(xp + margins.left(), yp + margins.top()),
927 QSizeF(w - margins.left() - margins.right(), h - margins.top() - margins.bottom()));
930constexpr inline QRectF &QRectF::operator+=(
const QMarginsF &margins)
noexcept
932 *
this = marginsAdded(margins);
936constexpr inline QRectF &QRectF::operator-=(
const QMarginsF &margins)
noexcept
938 *
this = marginsRemoved(margins);
942#ifndef QT_NO_DEBUG_STREAM
943Q_CORE_EXPORT
QDebug operator<<(QDebug,
const QRectF &);
static bool readIniSection(const QSettingsKey §ion, QByteArrayView data, ParsedSettingsMap *settingsMap)
void set(const QString &key, const QVariant &value) override
QStringList children(const QString &prefix, ChildSpec spec) const override
~QConfFileSettingsPrivate()
virtual void initAccess()
bool readIniFile(QByteArrayView data, UnparsedSettingsMap *unparsedIniSections)
bool isWritable() const override
QString fileName() const override
QConfFileSettingsPrivate(QSettings::Format format, QSettings::Scope scope, const QString &organization, const QString &application)
void remove(const QString &key) override
QConfFileSettingsPrivate(const QString &fileName, QSettings::Format format)
const QList< QConfFile * > & getConfFiles() const
static bool readIniLine(QByteArrayView data, qsizetype &dataPos, qsizetype &lineStart, qsizetype &lineLen, qsizetype &equalsPos)
std::optional< QVariant > get(const QString &key) const override
UnparsedSettingsMap unparsedIniSections
ParsedSettingsMap originalKeys
static Q_AUTOTEST_EXPORT void clearCache()
ParsedSettingsMap removedKeys
ParsedSettingsMap mergedKeyMap() const
static QConfFile * fromName(const QString &name, bool _userPerms)
ParsedSettingsMap addedKeys
\inmodule QtCore\reentrant
\inmodule QtCore\reentrant
constexpr qreal & ry() noexcept
Returns a reference to the y coordinate of this point.
constexpr qreal x() const noexcept
Returns the x coordinate of this point.
constexpr qreal manhattanLength() const
friend constexpr bool comparesEqual(const QPointF &p1, const QPointF &p2) noexcept
friend constexpr bool qFuzzyIsNull(const QPointF &point) noexcept
constexpr qreal y() const noexcept
Returns the y coordinate of this point.
constexpr QPointF & operator+=(const QPointF &p)
Adds the given point to this point and returns a reference to this point.
constexpr qreal & rx() noexcept
Returns a reference to the x coordinate of this point.
constexpr QPointF & operator*=(qreal c)
Multiplies this point's coordinates by the given finite factor, and returns a reference to this point...
constexpr QPointF transposed() const noexcept
constexpr void setY(qreal y) noexcept
Sets the y coordinate of this point to the given finite y coordinate.
constexpr QPointF & operator-=(const QPointF &p)
Subtracts the given point from this point and returns a reference to this point.
constexpr QPointF() noexcept
Constructs a null point, i.e.
constexpr QPointF(qreal xpos, qreal ypos) noexcept
Constructs a point with the given coordinates (xpos, ypos).
constexpr void setX(qreal x) noexcept
Sets the x coordinate of this point to the given finite x coordinate.
constexpr QPointF & operator/=(qreal c)
Divides both x and y by the given divisor, and returns a reference to this point.
constexpr QPointF(const QPoint &p) noexcept
Constructs a copy of the given point.
bool isNull() const noexcept
Returns true if both the x and y coordinates are set to 0.0 (ignoring the sign); otherwise returns fa...
static constexpr qreal dotProduct(const QPointF &p1, const QPointF &p2)
friend constexpr bool qFuzzyCompare(const QPointF &p1, const QPointF &p2) noexcept
\inmodule QtCore\reentrant
constexpr bool isNull() const noexcept
Returns true if both the x and y coordinates are set to 0, otherwise returns false.
constexpr QPoint & operator*=(double factor)
Multiplies this point's coordinates by the given factor, and returns a reference to this point.
constexpr int & ry() noexcept
Returns a reference to the y coordinate of this point.
constexpr int & rx() noexcept
Returns a reference to the x coordinate of this point.
constexpr QPoint transposed() const noexcept
constexpr int x() const noexcept
Returns the x coordinate of this point.
constexpr void setY(int y) noexcept
Sets the y coordinate of this point to the given y coordinate.
constexpr QPoint & operator*=(int factor)
Multiplies this point's coordinates by the given factor, and returns a reference to this point.
constexpr QPoint & operator+=(const QPoint &p)
Adds the given point to this point and returns a reference to this point.
constexpr int manhattanLength() const
Returns the sum of the absolute values of x() and y(), traditionally known as the "Manhattan length" ...
constexpr QPoint(int xpos, int ypos) noexcept
Constructs a point with the given coordinates (xpos, ypos).
constexpr int y() const noexcept
Returns the y coordinate of this point.
static constexpr int dotProduct(const QPoint &p1, const QPoint &p2)
constexpr void setX(int x) noexcept
Sets the x coordinate of this point to the given x coordinate.
constexpr QPoint & operator*=(float factor)
Multiplies this point's coordinates by the given factor, and returns a reference to this point.
constexpr QPoint & operator-=(const QPoint &p)
Subtracts the given point from this point and returns a reference to this point.
constexpr QPoint & operator/=(qreal divisor)
This is an overloaded member function, provided for convenience. It differs from the above function o...
constexpr QPoint() noexcept
Constructs a null point, i.e.
friend constexpr bool comparesEqual(const QPoint &p1, const QPoint &p2) noexcept
\inmodule QtCore\reentrant
\inmodule QtCore\reentrant
QSettingsGroup(const QString &s, bool guessArraySize)
qsizetype arraySizeGuess() const
QSettingsGroup(const QString &s)
void setArrayIndex(qsizetype i)
QSettingsIniKey(const QString &str, qsizetype pos=-1)
QSettingsKey(const QString &key, Qt::CaseSensitivity cs, qsizetype=-1)
QString originalCaseKey() const
qsizetype originalKeyPosition() const
Combined button and popup list for selecting options.
QDataStream & readListBasedContainer(QDataStream &s, Container &c)
QDataStream & readAssociativeContainer(QDataStream &s, Container &c)
QDataStream & writeAssociativeContainer(QDataStream &s, const Container &c)
QDataStream & writeAssociativeMultiContainer(QDataStream &s, const Container &c)
QDataStream & writeSequentialContainer(QDataStream &s, const Container &c)
QDataStream & readArrayBasedContainer(QDataStream &s, Container &c)
static const char charTraits[256]
std::enable_if_t< std::is_enum< T >::value, QDataStream & > operator>>(QDataStream &s, T &t)
QDataStream & operator>>(QDataStream &s, QFlags< Enum > &e)
QDataStreamIfHasIStreamOperators< T1, T2 > operator>>(QDataStream &s, std::pair< T1, T2 > &p)
QDataStream & operator>>(QDataStream &s, QKeyCombination &combination)
QDataStreamIfHasIStreamOperatorsContainer< QHash< Key, T >, Key, T > operator>>(QDataStream &s, QHash< Key, T > &hash)
QDataStreamIfHasIStreamOperatorsContainer< QList< T >, T > operator>>(QDataStream &s, QList< T > &v)
Q_CORE_EXPORT QDebug operator<<(QDebug debug, QDir::Filters filters)
size_t qHash(QPointF, size_t seed=0)=delete
Q_DECLARE_TYPEINFO(QPointF, Q_PRIMITIVE_TYPE)
Q_DECLARE_TYPEINFO(QPoint, Q_PRIMITIVE_TYPE)
constexpr QRectF operator+(const QRectF &lhs, const QMarginsF &rhs) noexcept
constexpr QRect operator+(const QMargins &margins, const QRect &rectangle) noexcept
Q_DECLARE_TYPEINFO(QRect, Q_RELOCATABLE_TYPE)
constexpr QRectF operator+(const QMarginsF &lhs, const QRectF &rhs) noexcept
Q_DECLARE_TYPEINFO(QRectF, Q_RELOCATABLE_TYPE)
constexpr QRectF operator-(const QRectF &lhs, const QMarginsF &rhs) noexcept
constexpr QRect operator+(const QRect &rectangle, const QMargins &margins) noexcept
constexpr size_t qHash(const QRect &r, size_t seed=0) noexcept
constexpr QRect operator-(const QRect &lhs, const QMargins &rhs) noexcept
QMap< QString, QSettingsIniSection > IniMap
QList< QConfFileCustomFormat > CustomFormatVector
static bool operator<(const QSettingsIniKey &k1, const QSettingsIniKey &k2)
static constexpr QChar sep
static Path getPath(QSettings::Format format, QSettings::Scope scope)
QMap< QSettingsIniKey, QVariant > IniKeyMap
static int pathHashKey(QSettings::Format format, QSettings::Scope scope)
static QString make_user_path()
static std::unique_lock< QBasicMutex > initDefaultPaths(std::unique_lock< QBasicMutex > locker)
static QString make_user_path_without_qstandard_paths()
QHash< QString, QConfFile * > ConfFileHash
QHash< int, Path > PathHash
Q_DECLARE_TYPEINFO(QSettingsIniSection, Q_RELOCATABLE_TYPE)
Q_DECLARE_TYPEINFO(QConfFileCustomFormat, Q_RELOCATABLE_TYPE)
Q_DECLARE_TYPEINFO(QSettingsIniKey, Q_RELOCATABLE_TYPE)
QCache< QString, QConfFile > ConfFileCache
#define FLUSH_CURRENT_SECTION()
static void iniChopTrailingSpaces(QString &str, qsizetype limit)
Q_DECLARE_TYPEINFO(QSettingsGroup, Q_RELOCATABLE_TYPE)
static const Qt::CaseSensitivity IniCaseSensitivity
Q_DECLARE_TYPEINFO(QSettingsKey, Q_RELOCATABLE_TYPE)
QMap< QSettingsKey, QByteArray > UnparsedSettingsMap
QMap< QSettingsKey, QVariant > ParsedSettingsMap
#define QT_QSETTINGS_ALWAYS_CASE_SENSITIVE_AND_FORGET_ORIGINAL_KEY_ORDER