diff options
Diffstat (limited to 'src/gui/painting/qregion.cpp')
-rw-r--r-- | src/gui/painting/qregion.cpp | 100 |
1 files changed, 48 insertions, 52 deletions
diff --git a/src/gui/painting/qregion.cpp b/src/gui/painting/qregion.cpp index f1f6a51305..3f2da7af28 100644 --- a/src/gui/painting/qregion.cpp +++ b/src/gui/painting/qregion.cpp @@ -1,40 +1,32 @@ /**************************************************************************** ** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the QtGui module of the Qt Toolkit. ** -** $QT_BEGIN_LICENSE:LGPL$ +** $QT_BEGIN_LICENSE:LGPL21$ ** 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 Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception +** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** ** $QT_END_LICENSE$ ** ****************************************************************************/ @@ -450,7 +442,10 @@ QDebug operator<<(QDebug s, const QRegion &r) \sa united(), operator+() */ -const QRegion QRegion::operator|(const QRegion &r) const +#ifdef Q_COMPILER_MANGLES_RETURN_TYPE +const +#endif +QRegion QRegion::operator|(const QRegion &r) const { return united(r); } /*! @@ -459,14 +454,20 @@ const QRegion QRegion::operator|(const QRegion &r) const \sa united(), operator|() */ -const QRegion QRegion::operator+(const QRegion &r) const +#ifdef Q_COMPILER_MANGLES_RETURN_TYPE +const +#endif +QRegion QRegion::operator+(const QRegion &r) const { return united(r); } /*! \overload \since 4.4 */ -const QRegion QRegion::operator+(const QRect &r) const +#ifdef Q_COMPILER_MANGLES_RETURN_TYPE +const +#endif +QRegion QRegion::operator+(const QRect &r) const { return united(r); } /*! @@ -475,14 +476,20 @@ const QRegion QRegion::operator+(const QRect &r) const \sa intersected() */ -const QRegion QRegion::operator&(const QRegion &r) const +#ifdef Q_COMPILER_MANGLES_RETURN_TYPE +const +#endif +QRegion QRegion::operator&(const QRegion &r) const { return intersected(r); } /*! \overload \since 4.4 */ -const QRegion QRegion::operator&(const QRect &r) const +#ifdef Q_COMPILER_MANGLES_RETURN_TYPE +const +#endif +QRegion QRegion::operator&(const QRect &r) const { return intersected(r); } @@ -493,7 +500,10 @@ const QRegion QRegion::operator&(const QRect &r) const \sa subtracted() */ -const QRegion QRegion::operator-(const QRegion &r) const +#ifdef Q_COMPILER_MANGLES_RETURN_TYPE +const +#endif +QRegion QRegion::operator-(const QRegion &r) const { return subtracted(r); } /*! @@ -502,7 +512,10 @@ const QRegion QRegion::operator-(const QRegion &r) const \sa xored() */ -const QRegion QRegion::operator^(const QRegion &r) const +#ifdef Q_COMPILER_MANGLES_RETURN_TYPE +const +#endif +QRegion QRegion::operator^(const QRegion &r) const { return xored(r); } /*! @@ -1066,34 +1079,18 @@ Q_GUI_EXPORT QPainterPath qt_regionToPath(const QRegion ®ion) struct QRegionPrivate { int numRects; + int innerArea; QVector<QRect> rects; QRect extents; QRect innerRect; - int innerArea; inline QRegionPrivate() : numRects(0), innerArea(-1) {} - inline QRegionPrivate(const QRect &r) { - numRects = 1; - extents = r; - innerRect = r; - innerArea = r.width() * r.height(); - } - - inline QRegionPrivate(const QRegionPrivate &r) { - rects = r.rects; - numRects = r.numRects; - extents = r.extents; - innerRect = r.innerRect; - innerArea = r.innerArea; - } - - inline QRegionPrivate &operator=(const QRegionPrivate &r) { - rects = r.rects; - numRects = r.numRects; - extents = r.extents; - innerRect = r.innerRect; - innerArea = r.innerArea; - return *this; + inline QRegionPrivate(const QRect &r) + : numRects(1), + innerArea(r.width() * r.height()), + extents(r), + innerRect(r) + { } void intersect(const QRect &r); @@ -2950,11 +2947,11 @@ typedef struct { typedef struct _EdgeTableEntry { int ymax; /* ycoord at which we exit this edge. */ + int ClockWise; /* flag for winding number rule */ BRESINFO bres; /* Bresenham info to run the edge */ struct _EdgeTableEntry *next; /* next in the list */ struct _EdgeTableEntry *back; /* for insertion sort */ struct _EdgeTableEntry *nextWETE; /* for winding num rule */ - int ClockWise; /* flag for winding number rule */ } EdgeTableEntry; @@ -3537,8 +3534,7 @@ static QRegionPrivate *PolygonRegion(const QPoint *Pts, int Count, int rule) POINTBLOCK *tmpPtBlock; int numFullPtBlocks = 0; - if (!(region = new QRegionPrivate)) - return 0; + region = new QRegionPrivate; /* special case a rectangle */ if (((Count == 4) || |