summaryrefslogtreecommitdiffstats
path: root/src/gui/painting
Commit message (Collapse)AuthorAgeFilesLines
* QPageLayout: use existing qBound()Marc Mutz2014-04-071-9/+4
| | | | | | | instead of rolling our own qt_clamp(). Change-Id: I2729ae3ff98e8c29c66f0f5c792b1bc7bf586f06 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* QPagedPaintDevice - Move QPageLayout methodsJohn Layt2014-04-055-61/+273
| | | | | | | | | | | | | | | | The new QPageLayout methods weren't originally added to QPagePaintDevice as no new virtuals can be added, instead static polymorphism was used to add the methods directly in the derived classes QPdfWriter and QPrinter. This however means that classes like QTextDocument with print() methods that take a QPagedPaintDevice are unable to access the QPageLayout methods. To fix this, instead make the QPagedPaintDevicePrivate a virtual class and have QPdfWriter and QPrinter implement derived private classes that are called by the non-virtual QPagedPaintDevice base methods. Change-Id: Ieb6e513b1fa05f5ae76ea1f9156b0b1a053089eb Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Use Q_STATIC_ASSERT to check that the array has the right sizeThiago Macieira2014-04-051-12/+1
| | | | | | | | | | | | No need to sprinkle the code with Q_ASSERT. We don't want this to fail to the user anyway. By using a Q_STATIC_ASSERT, a failure will be immediately reported to the developer. This also solves a warning found by Clang 3.4: error: unused variable 'pageSizesCount' [-Werror,-Wunused-const-variable] Change-Id: I79cf72c64242ad395276ce4360c59ad81112d9eb Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Fix neon image scaling function declarationsSamuli Piippo2014-04-041-2/+2
| | | | | | | | | | Change on the image scaling functions did not update the neon function declarations. Task-number: QTBUG-35927 Change-Id: Ia1e7428953aa140cad36e1cf26a18bfefc2267e7 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Fix UI squishing when using QWidget::setRenderToTextureJocelyn Turcotte2014-04-032-5/+7
| | | | | | | | | | When resizing a window, a window might not be resized synchronously with its backing store. We need to use the actual texture size as the transform to avoid stretching the rendered texture. Change-Id: I945f6d190577ccdcb54483a267a1e42df1ca3156 Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Fix drawing paths with constant opacity onto PDFAllan Sandfeld Jensen2014-03-291-1/+1
| | | | | | | | | | | | | The native PDF strokes can not be used with constant opacity as any overlapping parts of the path will end up being drawn multiple times getting the wrong final opacity. A constant opacity should therefore be treated the same as opacity on the pen color, and trigger the fallback drawing. Task-number: QTBUG-37101 Change-Id: I44f70a8b494567ee89804a5fa6333304a5abe91e Reviewed-by: Michael Bruning <michael.bruning@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* Avoid out of bounds memory reads when scaling imagesLars Knoll2014-03-287-26/+54
| | | | | | | | | | | | | | | | The calculation of the width/height required for the scaling algorithm was prone to floating point rounding issues, where the lower value got rounded down, the higher one rounded up. This could lead to a situation where we iterated over one more line/pixel in the line than we have in the source image. Correct this by passing the dimension of the source image into the function and bounds checking the values before iterating. Task-number: QTBUG-35927 Change-Id: If44b2235a479224660d508a0504fec40d724763a Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Avoid QImage copy in toTexture()Morten Johan Sørvig2014-03-201-0/+8
| | | | | | | | | | | | | | Desktop OpenGL has GL_UNPACK_ROW_LENGTH which we can use use to specify the image row stride. This removes the need to call QImage::copy(). On a retina MacbBok pro this reduces toTexture's share of the total run time by 1-4%. (on tests/manual/ qopenglwidget/openglwidget) Change-Id: Ia7f49d5c4ffcc347a495701bbaca6aecc2dc3433 Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Correct QPainter::setPen() documentation.Mitch Curtis2014-03-201-1/+1
| | | | | | | | | The default pen width is 1 as of Qt 5. Task-number: QTBUG-37277 Change-Id: I5b7b9c2019bd0e812384e67812b7bcfde37d0b53 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* QOpenGLWidget retina support.Morten Johan Sørvig2014-03-201-4/+28
| | | | | | | Use device pixels where appropriate. Change-Id: Ia953e6da4034eecbfccf798701ec1b850eea9d5b Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* Fix translation of QtPrintSupport and QPageSize.Friedemann Kleint2014-03-171-10/+16
| | | | | | | | | | Add translator comments, fix spelling, reduce repetitive messages. Change-Id: Id4cbbc3de8fa261cf8f125c5faf735dc608e2b15 Reviewed-by: Robert Loehning <robert.loehning@digia.com> Reviewed-by: Andy Shaw <andy.shaw@digia.com> Reviewed-by: John Layt <jlayt@kde.org>
* Merge "Merge remote-tracking branch 'origin/release' into stable" into ↵Jani Heikkinen2014-03-173-34/+59
|\ | | | | | | refs/staging/stable
| * Merge remote-tracking branch 'origin/release' into stableFrederik Gladhorn2014-03-173-34/+59
| |\ | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/gui/painting/qdrawhelper.cpp src/gui/painting/qdrawhelper_avx.cpp src/gui/painting/qdrawhelper_x86_p.h Change-Id: I09352d05119f6fd000319074a2705b38361b2c90
| | * Fix drawCachedGlyphs on RGBA8888Allan Sandfeld Jensen2014-02-264-37/+66
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | drawCachedGlyphs draws with the wrong color on RGBA8888. The issue is that the draw routines bitmapblit_quint32 and alphamapblit_quint32 while safe to use on rgba formats, needs to have the input color converted. This patch adds small wrapper functions for bitmapblit and alphamapblit that converts the formats. Two tests are extended to ensure we have test coverage. Change-Id: I5f99f3795eba46a69d4df5b167e6099024e9a060 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | | QPrintEngine - Switch Cups to QPlaformPrintDeviceJohn Layt2014-03-171-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | Use QPlatformPrintDevice in the Cups print engine for all device specific code. Change-Id: Ic1f5f8b4010a9958c320f3c0c727cf1bd1a70c65 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | | QPdfWriter - Use QPageSize and QPageLayoutJohn Layt2014-03-172-19/+222
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add support to QPdfWriter for QPageSize, QPageLayout, and resolution. [ChangeLog][QtGui][QPdfWriter] The QPdfWriter now supports setting the PDF orientation, layout and resolution by using QPageSize and QPageLayout. Change-Id: I9c269f997ec540dac1989f355c6a2e7488947966 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | | QPdfPaintEngine - Use QPageLayout and QPageSizeJohn Layt2014-03-174-82/+72
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Switch internals of QPdfPageEngine and derived classes to use QPageLayout and QPageSize to make handling of page layout and size more consistent by removing multiple implementations. In particular remove all use of the QPdf namespace version of page size. Change-Id: Ie820340015e8812c8162bd1a257dd0f51f4f0b85 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | | QPagedPaintDevice - Use QPageSize and QPageLayoutJohn Layt2014-03-173-99/+343
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use new QPageLayout and QPageSize class to store and convert page sizes and layouts consistently. Extend the PageSize enum to match QPage::PageSize. Note that public setters/getters cannot be added as virtuals would break BIC, but without virtuals the derived classes would break. Instead an internal api is provided and the derived classes will need to implement identical api to manipulate it. [ChangeLog][QtGui][QPagedPaintDevice] Paged paint devices such as QPrinter and QPdfWriter now support all Postscript standard page sizes. Task-number: QTBUG-27685 Task-number: QTBUG-25744 Change-Id: I62e96ab94194ab4ac8bed8fa804e0ce1c3233313 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | | QPlatformPrintDevice - New QPA base classJohn Layt2014-03-171-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a new QPA class to abstract Print Devices. Each platform instance will encapsulate all required details about a print device instead of the code being distributed throughout the print engine and print plugin. Change-Id: I7f6a537ad55a6e7f599d83f461b1e2ee62b15094 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | | QPageLayout - Add new QPageLayout classJohn Layt2014-03-173-0/+1128
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | New QPageLayout to encapsulate page layout details including page size, orientation and margins. Scale may be added later. Subsequent changes will use this class in the paged paint devices, paint engines, print engines, and print plugins to replace multiple inconsistent local implementations. [ChangeLog][QtGui] Added class QPageLayout to support handling page layouts including the page size, orientation and margins. Change-Id: Ife1ddd6c2a8d1516542be2eb37425111f41cd5c7 Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Andy Shaw <andy.shaw@digia.com>
* | | QPageSize - Add new QPageSize classJohn Layt2014-03-174-0/+2189
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | New QPageSize class to encapsulate paper sizes and names to ensure all sizes and conversions are consistent and match the Postscript standard sizes. Subsequent changes will use this class in the paged paint devices, paint engines, print engines, and print plugins to replace multiple inconsistent local implementations. [ChangeLog][QtGui][QPageSize] Added new QPageSize class to implement Adobe Postscript PPD standard page sizes. This class supports the standard page sizes, names and keys from the PPD standard, and provides convenient size and rect conversion methods. Change-Id: Ie2c8be0c3df0d29ac5da4cd9877ad41d0982633c Reviewed-by: Lars Knoll <lars.knoll@digia.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>
* | Fix a crash of accessing deleted paintengineMichal Klocek2014-03-141-1/+2
| | | | | | | | | | | | | | | | | | | | | | When painting to QPixmap with QBlitterPaintEngine and dfb PaintEngine have PaintDevice (pdev) as QImage. Painter code uses PaintDevice::paintEngine() to refer to paintEngine. This will became dangling pointer since QDirectFbBlitter::doLock() will delete QImage. Instead return QPixmap as PaintDevice. Change-Id: Idfac919b6438a82b412020e441e0a102e4a2a052 Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* | Avoid using direct OpenGL calls in gui and widgetsLaszlo Agocs2014-03-101-21/+24
| | | | | | | | | | Change-Id: I5d88a2e204ca23e178a4e3044b9cb13392c3e763 Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* | Add optimize_full qmake config optionAllan Sandfeld Jensen2014-03-062-26/+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>
* | Dynamic GL: remove exporting symbolsLaszlo Agocs2014-03-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove the opengl proxy for now. Later it will either be moved into a separate library or replaced by a QOpenGLFunctions-based approach. This means that the -opengl dynamic configuration is not usable for the time being. The rest of the enablers remain in place. The convenience function QOpenGLFunctions::isES() is now moved to QOpenGLContext and is changed to check the renderable type. This is extremely useful since besides supporting dynamic GL it solves also the problem of GL_ARB_ES2_compatibility (i.e. it triggers the real ES path when creating an ES-compatible context with a desktop OpenGL implementation). Task-number: QTBUG-36483 Task-number: QTBUG-37172 Change-Id: I045be3fc16e9043e1528cf48e6bf0903da4fa7ca Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* | Fix some typosSergio Ahumada2014-03-031-1/+1
| | | | | | | | | | | | Change-Id: I7dbe938bff5ac3ab50a0197f94bdb2f6c22fbd16 Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
* | QPainterPathStroker: make QPen constructor explicitMarc Mutz2014-02-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | A QPainterPathStroker is not an equivalent representation of a QPen, so the constructor that takes a QPen should be explicit. Arguably, the named constructor idiom would be even better here: static QPainterPathStroker QPainterPathStroker::fromPen(const QPen &pen); But QPainterPathStroker is non-copyable. Change-Id: I3148dc0ee336026781d8bc1baf21c113c7b41ce8 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | Fix rounding error when creating QT_FT_VectorJorgen Lind2014-02-211-1/+1
| | | | | | | | | | | | | | | | | | This fixes a problem that QScanConverter::mergeLine didn't recognize lins as being the same (when they where), causing aliasing effects Task-number: QTBUG-36354 Change-Id: I29d92ddb4e867025541bdc6b294cfaca55c0d3e1 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | Ensure we switch back to the real paint engine when not emulatingAndy Shaw2014-02-201-3/+3
| | | | | | | | | | | | | | | | | | | | When the emulation paint engine was no longer needed then it would still end up using it because the flags would prevent it from being switched back. This ensures that it has the right engine when something triggers it to be switched. Change-Id: I7571923d16cbebd9fdd34560631b561c07a724f7 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | Unify glyph format between QFontEngine and QFontEngineGlyphCacheTor Arne Vestbø2014-02-195-39/+36
| | | | | | | | | | | | | | | | | | | | | | | | Instead of the glyph cache having its own cache type that always mapped one to one to a font engine glyph format, causing confusion and needless conversions, the glyph caches now use QFontEngine's glyph format enum. This also removes the iffy use of an int for the glyphFormat in the font engines. Change-Id: I529bad5c179e004f63e152f7dcc311d298c3db98 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | Optimize generic bilinear interpolation using SSE2Allan Sandfeld Jensen2014-02-171-33/+45
| | | | | | | | | | | | | | | | | | | | | | The drawing code currently only optimizes the bilinear interpolation under specific conditions that allows the optimizations used there. The patch adds a SSE2 version of the fallback 4 pixel interpolation. Change-Id: I4e8a2ba6cb44647105a9b24e38b3ab755a435050 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | QOpenGLTextureBlitter: Remove Origin location for the Target rectJørgen Lind2014-02-161-4/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Origin for Target rect was deemed a confusing concept. The current implementation would translate the target rect to the coordinate system specified. However, the order and "direction" of the vertices would always be the same. So drawing a texture in for one target rect defined in one coordinate system would paint the texture the same way as it would when a texture was drawn for a target rect drawn in the "opposite" coordinate system. The point with this was that if you wanted to "flip" the texture you would specify that with the source coordinate system. However, this approach breaks on different levels, such as QRect has functions which expects a top left coordinate system (ie. top() and bottom()). In the end Qt uses a top left coordinate system, hence QWindow specifies a top left coordinate system, and hence the api becomes easier if it is not possible to define the coordinate system of the target viewport. Change-Id: I7dd59b3718380876e87a4bff88381d7a1c7d58c1 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | Migrate a recent QT_OPENGL_ES ifdef to dynamic GLLaszlo Agocs2014-02-141-2/+4
| | | | | | | | | | Change-Id: I51581cf174d11db86030da8fe288d640ef81cb58 Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* | QOpenGLWidget and new-style compositing on eglfsLaszlo Agocs2014-02-132-0/+8
| | | | | | | | | | | | | | | | | | Integrate with QOpenGLTextureBlitter, QOpenGLWidget and friends. Change-Id: Ic2867b713a21a3d2820d546174fc9164b3dd220c Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com> Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* | Merge "Merge remote-tracking branch 'origin/stable' into dev" into ↵Konstantin Ritt2014-02-131-7/+7
|\ \ | | | | | | | | | refs/staging/dev
| * | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2014-02-121-7/+7
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/gui/image/qimage.cpp src/gui/text/qtextengine.cpp src/plugins/platforms/linuxfb/qlinuxfbscreen.cpp src/printsupport/kernel/qprintengine_win.cpp Change-Id: I09ce991a57f39bc7b1ad6978d0e0d858df0cd444
| | * Fix drawing vertical gradients in RGBA8888 formatsAllan Sandfeld Jensen2014-02-101-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The RGBA8888 formats was incorrectly using the qt_gradient_quint32 which is argb specific. This caused vertical gradients but only vertical gradients to be drawn incorrectly. This changes the RGBA8888 formats formats to use the generic gradient method and renames qt_gradient_quint32 to qt_gradient_argb32 to indicate its limitation. Change-Id: Ia1cd48ca7f4f78b64f31d6263e81cd8ac3b0954e Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | | Optimize qt_memfill32 a littleThiago Macieira2014-02-121-12/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Benchmarking shows it took up to 3.5% of Qt Creator's initialization cost. Optimize by modifying only one variable per loop: instead of updating n and dst128, we only update one variable at a time. Removing the Duff's Device also improves the code, since the compiler won't try to update dst128 four times per loop, only once. The moving of the epilogue close to the prologue was just to make the code a little cleaner. Change-Id: I5b74e27d520ca821f380aef0533c244805f003b7 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | | Enabling QQuickWidget and QOpenGLWidgetPaul Olav Tvete2014-02-122-0/+273
|/ / | | | | | | | | | | | | | | | | Enable child widgets (without a native window) that render to an FBO and are composed with the raster backingstore by the platform plugin. A preliminary version of QOpenGLWidget is included as private API. Change-Id: I8f984a4d7db285069ce3d6564707942c823d890d Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* | Export optimized premultiply and unpremultiply methodsAllan Sandfeld Jensen2014-02-105-65/+136
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch optimizes the unpremultiply method further by using a lookup table to avoid any divisions at all. The opportunity is taken to export both premultiply and unpremultiply since they are commonly used methods relevant to the exported QRgb type that can be both premultiplied and unpremultipled ARGB. [ChangeLog][QtGui][QColor] Exported highly optimized methods for premultiply and unpremultiply of QRgb values. Change-Id: I658bcf57b0bc73c34c1765b64617d43b63ae820b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | Optimize stringToCMap() usageKonstantin Ritt2014-02-071-5/+2
| | | | | | | | | | | | | | | | | | | | | | | | CMAP guarantees there is 1:1 mapping between the Unicode code points array and the glyph indexes array, which means the QString length always greater than or equal to a sufficient glyph indexes array length. Simply add some asserts and improve the memory consumption and the performance where possible. Change-Id: I0bc8cdba5f86c1c0ba9e79c8d5f96cbe56ec463e Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | Remove some left-over +1 in font height calculationEskil Abrahamsen Blomfeldt2014-02-052-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | In change cb8445f0323b0eefbb04f1d8adad81a00b53abd8, I tried to remove all the historical +1s when calculating the font height from the ascent and descent, but I missed a couple. These are used when drawing the background for the text, the height of which would no longer match the height returned from QFontMetrics. [ChangeLog][Text] Fixed off-by-one in the height of text background. Task-number: QTBUG-36444 Change-Id: If6d87f903e246f9faed2298bb1693b2556906eed Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | Optimize drawing to and from generic formatsAllan Sandfeld Jensen2014-01-311-102/+359
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When drawing to and from the less common formats most of the cpu time is spend in conversion. The conversion method is rather slow due to using variable shifts and masks that the compiler does not have a chance to optimize. This patch changes the conversion methods to being templates fed by constexpr methods. This allows the compiler to fully optimize the methods yielding 2x->5x speedups. The reliance on constexpr however means the optimized methods are only used under C++11. Change-Id: I2ec77c4c1c03f12ee463a694a2b59db0f0b52db1 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | Fixed assert in blend_transformed_tiled_argbOliver Wolff2014-01-301-2/+2
| | | | | | | | | | | | | | | | | | | | px16 and py16 might be <0 in the first iteration of the loop. In order to avoid accessing an invalid index the values have to be corrected before px and py are accessed. Change-Id: I790faeacc2b77ae8af52bf5e69a2d801c9fe973d Reviewed-by: Andrew Knight <andrew.knight@digia.com> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
* | Get rid of QGlyphLayout::advances_yKonstantin Ritt2014-01-302-6/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ...and thus consume 4 bytes less per glyph and increase the performance a bit. It seems, the only CTFontGetAdvancesForGlyphs() returns both x and y advances, though y advances are always equal to 0 for horizontal orientation and x advances are always equal to 0 for vertical orientation. Also, rename `advances_x` to `advances` for consistency and declare QGlyphLayout's data size in a single place. Change-Id: I56b20f893f8a6feb7aa870e3edbca99dd93ba2e2 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | Round evenly in INV_PREMULAllan Sandfeld Jensen2014-01-291-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently INV_PREMUL rounds strictly down. While PREMUL rounds evenly. This patch adds 0x8000 to the intermediate results in INV_PREMUL before right shifting, thereby achieving even rounding. The rounding also makes PREMUL(INV_PREMUL()) into an identify operation, which means we can safely convert ARGB32PM to ARGB32 and back without ever losing color details. A test is added to verify this. Change-Id: I1267e109caddcff0c01d726cb5c1c1e9fa5f7996 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2014-01-207-16/+1348
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/global/qglobal.h src/corelib/tools/qstring.cpp src/gui/image/image.pri src/gui/image/qimage.cpp src/plugins/platforms/cocoa/qcocoawindow.h src/plugins/platforms/cocoa/qcocoawindow.mm src/plugins/platforms/eglfs/qeglfshooks_stub.cpp tests/auto/corelib/io/qstandardpaths/tst_qstandardpaths.cpp Change-Id: I3b9ba029c8f2263b011f204fdf68c3231c6d4ce5
| * Fix QPixmap and OpenGL threading warnings when paintingAleix Pol2014-01-181-1/+4
| | | | | | | | | | | | | | | | | | | | | | If the QPA supports threaded pixmaps, don't print out a message warning the user about painting a pixmap in the non-main thread. Likewise, if the QPA supports threaded OpenGL, don't print out a warning when the user is about to paint on OpenGL from a non-main thread. Change-Id: I5b4928ee49b1d6c1b638b036fade12dc794258df Reviewed-by: Albert Astals Cid <albert.astals@canonical.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
| * Fix unused-function warning in qdrawhelper.cppThiago Macieira2014-01-161-6/+0
| | | | | | | | | | | | | | | | | | | | | | storePixel<QPixelLayout::BPP32> would have been called by storePixels<QPixelLayout::BPP32> but that function has an overload that uses memcpy instead. So it's really unused. Found by Clang 3.4. Change-Id: I661804e273486d3469221fdd362a24cd77cfb8a7 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>