summaryrefslogtreecommitdiffstats
path: root/src/gui/image
Commit message (Collapse)AuthorAgeFilesLines
* Doc: Clarify auto detection of file format in QImageEirik Aavitsland2018-01-151-11/+9
| | | | | | | | | | | | The documentation of the QImage file loader methods contained a simplified and somewhat misleading description of the format auto detection algorithm. Fix up the language and link to the detailed explanation. Task-number: QTBUG-51596 Task-number: QTBUG-65438 Change-Id: I33ebc81c78e685c7ec4803fa56efd4e9cbc4eda5 Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
* QPixmap without QGuiApplication: do not crash, terminate gracefullyEirik Aavitsland2017-11-161-0/+3
| | | | | | | | | | | | | | | | | Any attempt to create a non-null QPixmap in a QCoreApplication-based app would give a hard crash without a warning. This commit adds a check and instead calls qFatal with an explanatory message. This was originally fixed in Qt 4 (ref. QTBUG-17873) but that was lost in the migration to Qt 5. Note that this fix still allows null QPixmaps to be created under QCoreApplication, since that has worked in all Qt 5 versions. Task-number: QTBUG-53572 Task-number: QTBUG-64125 Change-Id: I60ae29b90f1bd3663aeed2ce88dc1690fe66552c Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Doc: QImageReader assumes exclusive control over its deviceEirik Aavitsland2017-10-251-0/+5
| | | | | | | | | Make an explicit mention of the fact that modifying a device while it is being held by a QImageReader is undefined. Task-number: QTBUG-61121 Change-Id: Ie0a016255c2614c5b8b415c8cd9602169153c8f8 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Doc: add hint about QMimeDatabase to QImageReader::canRead()Eirik Aavitsland2017-10-241-1/+4
| | | | | | Task-number: QTBUG-63568 Change-Id: I5b700138487dbebfc8cbe70eb3a076efceafb361 Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
* Fix saving QImage with longer than necessary bytes-per-lineAllan Sandfeld Jensen2017-09-221-33/+22
| | | | | | | | We should only copy the minimum bytes-per-line when saving an image. Task-number: QTBUG-30515 Change-Id: Idd34a389cf88210c3f127599ccf54d27d3ec9a06 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* Fix convertToFormat with color-tablesAllan Sandfeld Jensen2017-09-141-17/+6
| | | | | | | | | The function was only well defined from RGB32 and ARGB32PM formats, this patch fixes it so it behaves well from all formats. Task-number: QTBUG-63163 Change-Id: Id892531d9aaf997b707b430196c1166493792a2a Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* Fix: WebP missing from QMovie::supportedFormats()Eirik Aavitsland2017-08-291-1/+1
| | | | | | | | | | Use QImageReader::supportsOption() instead of ::supportsAnimation(), since the former checks what the handler supports in general, not just the particular device. Task-number: QTBUG-61642 Change-Id: I57db24425b4fd8821446659936e6a8ca55008921 Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
* QPicture: check that pictureFormat doesn't return dangling pointersGiuseppe D'Angelo2017-08-161-1/+6
| | | | | | | | | | | The function returns a const char * out of a QByteArray. We must be sure that the QByteArray outlives the function, otherwise the pointer returned would be dangling. Add an assertion for that. Found by clazy. Change-Id: I3416af4eb5ec79ddb3e4baf3bdcfe046b44d4225 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* Doc: remove linking to internal methodNico Vertriest2017-08-061-1/+1
| | | | | | | qimage.cpp:2127: warning: Can't link to 'isDetached()' Change-Id: Ib8f056441bf08e315ed97caf55c510f50ebaf4ed Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
* QPMCache::remove(): Do not dereference erased iteratorFriedemann Kleint2017-07-191-1/+2
| | | | | | | | Fixes a crash in tst_QGL::textureCleanup() (developer build). Amends 467b15a20c3d6eb611ea5f6ccffd5fc0df81b0c4. Change-Id: I7026b3c2a27c02a80b995fde67a832dc2d19031d Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Fix BMP ImageFormat for semi-transparent filesAllan Sandfeld Jensen2017-07-032-41/+35
| | | | | | | | | Reads the v4 and v5 info-header together with the rest of the info- headers, and use that to report the correct image format before decoding. Change-Id: I69e2bcc54367b7f14820815ae2ae1fa2d8d5dc8c Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* Fix QImageReader::supportedSubTypes()Eirik Aavitsland2017-06-071-1/+1
| | | | | | | | | Because of inverted test logic, this function would always return an empty list. Task-number: QTBUG-61048 Change-Id: If1529f2c567069ab4b672f309268b4edaf84c42f Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Convert features.movie to QT_[REQUIRE_]CONFIGStephan Binner2017-05-293-11/+6
| | | | | Change-Id: I838c7305d4649f953c5bb972f1aa51dbb078afe2 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* QIconLoaderEngine: Fix actualSize() for no-entryPalo Kisa2017-05-031-1/+4
| | | | | | | | | Return an empty size if no suitable entry found to avoid mismatch with the returned pixmap()'s size (the QIconEngine::actualSize() returns the originally requested size). Change-Id: Ia278719a54392b62c5f9fc0529476baba5cd7df0 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* Doc: Fix references to QIconEngineV2 and QIconEnginePluginV2Aaron Linville2017-04-281-3/+3
| | | | | | | | Fix a few lingering doc references to the old classes. Task-number: QTBUG-59815 Change-Id: Ia6b406485260c943b018422aaeb8e22ca4406e81 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
* Fix typo in QRasterPlatformPixmap::metric()Laszlo Agocs2017-04-201-1/+1
| | | | | | Task-number: QTBUG-60132 Change-Id: I1f0ad7babf16800d3acdf579db6abd6854e1ed76 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* Move Q_REQUIRED_RESULT to its correct positionThiago Macieira2017-04-201-4/+4
| | | | | | | | | | | That's before the return type or static, inline, constexpr or such keywords (if any). Perl Script: s/^(\s+)(.*) Q_REQUIRED_RESULT(;)?(\s*\/\/.*)?$/\1Q_REQUIRED_RESULT \2\3\4/ Change-Id: I7814054a102a407d876ffffd14b6a16182f159e2 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* Doc: Fix link errorsNico Vertriest2017-04-191-1/+1
| | | | | | | | qimage.cpp:2127: warning: Can't link to 'isDetached()' qmatrix4x4.cpp:1933: warning: Can't link to 'operator()()' Change-Id: I93a2ead9650faf139040173f8d3b24cfa1e730ae Reviewed-by: Martin Smith <martin.smith@qt.io>
* Fix PNGs saved from QImage transform of 8-bit imagesAllan Sandfeld Jensen2017-04-192-2/+2
| | | | | | | | | | | Fixes two separate errors. QImage::transform was incorrectly adding colors to the color-table of the returned image when the converted image would not be indexed, and qpnghandler was looking at non-empty color- table instead of color format. Task-number: QTBUG-43708 Change-Id: Ife14b6428ca65ac7d3a0b36a89a73e56d64586b4 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* Doc: add missing specs about parametersNico Vertriest2017-04-181-1/+1
| | | | | | | | | qopengltexture.cpp:3476: warning: Undocumented parameter 'layerCount' in QOpenGLTexture::setCompressedData() and QOpenGLTexture::setData() qimage.cpp:2127: warning: Undocumented parameter 'format' in QImage::reinterpretAsFormat() Change-Id: I17feb2256a29f3bb722d2de3a83b390abff85a35 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Merge remote-tracking branch 'origin/5.8' into 5.9Liang Qi2017-04-062-4/+4
|\ | | | | | | | | | | | | | | | | | | Conflicts: src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp src/platformsupport/fontdatabases/freetype/qfreetypefontdatabase.cpp src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp src/widgets/widgets/qtabbar.cpp Change-Id: Iaa9daee5f7a6490d56257a3824730a35751ceb05
| * qbmphandler fix: use qint64 for caching QIODevice file positionHendrick Melo2017-04-042-4/+4
| | | | | | | | | | | | | | | | | | | | | | Changed the file position and offset types so they can properly handle files larger than the 32bit limit Task-number: QTBUG-59493 Change-Id: I00e1741c7682c4c79f35fef808fe1ea26e67c8b5 Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io> Reviewed-by: Hendrick Melo
* | No divide by zero if all imageformat features are disabledStephan Binner2017-04-041-1/+2
| | | | | | | | | | | | Change-Id: Ib3e8a4b62ae627bc3dc8541767dafff4e493d2f8 Reviewed-by: Tasuku Suzuki <tasuku.suzuki@qt.io> Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* | xbm image format: avoid uninitialized pixels for truncated dataEirik Aavitsland2017-03-221-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | xbm bitmaps are conventionally accepted as valid even if there is not enough data to fill the declared bitmap size: both ImageMagick and GIMP do this. Qt did too, but the uncovered areas would be uninitialized, and thus contain random junk bits. This commit adds clearing of the full QImage data. Task-number: QTBUG-54169 Change-Id: I84150d54d07dbd546a4947e7ec332f83f2d7ca41 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | Merge "Merge remote-tracking branch 'origin/5.8' into 5.9" into refs/staging/5.9Liang Qi2017-03-131-7/+0
|\ \
| * | Merge remote-tracking branch 'origin/5.8' into 5.9Liang Qi2017-03-131-7/+0
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: examples/network/network.pro mkspecs/features/mac/default_post.prf src/corelib/io/qfilesystemengine_win.cpp src/corelib/io/qprocess.cpp src/corelib/io/qprocess.h src/corelib/io/qprocess_p.h src/corelib/io/qprocess_unix.cpp src/corelib/io/qprocess_win.cpp src/corelib/thread/qmutex.cpp src/platformsupport/fontdatabases/windows/windows.pri src/plugins/platforms/eglfs/eglfsdeviceintegration.pro tests/auto/corelib/io/io.pro Change-Id: I8a27e0e141454818bba9c433200a4e84a88d147e
| | * Don't call releaseKey a second time if the insertion failsAndy Shaw2017-03-071-7/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When the insertion into the cache fails then it will delete the entry for us which already calls releaseKey(). So we should not call it a second time. Task-number: QTBUG-58259 Change-Id: I816c6f29ef97fe3a245f145c4faf1e0649f72dc5 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* | | xpm image format: Reject corrupt images with invalid header infoEirik Aavitsland2017-03-131-0/+3
|/ / | | | | | | | | | | | | | | | | The xpm handler did not properly check that the information read from the file header was sane. Task-number: QTBUG-59211 Change-Id: I84099777a16b2b0c473d139f5fdec1d0cb5d515e Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | Gui: Replace LGPL21 with LGPL license headerKai Koehne2017-03-031-14/+20
| | | | | | | | | | | | | | Also use canonical contact url. Change-Id: Ic0bf112998707844eb0c2853d7516b76f4d5afa8 Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
* | Fix grammar in QIcon docsMitch Curtis2017-03-021-2/+2
| | | | | | | | | | Change-Id: I170662de5dde32a913acc5b681c2d2cefcb51a70 Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* | ppm/pgm image formats: fix reading 16bit and limited rangeEirik Aavitsland2017-03-021-14/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | The color values of ppm and pgm images can be either 8 or 16 bits. They can also be scaled to a smaller max value, and they can be expressed either binary or ascii. For some of these permutations, Qt's image handler lacked implementation or would decode the wrong color value. This commit fixes that. Task-number: QTBUG-18262 Task-number: QTBUG-35990 Change-Id: I7cf11c2366244f3a9b31c1a565a81e2658bc6a51 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | QImageReader: remove some unneeded relocationsMarc Mutz2017-02-241-12/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Replace an array of pairs of pointers with an array of pairs of arrays. Remove the unused end marker. Add a static_assert to verify that the size of the array matches the constant all loops use. Also extract the common part of the mime-type name and append it when building a QByteArray from it. This is free, as both the new QStringBuilder expression as well as the old construction from a const char * incur one memory allocation each. Replace one indexed loop with ranged-for. Results on optimized GCC 6.1.1 Linux AMD64 builds: text -96B data -160B relocs -16 Change-Id: Ic23eb06bacbf70afb6f60e2fb8a140bdd3880aca Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QtGui: port the last remaining Q_FOREACH loops and add QT_NO_FOREACHMarc Mutz2017-02-201-1/+1
| | | | | | | | | | | | | | | | | | Port the last two remaining Q_FOREACH users in QtGui to C++11 range-for and mark the library as Q_FOREACH -free, using QT_NO_FOREACH. Change-Id: Ie6c5eea0af4227af6ef3dc0b4da2cf62e09d8b52 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* | Use static initialization for QBasicAtomicsMarc Mutz2017-02-162-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | A default-constructed static QBasicAtomicInt at function scope will be dynamically initialized. It will still be zero-initialized, but at least GCC adds guard variables for such objects. When using aggregate initialization, the guard disappears. Amends 04d6495bf773a6bb0d4fa6980df22d3b81a605b0. Change-Id: Id9335cffdd43094cafb231fdde2523d013abe1d6 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Make some atomic counters zero-basedMarc Mutz2017-02-152-4/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | A variable of static storage duration that is not zero-initialized takes up space in the DATA segment of the executable. By making the counters start at zero and adding the initial value afterwards, we move them over to the BSS segment, which does not take up space in the executable. Wrap atomics used across function boundaries into small functions, to avoid code duplication and to increase readability. Change-Id: Ida6ed316ecb8fe20da62a9577161349e14de5aed Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | qimage_conversions.cpp: keep shared copies of gray and alpha color tablesMarc Mutz2017-02-131-19/+20
| | | | | | | | | | | | | | | | | | | | Since QVector is implicitly shared, don't re-generate the same two color tables all over again, but create them once and keep them around in a Q_GLOBAL_STATIC. Change-Id: I9a8d32021d8cc327264f2818a23beaae67fe3ee8 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | Merge remote-tracking branch 'origin/5.8' into 5.9Liang Qi2017-02-083-12/+16
|\| | | | | | | | | | | | | | | Conflicts: configure.json mkspecs/win32-icc/qmake.conf Change-Id: Ibf40546b024d644c7d9ed490bee15b82597f4d3f
| * Doc: link issue and qdoc error on parameterNico Vertriest2017-02-071-2/+2
| | | | | | | | | | | | | | | | - No such parameter 'image' in QImage::toCGImage() - Can't link to 'toNSImage() Change-Id: Ida559fb1211d1e196d9a9a50d97566124e82eb2f Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
| * PNG image handler: Avoid "invalid distance too far back" errorEirik Aavitsland2017-01-311-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For certain slightly miscoded png images, newer versions of libpng will trigger the mentioned zlib error and fail to read the image. This miscoding has until now been safely ignored by all png implementations, so such images exist in the wild, and users expect them to work. Since the cost of the workaround is only a missed opportunity of a tiny saving in memory usage during decoding, enable it. Task-number: QTBUG-58171 Change-Id: I820a9faef6d5b7af79c04404ebdceb48a096f29a Reviewed-by: André Klitzing <aklitzing@gmail.com> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
| * Fix MIPS DSP configurationAllan Sandfeld Jensen2017-01-271-10/+8
| | | | | | | | | | | | | | | | | | The patch fixes a number of bugs in code, and removes dead logic clarifying that MIPS DSP, like ARM NEON, has no runtime detecton. Change-Id: If2f4eea68da5b2eaa80b8e9c8258206d8c1b7173 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QRasterPlatformPixmap::createPixmapForImage(): preserve DPRFriedemann Kleint2017-02-061-2/+0
| | | | | | | | | | | | | | | | | | | | Remove the line setting the DPR from the source; the image is moved. Task-number: QTBUG-58653 Task-number: QTBUG-58645 Change-Id: I2de94681459dba1d69dee06da44617fb9fa35bcc Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* | Merge remote-tracking branch 'gerrit/dev' into HEADOswald Buddenhagen2017-02-013-18/+11
|\ \
| * | Merge remote-tracking branch 'origin/5.8' into devLiang Qi2017-01-301-2/+2
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: examples/network/network-chat/peermanager.cpp src/widgets/util/qsystemtrayicon.cpp src/widgets/util/qsystemtrayicon_qpa.cpp src/widgets/util/qsystemtrayicon_win.cpp src/widgets/util/qsystemtrayicon_x11.cpp Change-Id: I1c026df83818c0ccaf956980370e7522960627db
| | * Fix build without features.movieTasuku Suzuki2017-01-271-2/+2
| | | | | | | | | | | | | | | Change-Id: I244a618f8660262249455ee707b62e6355583a74 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * | Use QImage::reinterpretAsFormat in QPixmapAllan Sandfeld Jensen2017-01-262-16/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | Use the new QImage method instead of operating on private API. At the same time the code is improved to ensure the QImage is detached. Change-Id: Ia015c0bb18d7bc62da38397594730254843e5a0d Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* | | Implement support for Scale directory key according to Icon Theme specMitch Curtis2017-02-015-25/+194
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Qt already supports high DPI icons using the “@nx” approach, where the device pixel ratio that the image was designed for is in the file name. However, our implementation of the freedekstop.org Icon Theme specification did not support the Scale directory key: https://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html#directory_layout This meant that users creating icons via QIcon::fromTheme() did not get high DPI support. This patch fixes that. [ChangeLog][QtGui][QIcon] Implemented support for Scale directory key according to Icon Theme Spec. Icons created via QIcon::fromTheme() now have high DPI support by specifying the Scale in the appropriate entry of the relevant index.theme file. Task-number: QTBUG-49820 Change-Id: If442fbc551034166d88defe607109de1c6ca1d28 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Topi Reiniö <topi.reinio@qt.io> Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* | Introduce QImage::reinterpretAsFormatAllan Sandfeld Jensen2017-01-182-0/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | QImage::reinterpretAsFormat can be used to change the format of an image without converting the data, to correct wrong formats or narrow the format to an opaque one if found to be opaque. [ChangeLog][QtGui][QImage] A new method reinterpretAsFormat is has been added to change the format of a QImage without converting the data. Change-Id: I5e15bc5a1c474a35d3921b06299008ab2effd945 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io> Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* | QImageWriter: Do not assume that QIODevice::open() will succeedRobin Burchell2016-12-221-2/+7
| | | | | | | | | | | | | | | | | | For instance, if we are passed a QFile to a path that does not exist, being told "No such file or directory" is significantly more useful than being told "Device not writable". Change-Id: I0cc72322f868f06ae2f77b3d0fac7e2094a1d2c7 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* | QImageWriter: Explain slightly strange looking logic in canWriteRobin Burchell2016-12-221-0/+5
| | | | | | | | | | Change-Id: Ic0fa4783351144ad8739669f1655b2fb0639a43d Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* | Merge remote-tracking branch 'origin/5.8' into devLiang Qi2016-12-168-66/+47
|\| | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: configure configure.pri examples/widgets/painting/fontsampler/mainwindow.cpp examples/widgets/painting/fontsampler/mainwindow.h mkspecs/features/moc.prf src/corelib/global/qglobal.h src/gui/text/qtextdocument.cpp Change-Id: Ica65512e00871695190a14ccea5c275b0165f787