On Thu Jul 10, 2025 at 04:58:07AM -0400, Brad Smith wrote: > Here is a diff to fix building Krita with libheif 1.20. >
Committed, thanks > > 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 =