summaryrefslogtreecommitdiffstats
path: root/src/gui/painting
Commit message (Collapse)AuthorAgeFilesLines
* Remove all non-const operator==Harald Fernengel2011-08-092-10/+0
| | | | | | | | | | | We had to leave the non-const operator== for binary compatibility. Remove them all, just leave the const version in there. 100% source compatible. Change-Id: Ib7a70fb441fe51d5164d9cbf495cbeda0f48fafe Reviewed-on: http://codereview.qt.nokia.com/2773 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Robert Griebl <robert.griebl@nokia.com>
* Use more numerically robust algorithm to compute QBezier::pointAt().Alan Alpert2011-08-051-18/+18
| | | | | | | | | | | | | | | QBezier::pointAt() could potentially return values outside the bezier's bounds, even when the bezier was a straight horizontal line. For example, with y = 0.5, it would produce y=0.5 or y=0.49999999999999 for different values of t, which when rounded cause jittering in a QML PathView. Task-number: QTBUG-17007 Task-number: QTBUG-18133 Cherry-pick-of: 8b66982ec7b4b5d2071931c288973dce73dc9875 Change-Id: I4ecac7b9085aaaaaaaaaaaaaaaaaaaaaa7d7b0bc Reviewed-on: http://codereview.qt.nokia.com/2467 Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* Making cached glyphs drawing check clearerJiang Jiang2011-07-253-5/+13
| | | | | | | | | | | | Putting the logic inside supportsTransformation() is a bit confusing and that name is misleading. Also move the same check in GL2 paint engine to the same place. Change-Id: I182500a0ff375122e6be966b7ce2495c84d113d0 Reviewed-on: http://codereview.qt.nokia.com/2096 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* Fixed clipping errors for non-extended paint engines.Samuel Rødal2011-07-211-0/+9
| | | | | | | | | | | | | | Partially revert change a33ef62469fd71bec for the non-extended paint engine path. Task-number: QTBUG-19525 Reviewed-by: Andy Shaw (cherry picked from commit f370dd07560c449ba17d13475721f7d3b46e6b24) Change-Id: I19eaaa265a54b2df65a8ec73e36fbdf58b1a4334 Reviewed-on: http://codereview.qt.nokia.com/1211 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* Get rid of the evilness of Q_GLOBAL_STATIC_WITH_INITIALIZERThiago Macieira2011-07-212-44/+33
| | | | | | | | | | | | | | | | | | | That macro is a nightmare. It leads to writing code that is thread-unsafe or other problems. So rewrite the code that used this macro to use special-purpose classes with constructors. This commit does not introduce new errors. The FIXME in qicon.cpp (qtIconCache()) was a condition already present. It does fix the race conditions that were present in qbrush.cpp nullBrushInstance() and qfontengine.cpp qt_grayPalette(). Specialising QGlobalStatic is also evil. Change-Id: I039311f6a5ac9ea4ad7b310b870a2adf888da7e5 Merge-request: 10 Reviewed-by: Olivier Goffart <olivier.goffart@nokia.com> Reviewed-on: http://codereview.qt.nokia.com/1895 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
* Use truncate only for subpixel boundingBox x positionJiang Jiang2011-07-201-1/+1
| | | | | | | | | | | | | | | | | | Since Lion, Core Text starts to return fractional values for x origin in the glyph bounding box. To get correct alignment we need to make it integer, it seems that round will cut certain pixels (x = 0.6 will be round to 1, then that glyph will be moved too much to the left in image glyph cache). Reverting 4297b85a appears to work fine on previous version of Mac OS X as well. This change will not affect Windows (DirectWrite) and FreeType font engines since they both return integer values for that. Change-Id: I830f5b0bd27cad3a3a84b157da428134fb979703 Reviewed-by: Eskil Reviewed-on: http://codereview.qt.nokia.com/1667 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Jiang Jiang <jiang.jiang@nokia.com>
* Remove more references to demos.Casper van Donderen2011-07-081-1/+1
| | | | | | | Change-Id: I431184cd0534c86047706fdaa1045b2935de5d7a Reviewed-on: http://codereview.qt.nokia.com/1307 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: David Boddie
* Update licenseheader text in source files for qtbase Qt moduleJyri Tahtela2011-07-072-34/+34
| | | | | | | | | Replace old license header with correct one. Change-Id: Ie8bf7d8d07ff01d05654bafe13ebbc1892f59cc4 Reviewed-on: http://codereview.qt.nokia.com/1178 Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com> Reviewed-by: Jyri Tahtela <jyri.tahtela@nokia.com>
* Fix bidi reordering when part of text is rendered by fallback fontEskil Abrahamsen Blomfeldt2011-07-061-1/+13
| | | | | | | | | | | | | | | If the fallback font is used for part of a RTL text, we need to position the different text items accordingly, subtracting the advance instead of adding it. Task-number: QTBUG-17117 Done-with: Lars (cherry picked from commit e5e1ff0d6f4e6a8457da61b5b215730de6f960bd) Change-Id: I73b501d36e5c9e12112cc1997c1d360f3a4a6083 Reviewed-on: http://codereview.qt.nokia.com/1228 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* Update the documentation after moving examples.Casper van Donderen2011-07-052-5/+5
| | | | | | | Change-Id: I7aa52785979df9eddd7b91e62abd0ef10adc74b7 Reviewed-on: http://codereview.qt.nokia.com/1031 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: David Boddie
* Move some other examples around in the docs.Casper van Donderen2011-07-053-16/+16
| | | | | | | Change-Id: Ib50600ff9fd3d807b82a152abd7d587196d5b5e3 Reviewed-on: http://codereview.qt.nokia.com/932 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: David Boddie
* Doc: Fixing typoSergio Ahumada2011-07-051-1/+1
| | | | | | | | | | | | | | | | | | (cherry picked from commit 0a9652c93170ab9520869e9e231eba1834b47abc) Conflicts: tests/auto/mediaobject/tst_mediaobject.cpp tests/auto/q3accel/tst_q3accel.cpp tests/auto/q3checklistitem/tst_q3checklistitem.cpp tests/auto/q3dns/tst_q3dns.cpp tests/auto/q3popupmenu/tst_q3popupmenu.cpp tools/linguist/tests/tst_lupdate.cpp Change-Id: I118829afb27ab082f9656139102f74f9ab5f7ac4 Reviewed-on: http://codereview.qt.nokia.com/1035 Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com> Reviewed-by: David Boddie
* Move the composition example in the docs.Casper van Donderen2011-07-011-2/+2
| | | | | | | Change-Id: I63e906e78de75466b9c9bf99d553691c8335f9b2 Reviewed-on: http://codereview.qt.nokia.com/903 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Kevin Wright <kevin.wright@nokia.com>
* Doc: Fixed qdoc warnings.David Boddie2011-07-011-0/+2
| | | | | | | Change-Id: I7b4e9ef513b82a82d2365c9256d09520a44ad10d Reviewed-on: http://codereview.qt.nokia.com/324 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* Remove QPainter::UniteClipGunnar Sletta2011-06-285-44/+7
| | | | | | | Change-Id: I5413cb5e2cbb53998bb40f27b9bbc16342caafe6 Reviewed-on: http://codereview.qt.nokia.com/837 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Remove code with no consquenceGunnar Sletta2011-06-282-35/+0
| | | | | | | Change-Id: Ic048be26cd4ffe1094e4badd34a0df233aa9b5d5 Reviewed-on: http://codereview.qt.nokia.com/832 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
* Change references to affine example.Casper van Donderen2011-06-283-6/+6
| | | | | | | | | | Because of the merge of demos and examples all references to all demos have to be updated. This is the update for the affine example. Change-Id: I83f24010162a73e11786587365c6f10b51d4bf4b Reviewed-on: http://codereview.qt.nokia.com/774 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: David Boddie
* Fix problem with cosmetic stroking of cubic beziersaavit2011-06-271-2/+2
| | | | | | | | | | The new algorithm would fail if the start and end point were identical. (cherry picked from commit 43ce5bab32e0d28366317be99df5e6df70787826) Change-Id: I44c42b190db95b831fd04492e4afe3555fb3db50 Reviewed-on: http://codereview.qt.nokia.com/610 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Still use midpoint rendering of aliased ellipsesaavit2011-06-272-0/+161
| | | | | | | | | | | | | 37c329a removed this, but it is required to get correct fills, particularly for small radii Reviewed-by: gunnar (cherry picked from commit 9d0104d3da01e262d2178c864b4ba94f620eaa3b) Change-Id: I41a5093f3cf725aee3abffde4d871566f0f8151e Reviewed-on: http://codereview.qt.nokia.com/608 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Fix smaller bugs in the strokerLars Knoll2011-06-271-7/+14
| | | | | | | | | | | | Calculating the continuation point for closed contours was not taking transformations and the half pixel offset into account. (cherry picked from commit 31e9c098f3c9321eebf1ac3e4c44a2d18d3816b8) Change-Id: I735d8e58fc3cf64668f546d5f42892d420d58e84 Reviewed-on: http://codereview.qt.nokia.com/607 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Compilation fix of f8e8583aavit2011-06-271-2/+3
| | | | | | | | | (cherry picked from commit 7cfd06ee22a875d7658ce6668b418e6f8c6f6480) Change-Id: Iaaed01590874fbcc439f06c17a63f0343d49a9bb Reviewed-on: http://codereview.qt.nokia.com/605 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Revert "Fix how subpixel positions are intepreted in an aliased grid."aavit2011-06-274-15/+46
| | | | | | | | | | | | | | | This reverts commit 69fc9e594e6d5da87bff42707973683f84b67c93. Conflicts: src/gui/painting/qpaintengine_raster.cpp src/gui/painting/qrasterizer.cpp (cherry picked from commit f8e85838c5531b56c2175cbdb9c24db426f7fd89) Change-Id: I4f936404000e6fa88887d0fbe3fbde92c8edd259 Reviewed-on: http://codereview.qt.nokia.com/603 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* fix autotest regressions introduced by 37c329a3Lars Knoll2011-06-222-0/+86
| | | | | | | | | | | Add proper license headers and properly clip pixel drawing to the devices bounding rect. (cherry picked from commit 67d275542464c794ec4b650f10cca9a17e10c977) Change-Id: I52a166919e87e07168fa5f597b22398a1abefe14 Reviewed-on: http://codereview.qt.nokia.com/590 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Make QPoint have the same layout on all platformsGunnar Sletta2011-06-202-14/+0
| | | | | | | Change-Id: I8330295761a4440afd81c121039237fb651d9a9c Reviewed-on: http://codereview.qt.nokia.com/487 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Make it possible to set color of QStaticText with pixel size >= 64Eskil Abrahamsen Blomfeldt2011-06-201-1/+1
| | | | | | | | | | | | | | | | | Adding the fallback to QPainterPath for large QStaticTexts created a regression where all text would be painted in black regardless of the color you set on it. The color in QStaticTextItem is sometimes invalid, in which case the current painter color should be used. In either case, the color is already set on the current pen when entering drawStaticTextItem() so we can just use that. Task-number: QTBUG-19950 Reviewed-by: Jiang Jiang (cherry picked from commit ee77ee5c25f58271e6f2863225d08573da86c3ee) Change-Id: I955aa6526e5b14589430f8dccd006a9de9ae08c9 Reviewed-on: http://codereview.qt.nokia.com/491 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* Add function QGlyphRun::setRawData()Eskil Abrahamsen Blomfeldt2011-06-072-7/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | To provide an optimized way of constructing QGlyphRun objects with no copying or allocation, we add function setRawData() (naming inspired by QByteArray::setRawData()). Data retrieved from QRawFont can be passed directly into this. The logic is now that the data pointers in QGlyphRunPrivate should always point to the current valid data and is what will be used in comparisons and drawing calls. The vectors are optimizations to avoid unnecessary copying if the user wants to use the QVector based API (which makes it easier to manage the memory.) This reflected in the functions that return QVectors, which will return the stored vector if and only if it is identical to the current pointer. Otherwise we will have to copy the memory. The internal addition operators in QGlyphRun have been removed since they really provide no real optimization and have an unclear definition if the two glyph runs are based on different fonts. Reviewed-by: Jiang Jiang (cherry picked from commit 86d88c5b719fd3d50336d9d8e7127b8045ee82ae) Change-Id: Id5bb55ee3d93afb32ffca850f53382e856df7b3e Reviewed-on: http://codereview.qt.nokia.com/342 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* Fix Windows buildJiang Jiang2011-06-031-2/+2
| | | | | | | Change-Id: Ieafe2cefe0dcb00a3b22133506fb854428abff5e Reviewed-on: http://codereview.qt.nokia.com/320 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Jiang Jiang <jiang.jiang@nokia.com>
* Refactor glyph pretransform checkJiang Jiang2011-06-036-56/+62
| | | | | | | | | | | | | | | Move paintEngineSupportsTransformations logic from QPainter to paint engine subclasses. Simplify and consolidate checks for cached drawing (pretransformed) and path drawing (untransformed) in raster paint engine. Fix unnecessary transform when paint engines actually take the path drawing track. Fix scaling and rotation transform in raster engine for Mac. Task-number: QTBUG-19086 Change-Id: I1c0c1800a5173d3db765b9fccfd0e7a3628e3815 Reviewed-on: http://codereview.qt.nokia.com/298 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* Update licenseheader text in source files for qtbase Qt moduleJyri Tahtela2011-05-24179-3029/+3029
| | | | | | | Updated version of LGPL and FDL licenseheaders. Apply release phase licenseheaders for all source files. Reviewed-by: Trust Me
* Doc: Fixed qdoc warnings.David Boddie2011-05-232-10/+9
|
* Remove warning from QColor::setNamedColor().Samuel Rødal2011-05-191-2/+1
| | | | | | | | | | | This warning is pointless as the user can anyway check if the color is valid after making the call by calling isValid(). Using isValidColor() could be used but it has a big performance overhead as validation then needs to be done twice. Task-number: QTBUG-19098 Reviewed-by: Erik Verbruggen (cherry picked from commit a423ff5474b89028eeca95b254f5184311c8223b)
* Fixed compile of qdrawhelper_neon.cpp.Samuel Rødal2011-05-191-1/+1
| | | | | | | | We need to use the quad-word intrinsic and reinterpret the cast to a signed int vector. Reviewed-by: Kim Motoyoshi Kalland <kim.kalland@nokia.com> (cherry picked from commit d2d7aef223a3bad368c6b7c7f7f4617f4acf323c)
* Fall back to using paths for large fonts in drawStaticText()Eskil Abrahamsen Blomfeldt2011-05-183-3/+46
| | | | | | | | | | | | | | QStaticText had an implicit risk which meant you had to make sure the text size did not grow unreasonably large. This was intended to avoid hiding the performance impact of using QStaticText for such a purpose, but it's too inconvenient. Thus, the same fall back as in drawTextItem() has been introduced. This will also fix a bug recently introduced when we started using the FT cache to draw static text in the raster engine, since this will fail for large fonts. Task-number: QTBUG-19084, QTBUG-19370 Reviewed-by: Jiang Jiang (cherry picked from commit 0aa9b30432cec3b7f366983f451fc9a7f8f83243)
* fix compilation with namespacesLars Knoll2011-05-121-8/+8
| | | | | Reviewed-by: Bjørn Erik Nilsen (cherry picked from commit 7a1c29f101b95c9cc2cb53f8b80d231b5a994a9a)
* Fix compilation with namespaces enabledLars Knoll2011-05-122-0/+14
| | | | | Reviewed-by: Samuel Rødal (cherry picked from commit bff68fc7094a50af57f7da23ecf9b25cab00f188)
* New algorithm for drawing thin linesLars Knoll2011-05-126-1449/+1137
| | | | | | | | | | | | | | | | | | Added a new QCosmeticStroker class for drawing thin lines. The class can handle both aliased and antialiased lines. The code replaces all the midpoint line drawing algorithms in the raster paintengine and gives correct subpixel positioning for lines. It gives around 30% to 50% speedup against the midpoint algorithm. If we missed that fast path, the speedup is around between a factor of 6 to 8 for lines and aliased paths and 100 and 400 for antialiased paths. Reviewed-by: Kim (cherry picked from commit 37c329a3e35fabc88fbcad824a69f37c671d2132)
* Fixed bug in QPdfEngine::addImage causing mono images to be made 32 bitMatthew Cattell2011-05-101-1/+4
| | | | | | | | Regression from 4.5 causing performance and size degradation. Task-number: QTBUG-18997 Reviewed-by: Samuel (cherry picked from commit 18122b473ecbd85ba953f70743b1756358bf7c0c)
* Fixed off-by-one in radial gradient color table index computation.Samuel Rødal2011-05-101-4/+2
| | | | | | | | Clamp to GRADIENT_COLOR_TABLE-1, not GRADIENT_COLOR_TABLE-2. Fixes visible error in gradients.qps Reviewed-by: Kim Motoyoshi Kalland <kim.kalland@nokia.com> (cherry picked from commit af9d20680c91f587f4791aa68f3a8b03d3a42be0)
* Fixes warnings about unused variablesOlivier Goffart2011-05-105-17/+2
| | | | | Reviewed-by: Samuel (cherry picked from commit ddd253e14318af45e5c56df736028b88257068c4)
* Another attempt at fixing the MSVC2005 build.Samuel Rødal2011-05-101-1/+6
| | | | | | | | Apparently direct casting is illegal there too, even though they don't have the cast operators. Reviewed-by: Kim (cherry picked from commit 45c60ceac3d5a401543d7d56a44d1f9227464431)
* Compile fix in qdrawhelper_sse2.cpp for MSVC 2005.Samuel Rødal2011-05-101-0/+5
| | | | (cherry picked from commit 7f921ea08c296e7451a44a1dae15350ae183ea20)
* Compile fix in qdrawhelper_sse2.cpp.Samuel Rødal2011-05-101-1/+1
| | | | (cherry picked from commit 7cc4ffce36c24596630ca83cd6418869d6383670)
* Added support for six-parameter radial gradients.Samuel Rødal2011-05-1011-73/+343
| | | | | | | | | The extended radial gradients conform to the radial gradient specification in HTML 5 canvas. Task-number: QTBUG-14075 Reviewed-by: Andreas Kling (cherry picked from commit da55c1ea92474e989e5582b02815936bbf584405)
* Improved gradient table generation performance for two-stop gradients.Samuel Rødal2011-05-105-72/+222
| | | | | | | | | Two stops is a fairly common case so we gain quite a bit by special casing it. Improves performance by 10 % in parcycle benchmark, and by 90 % in a synthetic benchmark. Reviewed-by: Andreas Kling (cherry picked from commit 5b74a70ac630073582be56f8a0539624a1080185)
* Optimized radial gradient fetch using SSE 2.Samuel Rødal2011-05-103-0/+98
| | | | | | | | On an i7 this improves performance by 22 % in parcycle, 107 % in default svgviewer example, and 283 % in a synthetic radial gradient benchmark. Reviewed-by: Andreas Kling (cherry picked from commit 26bd3dccdee8c6a8f1cf9d254a2a6be7d403aa8d)
* Improved qt_gradient_clamp for reflect spreads.Samuel Rødal2011-05-101-5/+2
| | | | | | | | Using GRADIENT_STOPTABLE_SIZE * 2 as the modulo gives more correct behaviour, and also improves performance slightly. Reviewed-by: Benjamin Poulain (cherry picked from commit 44dd7ef86a3970694a4f8fd9516575c0533a336e)
* Prepared for SIMD implementation of radial gradients.Samuel Rødal2011-05-102-177/+174
| | | | | | | | Made the radial gradient fetch func into a template to be able to optimize the inner loop using SIMD instructions. Reviewed-by: Benjamin Poulain (cherry picked from commit f16c261348193b4c03f796db4e1e3a5db09267a2)
* Rename QGlyphs -> QGlyphRunEskil Abrahamsen Blomfeldt2011-05-103-14/+14
| | | | | | | | | | | API clean-up for QGlyphRun: 1. QGlyphs -> QGlyphRun 2. QGlyphRun's font()/setFont() -> rawFont()/setRawFont() 3. QPainter::drawGlyphs() -> drawGlyphRun() 4. QTextLayout and QTextFragment's glyphs() -> glyphRuns() Reviewed-by: Jiang Jiang (cherry picked from commit 84ef364302728b68d2d29ea9c4ccbec32c7bb115)
* Add internal documentation for QUnifiedToolbarSurface.Fabien Freling2011-05-101-0/+33
| | | | | | | | | This document is aimed for developers. This is why it is directly written in the header file. This is not part of the public API. Reviewed-by: Richard Moe Gustavsen (cherry picked from commit 891b6ac7236d21b69bdb54b00051422cee004059)
* Set the default graphics system to raster.Fabien Freling2011-05-101-1/+1
| | | | | | | This change is specific to Mac OS X/Cocoa. Reviewed-by: Lars Knoll (cherry picked from commit 2c2026df66f237b7313397dd74f6bc3212b94596)