From: Brad Smith Subject: UPDATE: Krita - libheif To: Rafael Sadowski Cc: ports@openbsd.org Date: Thu, 10 Jul 2025 04:58:07 -0400 Here is a diff to fix building Krita with libheif 1.20. Index: Makefile =================================================================== RCS file: /cvs/ports/graphics/krita/Makefile,v retrieving revision 1.79 diff -u -p -u -p -r1.79 Makefile --- Makefile 4 Jul 2025 18:34:33 -0000 1.79 +++ Makefile 10 Jul 2025 08:55:30 -0000 @@ -2,6 +2,7 @@ COMMENT = advanced drawing and image man VERSION = 5.2.10 DISTNAME = krita-${VERSION} +REVISION = 0 SHARED_LIBS += kritabasicflakes 4.1 # 16.0 SHARED_LIBS += kritacolord 2.0 # 16.0 Index: patches/patch-plugins_impex_heif_HeifExport_cpp =================================================================== RCS file: patches/patch-plugins_impex_heif_HeifExport_cpp diff -N patches/patch-plugins_impex_heif_HeifExport_cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-plugins_impex_heif_HeifExport_cpp 10 Jul 2025 08:55:30 -0000 @@ -0,0 +1,65 @@ +Fix build with libheif 1.20 +169339accb9e4e0e0e9921176c5cd60d340b7b04 + +Index: plugins/impex/heif/HeifExport.cpp +--- plugins/impex/heif/HeifExport.cpp.orig ++++ plugins/impex/heif/HeifExport.cpp +@@ -137,6 +137,12 @@ KisImportExportErrorCode HeifExport::convert(KisDocume + HeifLock lock; + #endif + ++#if LIBHEIF_HAVE_VERSION(1, 20, 0) ++ using HeifStrideType = size_t; ++#else ++ using HeifStrideType = int; ++#endif ++ + KisImageSP image = document->savingImage(); + const KoColorSpace *cs = image->colorSpace(); + +@@ -250,10 +256,10 @@ KisImportExportErrorCode HeifExport::convert(KisDocume + img.add_plane(heif_channel_G, width,height, 8); + img.add_plane(heif_channel_B, width,height, 8); + +- int strideR = 0; +- int strideG = 0; +- int strideB = 0; +- int strideA = 0; ++ HeifStrideType strideR = 0; ++ HeifStrideType strideG = 0; ++ HeifStrideType strideB = 0; ++ HeifStrideType strideA = 0; + + uint8_t *ptrR = img.get_plane(heif_channel_R, &strideR); + uint8_t *ptrG = img.get_plane(heif_channel_G, &strideG); +@@ -289,7 +295,7 @@ KisImportExportErrorCode HeifExport::convert(KisDocume + img.create(width, height, heif_colorspace_RGB, chroma); + img.add_plane(heif_channel_interleaved, width, height, 12); + +- int stride = 0; ++ HeifStrideType stride = 0; + + uint8_t *ptr = img.get_plane(heif_channel_interleaved, &stride); + +@@ -330,8 +336,8 @@ KisImportExportErrorCode HeifExport::convert(KisDocume + + img.add_plane(heif_channel_Y, width, height, 8); + +- int strideG = 0; +- int strideA = 0; ++ HeifStrideType strideG = 0; ++ HeifStrideType strideA = 0; + + uint8_t *ptrG = img.get_plane(heif_channel_Y, &strideG); + uint8_t *ptrA = [&]() -> uint8_t * { +@@ -363,8 +369,8 @@ KisImportExportErrorCode HeifExport::convert(KisDocume + + img.add_plane(heif_channel_Y, width, height, 12); + +- int strideG = 0; +- int strideA = 0; ++ HeifStrideType strideG = 0; ++ HeifStrideType strideA = 0; + + uint8_t *ptrG = img.get_plane(heif_channel_Y, &strideG); + uint8_t *ptrA = [&]() -> uint8_t * { Index: patches/patch-plugins_impex_heif_HeifImport_cpp =================================================================== RCS file: patches/patch-plugins_impex_heif_HeifImport_cpp diff -N patches/patch-plugins_impex_heif_HeifImport_cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-plugins_impex_heif_HeifImport_cpp 10 Jul 2025 08:55:30 -0000 @@ -0,0 +1,63 @@ +Fix build with libheif 1.20 +169339accb9e4e0e0e9921176c5cd60d340b7b04 + +Index: plugins/impex/heif/HeifImport.cpp +--- plugins/impex/heif/HeifImport.cpp.orig ++++ plugins/impex/heif/HeifImport.cpp +@@ -214,6 +214,12 @@ KisImportExportErrorCode HeifImport::convert(KisDocume + HeifLock lock; + #endif + ++#if LIBHEIF_HAVE_VERSION(1, 20, 0) ++ using HeifStrideType = size_t; ++#else ++ using HeifStrideType = int; ++#endif ++ + // Wrap input stream into heif Reader object + Reader_QIODevice reader(io); + +@@ -387,8 +393,8 @@ KisImportExportErrorCode HeifImport::convert(KisDocume + + if (heifChroma == heif_chroma_monochrome) { + dbgFile << "monochrome heif file, bits:" << luma; +- int strideG = 0; +- int strideA = 0; ++ HeifStrideType strideG = 0; ++ HeifStrideType strideA = 0; + const uint8_t *imgG = heifimage.get_plane(heif_channel_Y, &strideG); + const uint8_t *imgA = + heifimage.get_plane(heif_channel_Alpha, &strideA); +@@ -409,10 +415,10 @@ KisImportExportErrorCode HeifImport::convert(KisDocume + } else if (heifChroma == heif_chroma_444) { + dbgFile << "planar heif file, bits:" << luma; + +- int strideR = 0; +- int strideG = 0; +- int strideB = 0; +- int strideA = 0; ++ HeifStrideType strideR = 0; ++ HeifStrideType strideG = 0; ++ HeifStrideType strideB = 0; ++ HeifStrideType strideA = 0; + const uint8_t* imgR = heifimage.get_plane(heif_channel_R, &strideR); + const uint8_t* imgG = heifimage.get_plane(heif_channel_G, &strideG); + const uint8_t* imgB = heifimage.get_plane(heif_channel_B, &strideB); +@@ -439,7 +445,7 @@ KisImportExportErrorCode HeifImport::convert(KisDocume + displayNits, + colorSpace); + } else if (heifChroma == heif_chroma_interleaved_RGB || heifChroma == heif_chroma_interleaved_RGBA) { +- int stride = 0; ++ HeifStrideType stride = 0; + dbgFile << "interleaved SDR heif file, bits:" << luma; + + const uint8_t *img = heifimage.get_plane(heif_channel_interleaved, &stride); +@@ -461,7 +467,7 @@ KisImportExportErrorCode HeifImport::convert(KisDocume + colorSpace); + + } else if (heifChroma == heif_chroma_interleaved_RRGGBB_LE || heifChroma == heif_chroma_interleaved_RRGGBBAA_LE || heifChroma == heif_chroma_interleaved_RRGGBB_BE || heifChroma == heif_chroma_interleaved_RRGGBB_BE) { +- int stride = 0; ++ HeifStrideType stride = 0; + dbgFile << "interleaved HDR heif file, bits:" << luma; + + const uint8_t *img =