Go to file
Friedrich W. H. Kossebau 34ed3bad27 Add explicit moc includes to sources for moc-covered headers
* speeds up incremental builds as changes to a header will not always
  need the full mocs_compilation.cpp for all the target's headers rebuild,
  while having a moc file sourced into a source file only adds minor
  extra costs, due to small own code and the used headers usually
  already covered by the source file, being for the same class/struct
* seems to not slow down clean builds, due to empty mocs_compilation.cpp
  resulting in those quickly processed, while the minor extra cost of the
  sourced moc files does not outweigh that in summary.
  Measured times actually improved by some percent points.
  (ideally CMake would just skip empty mocs_compilation.cpp & its object
  file one day)
* enables compiler to see all methods of a class in same compilation unit
  to do some sanity checks
* potentially more inlining in general, due to more in the compilation unit
* allows to keep using more forward declarations in the header, as with the
  moc code being sourced into the cpp file there definitions can be ensured
  and often are already for the needs of the normal class methods
2023-07-02 03:08:44 +02:00
autotests pcx: multiple fixes (2) 2023-05-12 08:53:50 +00:00
cmake/find-modules FindLibRaw: fix include dir, should not contain prefix libraw/ 2022-10-08 02:15:18 +02:00
LICENSES GIT_SILENT: add missing licences 2021-12-02 07:14:54 +01:00
src Add explicit moc includes to sources for moc-covered headers 2023-07-02 03:08:44 +02:00
tests Remove Qt 5 support 2023-01-24 17:15:14 +01:00
.git-blame-ignore-revs clang-tidy: one declaration per line; braces around statements 2021-08-13 15:13:21 +02:00
.gitattributes Camera RAW images plugin 2022-09-19 23:52:43 +00:00
.gitignore GIT_SILENT Add auto generated files to .gitignore 2021-05-02 12:48:16 +02:00
.gitlab-ci.yml Remove Qt5 CI 2023-01-18 23:37:26 +01:00
.kde-ci.yml Require passing tests for the CI to pass 2022-06-29 20:09:38 +02:00
CMakeLists.txt jxl: add support for libjxl v0.9, drop support for old 0.6.1 2023-06-27 14:32:08 +02:00
metainfo.yaml GIT_SILENT: replace MacOSX with macOS 2021-08-25 14:56:21 +02:00
README.md heif: Add format read-write support in README 2023-02-15 08:36:24 +00:00

KImageFormats

Plugins to allow QImage to support extra file formats.

Introduction

This framework provides additional image format plugins for QtGui. As such it is not required for the compilation of any other software, but may be a runtime requirement for Qt-based software to support certain image formats.

Formats

The following image formats have read-only support:

  • Animated Windows cursors (ani)
  • Gimp (xcf)
  • OpenEXR (exr)
  • Photoshop documents (psd, psb, pdd, psdt)
  • Sun Raster (ras)
  • Camera RAW images (arw, cr2, cr3, dcs, dng, ...)

The following image formats have read and write support:

  • AV1 Image File Format (AVIF)
  • Encapsulated PostScript (eps)
  • High Efficiency Image File Format (heif). Can be enabled with the KIMAGEFORMATS_HEIF build option.
  • JPEG XL (jxl)
  • Personal Computer Exchange (pcx)
  • SGI images (rgb, rgba, sgi, bw)
  • Softimage PIC (pic)
  • Targa (tga): supports more formats than Qt's version
  • XView (xv)

Contributing

See the QImageIOPlugin documentation for information on how to write a new plugin.

The main difference between this framework and the qimageformats module of Qt is the license. As such, if you write an imageformat plugin and you are willing to sign the Qt Project contributor agreement, it may be better to submit the plugin directly to the Qt Project.

Note that the imageformat plugins provided by this module also provide a desktop file. This is for the benefit of KImageIO in the KDE4 Support framework.

Duplicated Plugins

The TGA plugin supports more formats than Qt's own TGA plugin; specifically, the one provided here supports indexed, greyscale and RLE images (types 1-3 and 9-11), while Qt's plugin only supports type 2 (RGB) files.

The code for this cannot be contributed upstream directly because of licensing. If anyone were willing to write fresh code to improve Qt's TGA plugin, it would allow the TGA plugin in this framework to be removed.

License

This framework is licensed under the LGPLv2.1.

The CMake code in this framework is licensed under the BSD license.