summaryrefslogtreecommitdiffstats
path: root/src/gui/painting/qregion.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'origin/5.7' into devLiang Qi2016-05-121-1/+9
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: config_help.txt configure src/corelib/io/qprocess_wince.cpp src/plugins/platforms/windows/qwindowstheme.cpp src/plugins/platforms/xcb/qxcbbackingstore.cpp tests/auto/corelib/tools/qtimezone/BLACKLIST tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp Change-Id: I26644d1cb3b78412c8ff285e2a55bea1bd641c01
| * QtGui: mark more types as primitive/movableMarc Mutz2016-04-251-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | These types are held in QVarLengthArrays, so benefit from being trivially relocatable. They are also part of the private API, so there's no BC issues with potential uses of these types in QList, except for QPainter::PixmapFragment, which consequently has been marked as relocatable only. Change-Id: I90fb9a19231c6f5c71c593602fc997ffafe8f047 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* | QRegion: mark boundingRect() and rectCount() nothrowMarc Mutz2016-04-231-2/+2
| | | | | | | | | | | | | | | | | | With this, the operations usually called when inspecting a QRegion are now all nothrow (when using begin()/end() instead of rects()). Change-Id: I7012be2ac2350ab7d14dae58df3b8fe4956233db Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* | QRegion: use new begin()/end() instead of rect()Marc Mutz2016-02-281-14/+9
| | | | | | | | | | | | | | Saves ~100b in text size on optimized GCC 5.3 Linux AMD64 builds. Change-Id: If2bbd2baac6f4ab66ad436028a8013ce0fa97a33 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | QRegion: use new begin()/end() in op<<(QDataStream)Marc Mutz2016-02-281-9/+10
| | | | | | | | | | | | | | Saves 132b in text size on optimized GCC 5.3 Linux AMD64 builds. Change-Id: I435395c60802f446302ca6b2529d87c4cacb6304 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | QRegion: make iterableMarc Mutz2016-02-281-2/+112
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Virtually all code in Qt that inspects a QRegion does so by calling rects(), which returns a QVector<QRect>. But rects() has a problem: A QRegion that contains just one rectangle internally is not represented by a QVector, and the mere act of calling rects() makes QRegion create one. So, expose the fact that QRegion is a container of QRects to users by providing iterators and begin()/end(), which can be nothrow, since for the one-rectangle case, instead of vectorize()ing the region, we just return pointers to (and one past) the 'extent' rectangle. As a consequence, the iterator type is just const QRect*, but I think that whatever containers QRegion may use under the hood in the future, it will be certainly one that is layout-compatible with a C array. No mutable iterators are provided, since QRegion maintains a running bounding-rect, so a mutable iterator would have to call into QRegion for every change, which doesn't make sense. [ChangeLog][QtGui][QRegion] Is now iterable as a container of QRects: added {c,}{r,}{begin,end}(). Change-Id: I2fa565fac0c1d26e2c0937604b23763cd4e23604 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-02-181-2/+2
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | This also reverts commit 018e670a26ff5a61b949100ae080f5e654e7bee8. The change was introduced in 5.6. After the refactoring, 14960f52, in 5.7 branch and a merge, it is not needed any more. Conflicts: .qmake.conf src/corelib/io/qstandardpaths_mac.mm src/corelib/tools/qsharedpointer_impl.h tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp Change-Id: If4fdff0ebf2b9b5df9f9db93ea0022d5ee3da2a4
| * QtGui: Use QImage::constBits()/constScanLine() in non-const contexts.Friedemann Kleint2016-02-131-2/+2
| | | | | | | | | | | | | | | | | | Prevent potential detaching by using constBits()/constScanLine() instead of bits()/scanLine(). Change-Id: If03f8d4d3b8ed4c07aed5eff7f580e57ca771919 Reviewed-by: Gunnar Sletta <gunnar@sletta.org> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | QRegion: add move ctorMarc Mutz2016-02-131-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | After this change, this was the distribution of calls in QtGui and QtWidgets when the patch was developed for 5.4: QtGui QtWidgets move 23 63 copy 23 36 Change-Id: If3f536e52fc242c585e7fa0662049c0657efcc9c Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* | Updated license headersJani Heikkinen2016-01-151-14/+20
|/ | | | | | | | | | | From Qt 5.7 -> LGPL v2.1 isn't an option anymore, see http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/ Updated license headers to use new LGPL header instead of LGPL21 one (in those files which will be under LGPL v3) Change-Id: I046ec3e47b1876cd7b4b0353a576b352e3a946d9 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* Fix debug operator for QRegion.Friedemann Kleint2015-12-091-6/+27
| | | | | | | | | | | | | | | Use QDebugStateSaver, drop the multiline format, check for null, empty and output rectangular regions as: QRegion(0,0 252x188) and complicated regions as: QRegion(size=4, bounds=(0,0 278x262) - [(0,0 278x13), (0,13 13x188), (265,13 13x188), (0,201 278x61)]) Change-Id: I82b8f58af08f7128e6cf2c2c8b06c4684fc6a9c8 Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com> Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* Replace MAC OS X with OS XNico Vertriest2015-06-301-1/+1
| | | | | | Task-number: QTBUG-46374 Change-Id: I7bc633ab551740bd328a24b0ccae1d534af47138 Reviewed-by: Martin Smith <martin.smith@digia.com>
* Update copyright headersJani Heikkinen2015-02-111-7/+7
| | | | | | | | | | | | | | | | | | Qt copyrights are now in The Qt Company, so we could update the source code headers accordingly. In the same go we should also fix the links to point to qt.io. Outdated header.LGPL removed (use header.LGPL21 instead) Old header.LGPL3 renamed to header.LGPL3-COMM to match actual licensing combination. New header.LGPL-COMM taken in the use file which were using old header.LGPL3 (src/plugins/platforms/android/extract.cpp) Added new header.LGPL3 containing Commercial + LGPLv3 + GPLv2 license combination Change-Id: I6f49b819a8a20cc4f88b794a8f6726d975e8ffbe Reviewed-by: Matti Paaso <matti.paaso@theqtcompany.com>
* QRegion: fix a valgrind warningMarc Mutz2014-10-021-1/+1
| | | | | | | | | | | | | | | | When: - i == 0 (at end of current POINTBLOCK), - numFullPtBlocks == 1 (only one more POINTBLOCK left) and - iCurPtBlock == 0 (last block contains no points), Valgrind rightfully complained about an invalid read: Conditional jump or move depends on uninitialised value(s) at 0x517B08B: PolygonRegion(QPoint const*, int, int) (qregion.cpp:3480) Fixed by setting 'next' to nullptr when !numFullPtBlocks OR !iCurPtBlock. Change-Id: If5225fdfa66f2910a8aafb675cd02b40c0a81ad9 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Merge "Merge remote-tracking branch 'origin/5.3' into 5.4" into refs/staging/5.4Gabriel de Dietrich2014-10-011-1/+3
|\
| * Merge remote-tracking branch 'origin/5.3' into 5.4Gabriel de Dietrich2014-09-291-1/+3
| |\ | | | | | | | | | | | | | | | | | | | | | Conflicts: src/network/socket/qnativesocketengine_unix.cpp src/widgets/kernel/qwidget_qpa.cpp Change-Id: I6f1aa320d5ca66cd92d601a95885aeaab0abb191
| | * QRegion: fix a memory leakGiuseppe D'Angelo2014-09-221-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | An early return in case of errors leaked memory tracked in a variable in scope. Change-Id: I68cd77890608caff54df7476d38850e5541ce76e Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com> Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* | | Make QRegion::shared_empty constMarc Mutz2014-09-291-16/+11
|/ / | | | | | | | | | | | | | | | | Continuing the trend of QString, QVector, etc. Change-Id: I8f53d4abfa0dd941bfdfd3c1a9049a42dbf92691 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Update license headers and add new license filesMatti Paaso2014-09-241-19/+11
| | | | | | | | | | | | | | | | | | - Renamed LICENSE.LGPL to LICENSE.LGPLv21 - Added LICENSE.LGPLv3 - Removed LICENSE.GPL Change-Id: Iec3406e3eb3f133be549092015cefe33d259a3f2 Reviewed-by: Iikka Eklund <iikka.eklund@digia.com>
* | QRegion: Reorganise members to reduce padding in EdgeTableEntryMaks Naumov2014-09-231-1/+1
| | | | | | | | | | | | | | | | On 64-bit platforms: 64 -> 56 bytes. On 32-bit platforms it's still the same size (44 bytes). Change-Id: I681b9385ee3bc7601c1e8036efd6544471d1e058 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QRegion: Reorganise members to reduce padding in QRegionPrivateMaks Naumov2014-09-161-3/+3
| | | | | | | | | | | | | | | | On 64-bit platforms: 56 -> 48 bytes. On 32-bit platforms it's still the same size (44 bytes). Change-Id: Ia4831753258ef12aa983757523bb76979e6fc4b0 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | QRegion: remove some toplevel const from return typesMarc Mutz2014-09-101-7/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | It has no effect and inhibits move semantics. After this change, two and five more copies are moves in QtGui and QtWidgets, resp. Keep the old form for compilers that mangle the return type. Change-Id: I6257683144110230079fe9095303907ecc858c94 Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QRegion: remove check for null ptr after "new" operatorMaks Naumov2014-09-091-2/+1
| | | | | | | | | | | | | | Change-Id: Iebba0b1f024e22cd36a04c53377b3958638b389e Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | Use ctor-init-list in QRegionPrivate(QRect) ctorMarc Mutz2014-08-261-5/+6
| | | | | | | | | | | | Change-Id: I531b862db7bdec0a504c6022c1a15635aaf3fc8d Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | QRegionPrivate: remove copy ctor and assignment operatorMarc Mutz2014-08-261-17/+0
|/ | | | | | | | They're identical to the compiler-generated ones, and probably inhibit move operators here and there. Change-Id: I918f2946f6b6aa49aa883420dc87df44013938a5 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Fix casting and overallocation in qregion.cppAllan Sandfeld Jensen2014-03-151-1/+1
| | | | | | | | | | | | The POINTBLOCK struct in qregion.cpp is badly defined. By using ints as the base storage of the internal array it forces not only bad casting from int to QPoint, but also allocates an array four times too big. This patch changes to char, since a char pointer may alias anything and this gives the right size of the array. Change-Id: I608eaf39ac7306c71314a139bed6e2352249c0ab Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* Add optimize_full qmake config optionAllan Sandfeld Jensen2014-03-061-12/+15
| | | | | | | | | | | | | | | | | | | This patch adds a new config option to qmake to enable full optimization where it makes sense. This currently is supported on all gcc like compilers by exchanging -O2 for -O3. In qtbase it is used to enable full optimizations on qtcore and qtgui and in a later patch can be used to replace similar existing logic in QtWebKit's WTF and JavaScriptCore modules. This fixes a performance regression from gcc 4.7 to 4.8 in the software renderer. An aliasing error in qregion.cpp which was exposed by more aggresive optimization has been solved as well. Change-Id: Ic2c6c41b79cb3846212b40e7bcc11ff492beb27f Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Doc: Adding mark-up to boolean default values.Jerome Pasion2013-10-081-16/+16
| | | | | | | | | | | | | | | | | Default values should have mark-up to denote that they are code. This commit changes: -"property is true" to "property is \c true". -"Returns true" to "Returns \c true". -"property is false" to "property is \c false". -"returns true" to "returns \c true". -"returns false" to "returns \c false". src/3rdparty and non-documentation instances were ignored. Task-number: QTBUG-33360 Change-Id: Ie87eaa57af947caa1230602b61c5c46292a4cf4e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* Doc: Add docs for rvalue references and move constructorsGeir Vattekar2013-09-271-0/+8
| | | | | | | | | These members were introduced in 4.8, but left undocumented. Because we consider undocumented API to be internal, the members are \since 5.2. Change-Id: I52e2840a8cfaa7f59f410b3e2a06c0942ea06539 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com> Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* Remove use of 'register' from Qt.Stephen Kelly2013-06-171-71/+71
| | | | | | | | | | It is deprecated and clang is starting to warn about it. Patch mostly generated by clang itself, with some careful grep and sed for the platform-specific parts. Change-Id: I8058e6db0f1b41b33a9e8f17a712739159982450 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Update copyright year in Digia's license headersSergio Ahumada2013-01-181-1/+1
| | | | | Change-Id: Ic804938fc352291d011800d21e549c10acac66fb Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Change copyrights from Nokia to DigiaIikka Eklund2012-09-221-24/+24
| | | | | | | | Change copyrights and license headers from Nokia to Digia Change-Id: If1cc974286d29fd01ec6c19dd4719a67f4c3f00e Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
* Doc: Remove documentation for removed function.Kim Motoyoshi Kalland2012-08-311-8/+0
| | | | | Change-Id: I3d2b4078f7c442b636e4848048c41f9f8223c98b Reviewed-by: aavit <qt_aavit@ovi.com>
* change \img to \image in docsJeremy Katz2012-08-011-4/+4
| | | | | | | | \img was a macro defined in macros.qdocconf. This collection of macros is being phased out. Use the full command instead. Change-Id: Ia55212f87bb46349d61359d40568e0aa33882596 Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
* Get started with patching up the Qt GUI docsGunnar Sletta2012-06-281-0/+1
| | | | | | | | Primary goal, make the front page of the Qt GUI module a bit more clarifying and avoid downstream references inside the Qt GUI docs. Change-Id: Icbcfbb64b93963add889bf83711daa9575885c02 Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* Make QRegion not need to be friends with QVectorThiago Macieira2012-06-261-3/+2
| | | | | | | | | | This hack was introduced in Qt 4.5 and the intention was to resize (hopefully, shrink) the QVector without causing it to reallocate memory. We can accomplish the same by reserving the size: until we clear() or squeeze(), the container will not free memory. Change-Id: I03a09537a617be0ce865eefa043005e4051e8706 Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Remove QRegion::handleGirish Ramakrishnan2012-05-311-10/+0
| | | | | | | | This function is unavailable in QPA land (it currently returns the QRegionPrivate as the handle()). Change-Id: I4e81e29d4546a4737c1aaab4ee1fb97e28a473f5 Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
* Implement QVector with QArrayData interface.Jędrzej Nowacki2012-05-301-1/+1
| | | | | Change-Id: I109f46892aed2f6024459812d24922b12358814d Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QtGui: remove \link usagesGiuseppe D'Angelo2012-05-291-2/+2
| | | | | Change-Id: Ib8cca14a8fa35fbc631bfea9b4873225eac3677f Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
* Doc: Modularize QtGui documentation.Casper van Donderen2012-05-091-2/+2
| | | | | | | | This change moves the snippets and images to the modularized directories. Change-Id: I5f86f598fbe7c47d632c613b85d94ced89ba2c29 Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
* Remove the usage of deprecated qdoc macros.Casper van Donderen2012-03-021-4/+4
| | | | | | | | | | | QDoc now has support for Doxygen style commands for italics, bold and list items. This change applies that change in QDoc to the actual documentation. Task-number: QTBUG-24578 Change-Id: I519bf9c29b14092e3ab6067612f42bf749eeedf5 Reviewed-by: Shane Kearns <shane.kearns@accenture.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Remove many deprecated methodsLars Knoll2012-01-311-5/+0
| | | | | | | | | | Remove methods that have been marked as deprecated before Qt 4.6. Keep others, but inline them where possible and mark them as QT_DEPRECATED_SINCE(5, 0). Change-Id: If881821ae095f054b31cc13464f19e2007c20ed7 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: João Abecasis <joao.abecasis@nokia.com>
* Remove "All rights reserved" line from license headers.Jason McDonald2012-01-301-1/+1
| | | | | | | | | | As in the past, to avoid rewriting various autotests that contain line-number information, an extra blank line has been inserted at the end of the license text to ensure that this commit does not change the total number of lines in the license header. Change-Id: I311e001373776812699d6efc045b5f742890c689 Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Update contact information in license headers.Jason McDonald2012-01-231-1/+1
| | | | | | | Replace Nokia contact email address with Qt Project website. Change-Id: I431bbbf76d7c27d8b502f87947675c116994c415 Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Mark obsolete methods in qregion as deprecatedLars Knoll2012-01-171-6/+6
| | | | | | | | | Make them inline as well, so they don't create symbols. Change-Id: I779103d6752e75809d16632c8c0eb374cdbd9705 Reviewed-by: Robin Burchell <robin+qt@viroteck.net> Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
* Update copyright year in license headers.Jason McDonald2012-01-051-1/+1
| | | | | Change-Id: I02f2c620296fcd91d4967d58767ea33fc4e1e7dc Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Implement QRegion::isNullJędrzej Nowacki2011-11-081-0/+15
| | | | | | | | The method was missing from QVariant perspective (QVariant::isNull supposed to call isNull not isEmpty). Change-Id: Ic1ac9f662e275ac73908809f2c4ac59679b40b00 Reviewed-by: Olivier Goffart <ogoffart@kde.org>
* Remove Q_WS_ and Q_OS_SYMBIAN from QtGui.Friedemann Kleint2011-10-131-61/+2
| | | | | | Change-Id: I2ac3376513c3fbfc81a2e695a73a0d948d2696bc Reviewed-on: http://codereview.qt-project.org/6607 Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* Remove stale documentation and fix qdoc errors.Casper van Donderen2011-10-111-7/+0
| | | | | | | Change-Id: I51bb0c52eb32d9d672d115f31b16d414f81708e2 Reviewed-on: http://codereview.qt-project.org/6433 Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
* Make all uses of QBasicAtomicInt and Pointer use load() and store()Thiago Macieira2011-10-031-5/+5
| | | | | | | | | | | | | | Most of these changes are search-and-replace of d->ref ==, d->ref != and d->ref =. The QBasicAtomicPointer in QObjectPrivate::Connection didn't need to be basic, so I made it QAtomicPointer. Change-Id: Ie3271abd1728af599f9ab17c6f4868e475f17bb6 Reviewed-on: http://codereview.qt-project.org/5030 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>