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 =

Reply via email to