mirror of
https://invent.kde.org/frameworks/kimageformats.git
synced 2025-06-03 17:08:08 -04:00
- Added support for writing EXR files - Large image support (tested with 32GiB 16-bit image) - OpenEXR multithreaded read/write support through the use of line blocks - Build option to enable conversion to sRGB when read (disabled by default) - Multi-view image reading support - Options support: Size, ImageFormat, Quality, CompressRatio - Metadata write/read support via EXR attributes The plugin is now quite complete. It should also work on KF5 (not tested): if there is the will to include this MR also on KF5, let me know and I will do all the necessary tests.
127 lines
3.6 KiB
CMake
127 lines
3.6 KiB
CMake
# NB: the desktop files are installed for the benefit of KImageIO in KDELibs4Support.
|
|
|
|
##################################
|
|
|
|
function(kimageformats_add_plugin plugin)
|
|
set(options)
|
|
set(oneValueArgs)
|
|
set(multiValueArgs SOURCES)
|
|
cmake_parse_arguments(KIF_ADD_PLUGIN "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
|
if(NOT KIF_ADD_PLUGIN_SOURCES)
|
|
message(FATAL_ERROR "kimageformats_add_plugin called without SOURCES parameter")
|
|
endif()
|
|
|
|
qt_add_plugin(${plugin} PLUGIN_TYPE imageformats)
|
|
target_sources(${plugin} PRIVATE ${KIF_ADD_PLUGIN_SOURCES})
|
|
set_target_properties(${plugin} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/imageformats)
|
|
target_link_libraries(${plugin} PRIVATE Qt6::Gui)
|
|
install(TARGETS ${plugin} DESTINATION ${KDE_INSTALL_QTPLUGINDIR}/imageformats)
|
|
endfunction()
|
|
|
|
##################################
|
|
|
|
kimageformats_add_plugin(kimg_ani SOURCES ani.cpp)
|
|
|
|
##################################
|
|
|
|
if (TARGET avif)
|
|
kimageformats_add_plugin(kimg_avif SOURCES "avif.cpp")
|
|
target_link_libraries(kimg_avif PRIVATE "avif")
|
|
endif()
|
|
|
|
##################################
|
|
|
|
if (BUILD_EPS_PLUGIN)
|
|
if (TARGET Qt6::PrintSupport)
|
|
kimageformats_add_plugin(kimg_eps SOURCES eps.cpp)
|
|
target_link_libraries(kimg_eps PRIVATE Qt6::PrintSupport)
|
|
endif()
|
|
endif()
|
|
|
|
##################################
|
|
|
|
if(OpenEXR_FOUND)
|
|
kimageformats_add_plugin(kimg_exr SOURCES exr.cpp scanlineconverter.cpp)
|
|
if(TARGET OpenEXR::OpenEXR)
|
|
target_link_libraries(kimg_exr PRIVATE OpenEXR::OpenEXR)
|
|
else()
|
|
if(OpenEXR_VERSION_STRING VERSION_LESS 2.3.0)
|
|
# Older OpenEXR versions use dynamic exception specifications, so
|
|
# cannot use C++17 with them
|
|
set_target_properties(kimg_exr PROPERTIES CXX_STANDARD 14)
|
|
endif()
|
|
target_link_libraries(kimg_exr PRIVATE OpenEXR::IlmImf)
|
|
endif()
|
|
kde_target_enable_exceptions(kimg_exr PRIVATE)
|
|
endif()
|
|
|
|
##################################
|
|
|
|
kimageformats_add_plugin(kimg_hdr SOURCES hdr.cpp)
|
|
|
|
##################################
|
|
|
|
if (LibHeif_FOUND)
|
|
kimageformats_add_plugin(kimg_heif SOURCES heif.cpp)
|
|
target_link_libraries(kimg_heif PRIVATE PkgConfig::LibHeif)
|
|
endif()
|
|
|
|
##################################
|
|
|
|
if (LibJXL_FOUND AND LibJXLThreads_FOUND)
|
|
kimageformats_add_plugin(kimg_jxl SOURCES jxl.cpp)
|
|
target_link_libraries(kimg_jxl PRIVATE PkgConfig::LibJXL PkgConfig::LibJXLThreads)
|
|
endif()
|
|
|
|
##################################
|
|
|
|
kimageformats_add_plugin(kimg_pcx SOURCES pcx.cpp)
|
|
|
|
##################################
|
|
|
|
kimageformats_add_plugin(kimg_pic SOURCES pic.cpp)
|
|
|
|
##################################
|
|
|
|
kimageformats_add_plugin(kimg_psd SOURCES psd.cpp)
|
|
|
|
##################################
|
|
|
|
kimageformats_add_plugin(kimg_qoi SOURCES qoi.cpp scanlineconverter.cpp)
|
|
|
|
##################################
|
|
|
|
kimageformats_add_plugin(kimg_ras SOURCES ras.cpp)
|
|
|
|
##################################
|
|
|
|
kimageformats_add_plugin(kimg_rgb SOURCES rgb.cpp)
|
|
|
|
##################################
|
|
|
|
kimageformats_add_plugin(kimg_tga SOURCES tga.cpp)
|
|
|
|
##################################
|
|
|
|
kimageformats_add_plugin(kimg_xcf SOURCES xcf.cpp)
|
|
|
|
##################################
|
|
|
|
if (LibRaw_FOUND)
|
|
kimageformats_add_plugin(kimg_raw SOURCES raw.cpp)
|
|
kde_enable_exceptions()
|
|
target_link_libraries(kimg_raw PRIVATE LibRaw::LibRaw)
|
|
endif()
|
|
|
|
##################################
|
|
|
|
if (KF6Archive_FOUND)
|
|
|
|
kimageformats_add_plugin(kimg_kra SOURCES kra.cpp)
|
|
target_link_libraries(kimg_kra PRIVATE KF6::Archive)
|
|
|
|
kimageformats_add_plugin(kimg_ora SOURCES ora.cpp)
|
|
target_link_libraries(kimg_ora PRIVATE KF6::Archive)
|
|
|
|
endif()
|