mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-01-06 02:17:34 -08:00
... from upstream 5.2 branch, commit 169339accb9e4e0e0e9921176c5cd60d340b7b04 Closes: https://bugs.gentoo.org/959940 Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
145 lines
6.1 KiB
Diff
145 lines
6.1 KiB
Diff
From 169339accb9e4e0e0e9921176c5cd60d340b7b04 Mon Sep 17 00:00:00 2001
|
|
From: Halla Rempt <halla@valdyas.org>
|
|
Date: Thu, 10 Jul 2025 10:08:24 +0200
|
|
Subject: [PATCH] Fix build with libheif 1.20
|
|
|
|
https://github.com/strukturag/libheif/issues/1419 introduced a
|
|
source incompatible api change, this patch by Brad Smith make
|
|
Krita build with 1.20. I've also checked with 1.15.2, which we
|
|
use and it still builds.
|
|
|
|
BUG:506778
|
|
(cherry picked from commit 6ad4fa68a9e1ce06fc884e34f3cedcdd4b9a2076)
|
|
---
|
|
plugins/impex/heif/HeifExport.cpp | 24 +++++++++++++++---------
|
|
plugins/impex/heif/HeifImport.cpp | 22 ++++++++++++++--------
|
|
2 files changed, 29 insertions(+), 17 deletions(-)
|
|
|
|
diff --git a/plugins/impex/heif/HeifExport.cpp b/plugins/impex/heif/HeifExport.cpp
|
|
index 3e70cf925ea..ccbc8034b51 100644
|
|
--- a/plugins/impex/heif/HeifExport.cpp
|
|
+++ b/plugins/impex/heif/HeifExport.cpp
|
|
@@ -137,6 +137,12 @@ KisImportExportErrorCode HeifExport::convert(KisDocument *document, QIODevice *i
|
|
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(KisDocument *document, QIODevice *i
|
|
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(KisDocument *document, QIODevice *i
|
|
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(KisDocument *document, QIODevice *i
|
|
|
|
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(KisDocument *document, QIODevice *i
|
|
|
|
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 * {
|
|
diff --git a/plugins/impex/heif/HeifImport.cpp b/plugins/impex/heif/HeifImport.cpp
|
|
index 3c1a52cc282..6bceea85ebe 100644
|
|
--- a/plugins/impex/heif/HeifImport.cpp
|
|
+++ b/plugins/impex/heif/HeifImport.cpp
|
|
@@ -214,6 +214,12 @@ KisImportExportErrorCode HeifImport::convert(KisDocument *document, QIODevice *i
|
|
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(KisDocument *document, QIODevice *i
|
|
|
|
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(KisDocument *document, QIODevice *i
|
|
} 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(KisDocument *document, QIODevice *i
|
|
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(KisDocument *document, QIODevice *i
|
|
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 =
|
|
--
|
|
GitLab
|
|
|