OSDN Git Service

RectInRegion() function cleanup
authorIvailo Monev <xakepa10@laimg.moc>
Thu, 12 Dec 2019 23:26:29 +0000 (23:26 +0000)
committerIvailo Monev <xakepa10@laimg.moc>
Thu, 12 Dec 2019 23:26:29 +0000 (23:26 +0000)
Signed-off-by: Ivailo Monev <xakepa10@laimg.moc>
src/gui/painting/qregion.cpp

index 1296879..17cefc0 100644 (file)
@@ -1679,11 +1679,10 @@ QT_END_INCLUDE_NAMESPACE
  *  Remember, x2 and y2 are not in the region
  */
 #define EXTENTCHECK(r1, r2) \
-        ((r1)->right() >= (r2)->left() && \
-         (r1)->left() <= (r2)->right() && \
-         (r1)->bottom() >= (r2)->top() && \
-         (r1)->top() <= (r2)->bottom())
-
+        (r1.right() >= r2.left() && \
+         r1.left() <= r2.right() && \
+         r1.bottom() >= r2.top() && \
+         r1.top() <= r2.bottom())
 
 /*
  *   Check to see if there is enough memory in the present region.
@@ -2579,7 +2578,7 @@ static void SubtractRegion(QRegionPrivate *regM, QRegionPrivate *regS,
 {
     Q_ASSERT(!isEmptyHelper(regM));
     Q_ASSERT(!isEmptyHelper(regS));
-    Q_ASSERT(EXTENTCHECK(&regM->extents, &regS->extents));
+    Q_ASSERT(EXTENTCHECK(regM->extents, regS->extents));
     Q_ASSERT(!regS->contains(*regM));
     Q_ASSERT(!EqualRegion(regM, regS));
 
@@ -2598,7 +2597,7 @@ static void SubtractRegion(QRegionPrivate *regM, QRegionPrivate *regS,
 static void XorRegion(QRegionPrivate *sra, QRegionPrivate *srb, QRegionPrivate &dest)
 {
     Q_ASSERT(!isEmptyHelper(sra) && !isEmptyHelper(srb));
-    Q_ASSERT(EXTENTCHECK(&sra->extents, &srb->extents));
+    Q_ASSERT(EXTENTCHECK(sra->extents, srb->extents));
     Q_ASSERT(!EqualRegion(sra, srb));
 
     QRegionPrivate tra, trb;
@@ -2672,28 +2671,24 @@ static bool PointInRegion(QRegionPrivate *pRegion, int x, int y)
 
 static bool RectInRegion(QRegionPrivate *region, int rx, int ry, uint rwidth, uint rheight)
 {
-    const QRect *pbox;
-    const QRect *pboxEnd;
     QRect rect(rx, ry, rwidth, rheight);
-    QRect *prect = &rect;
-    int partIn, partOut;
 
-    if (!region || region->numRects == 0 || !EXTENTCHECK(&region->extents, prect))
+    if (!region || region->numRects == 0 || !EXTENTCHECK(region->extents, rect))
         return RectangleOut;
 
-    partOut = false;
-    partIn = false;
+    bool partOut = false;
+    bool partIn = false;
 
-    /* can stop when both partOut and partIn are true, or we reach prect->y2 */
-    pbox = (region->numRects == 1) ? &region->extents : region->rects.constData();
-    pboxEnd = pbox + region->numRects;
+    /* can stop when both partOut and partIn are true, or we reach rect->y2 */
+    const QRect *pbox = (region->numRects == 1) ? &region->extents : region->rects.constData();
+    const QRect *pboxEnd = pbox + region->numRects;
     for (; pbox < pboxEnd; ++pbox) {
         if (pbox->bottom() < ry)
            continue;
 
         if (pbox->top() > ry) {
            partOut = true;
-           if (partIn || pbox->top() > prect->bottom())
+           if (partIn || pbox->top() > rect.bottom())
               break;
            ry = pbox->top();
         }
@@ -2707,17 +2702,17 @@ static bool RectInRegion(QRegionPrivate *region, int rx, int ry, uint rwidth, ui
               break;
         }
 
-        if (pbox->left() <= prect->right()) {
+        if (pbox->left() <= rect.right()) {
             partIn = true;      /* definitely overlap */
             if (partOut)
                break;
         }
 
-        if (pbox->right() >= prect->right()) {
+        if (pbox->right() >= rect.right()) {
            ry = pbox->bottom() + 1;     /* finished with this band */
-           if (ry > prect->bottom())
+           if (ry > rect.bottom())
               break;
-           rx = prect->left();  /* reset x out to left again */
+           rx = rect.left();  /* reset x out to left again */
         } else {
             /*
              * Because boxes in a band are maximal width, if the first box
@@ -4055,7 +4050,7 @@ QRegion& QRegion::operator+=(const QRect &r)
 QRegion QRegion::intersect(const QRegion &r) const
 {
     if (isEmptyHelper(d->qt_rgn) || isEmptyHelper(r.d->qt_rgn)
-        || !EXTENTCHECK(&d->qt_rgn->extents, &r.d->qt_rgn->extents))
+        || !EXTENTCHECK(d->qt_rgn->extents, r.d->qt_rgn->extents))
         return QRegion();
 
     /* this is fully contained in r */
@@ -4100,7 +4095,7 @@ QRegion QRegion::intersect(const QRegion &r) const
 QRegion QRegion::intersect(const QRect &r) const
 {
     if (isEmptyHelper(d->qt_rgn) || r.isEmpty()
-        || !EXTENTCHECK(&d->qt_rgn->extents, &r))
+        || !EXTENTCHECK(d->qt_rgn->extents, r))
         return QRegion();
 
     /* this is fully contained in r */
@@ -4129,7 +4124,7 @@ QRegion QRegion::subtract(const QRegion &r) const
         return *this;
     if (r.d->qt_rgn->contains(*d->qt_rgn))
         return QRegion();
-    if (!EXTENTCHECK(&d->qt_rgn->extents, &r.d->qt_rgn->extents))
+    if (!EXTENTCHECK(d->qt_rgn->extents, r.d->qt_rgn->extents))
         return *this;
     if (d == r.d || EqualRegion(d->qt_rgn, r.d->qt_rgn))
         return QRegion();
@@ -4154,7 +4149,7 @@ QRegion QRegion::eor(const QRegion &r) const
         return r;
     } else if (isEmptyHelper(r.d->qt_rgn)) {
         return *this;
-    } else if (!EXTENTCHECK(&d->qt_rgn->extents, &r.d->qt_rgn->extents)) {
+    } else if (!EXTENTCHECK(d->qt_rgn->extents, r.d->qt_rgn->extents)) {
         return (*this + r);
     } else if (d == r.d || EqualRegion(d->qt_rgn, r.d->qt_rgn)) {
         return QRegion();