Commit 1951f3a0 for libheif

commit 1951f3a0b7d89668b8fcc94391a02a3cc21b71a7
Author: Dirk Farin <dirk.farin@gmail.com>
Date:   Mon Apr 13 13:00:09 2026 +0200

    add cmake option to use locally built libpng (for testing HDR features) (#1697)

diff --git a/heifio/CMakeLists.txt b/heifio/CMakeLists.txt
index e6b1bbf7..8eac04f5 100644
--- a/heifio/CMakeLists.txt
+++ b/heifio/CMakeLists.txt
@@ -79,8 +79,23 @@ int main() {
 endif ()


-find_package(PNG)
-set(PNG_FOUND ${PNG_FOUND} PARENT_SCOPE)
+option(WITH_LIBPNG_INTERNAL "Use the libpng build in the 'third-party' directory" OFF)
+
+if (WITH_LIBPNG_INTERNAL)
+    add_library(PNG::PNG STATIC IMPORTED)
+    set_target_properties(PNG::PNG PROPERTIES
+        IMPORTED_LOCATION "${PROJECT_SOURCE_DIR}/third-party/libpng/build/dist/lib/libpng.a"
+        INTERFACE_INCLUDE_DIRECTORIES "${PROJECT_SOURCE_DIR}/third-party/libpng/build/dist/include"
+    )
+    find_package(ZLIB REQUIRED)
+    target_link_libraries(PNG::PNG INTERFACE ZLIB::ZLIB m)
+    set(PNG_FOUND ON)
+    set(PNG_FOUND ON PARENT_SCOPE)
+else()
+    find_package(PNG)
+    set(PNG_FOUND ${PNG_FOUND} PARENT_SCOPE)
+endif()
+
 if (TARGET PNG::PNG)
     target_compile_definitions(heifio PUBLIC -DHAVE_LIBPNG=1)

diff --git a/heifio/decoder_png.cc b/heifio/decoder_png.cc
index 69ff6c6b..543bfb20 100644
--- a/heifio/decoder_png.cc
+++ b/heifio/decoder_png.cc
@@ -472,6 +472,11 @@ heif_error loadPNG(const char* filename, int output_bit_depth, InputImage *input
         if (nclx) {
           heif_nclx_color_profile_set_color_primaries(nclx, color_primaries);
           heif_nclx_color_profile_set_transfer_characteristics(nclx, transfer_characteristics);
+
+          // Since matrix_coefficients are always 0 for PNGs, choose coefficients as default that
+          // match the color primaries.
+          // TODO: should we move this into libheif?
+
           switch (color_primaries) {
           case heif_color_primaries_ITU_R_BT_709_5:
           default:
diff --git a/third-party/libpng.cmd b/third-party/libpng.cmd
new file mode 100644
index 00000000..f573aa1a
--- /dev/null
+++ b/third-party/libpng.cmd
@@ -0,0 +1,13 @@
+: # If you want to use a local libpng build, please check that the WITH_LIBPNG_INTERNAL CMake variable is set correctly.
+
+: # The odd choice of comment style in this file is to try to share this script between *nix and win32.
+
+git clone --single-branch https://github.com/pnggroup/libpng.git
+
+cd libpng
+mkdir build
+cd build
+cmake -G Ninja -DCMAKE_INSTALL_PREFIX="$(pwd)/dist" -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DPNG_TESTS=OFF -DPNG_TOOLS=OFF ..
+ninja
+ninja install
+cd ../..