commit:     a8bb28b162de0908f9cc23b1a0bc04a986d8eeee
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 14 08:23:40 2022 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Thu Jul 14 09:27:39 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a8bb28b1

kde-frameworks/prison: Slot op, build w/ media-libs/zxing-cpp-1.4.0

Upstream commit 74e34fa35a59098db7c4358b788ad3ac0a5745f7

Package-Manager: Portage-3.0.30, Repoman-3.0.3
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 .../files/prison-5.96.0-zxing-cpp-1.4.0.patch      | 107 +++++++++++++++++++++
 kde-frameworks/prison/prison-5.96.0-r1.ebuild      |  36 +++++++
 2 files changed, 143 insertions(+)

diff --git a/kde-frameworks/prison/files/prison-5.96.0-zxing-cpp-1.4.0.patch 
b/kde-frameworks/prison/files/prison-5.96.0-zxing-cpp-1.4.0.patch
new file mode 100644
index 000000000000..8971bd919a08
--- /dev/null
+++ b/kde-frameworks/prison/files/prison-5.96.0-zxing-cpp-1.4.0.patch
@@ -0,0 +1,107 @@
+From 74e34fa35a59098db7c4358b788ad3ac0a5745f7 Mon Sep 17 00:00:00 2001
+From: Volker Krause <vkra...@kde.org>
+Date: Fri, 8 Jul 2022 16:18:47 +0200
+Subject: [PATCH] Support ZXing 1.4.0
+
+The previous code doesn't build (and when made to build, crashes) with
+ZXing 1.4.0.
+---
+ src/scanner/CMakeLists.txt             |  2 ++
+ src/scanner/config-prison-scanner.h.in | 14 ++++++++++++++
+ src/scanner/videoscannerworker.cpp     | 17 +++++++++++++++++
+ 3 files changed, 33 insertions(+)
+ create mode 100644 src/scanner/config-prison-scanner.h.in
+
+diff --git a/src/scanner/CMakeLists.txt b/src/scanner/CMakeLists.txt
+index d5b9cf5..ef690c5 100644
+--- a/src/scanner/CMakeLists.txt
++++ b/src/scanner/CMakeLists.txt
+@@ -1,6 +1,8 @@
+ # SPDX-FileCopyrightText: 2022 Volker Krause <vkra...@kde.org>
+ # SPDX-License-Identifier: BSD-3-Clause
+ 
++configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config-prison-scanner.h.in 
${CMAKE_CURRENT_BINARY_DIR}/config-prison-scanner.h)
++
+ add_library(KF5PrisonScanner)
+ add_library(KF5::PrisonScanner ALIAS KF5PrisonScanner)
+ 
+diff --git a/src/scanner/config-prison-scanner.h.in 
b/src/scanner/config-prison-scanner.h.in
+new file mode 100644
+index 0000000..d80ceaf
+--- /dev/null
++++ b/src/scanner/config-prison-scanner.h.in
+@@ -0,0 +1,14 @@
++/*
++   SPDX-FileCopyrightText: 2022 Volker Krause <vkra...@kde.org>
++   SPDX-License-Identifier: LGPL-2.0-or-later
++*/
++
++#ifndef CONFIG_PRISON_SCANNER_H
++#define CONFIG_PRISON_SCANNER_H
++
++#define ZXING_VERSION_MAJOR @ZXing_VERSION_MAJOR@
++#define ZXING_VERSION_MINOR @ZXing_VERSION_MINOR@
++#define ZXING_VERSION_PATCH @ZXing_VERSION_PATCH@
++#define ZXING_VERSION 
((@ZXing_VERSION_MAJOR@<<16)|(@ZXing_VERSION_MINOR@<<8)|(@ZXing_VERSION_PATCH@))
++
++#endif // CONFIG_PRISON_SCANNER_H
+diff --git a/src/scanner/videoscannerworker.cpp 
b/src/scanner/videoscannerworker.cpp
+index 45792dc..947367c 100644
+--- a/src/scanner/videoscannerworker.cpp
++++ b/src/scanner/videoscannerworker.cpp
+@@ -3,6 +3,7 @@
+     SPDX-License-Identifier: MIT
+ */
+ 
++#include "config-prison-scanner.h"
+ #include "format_p.h"
+ #include "scanresult_p.h"
+ #include "videoscannerframe_p.h"
+@@ -12,6 +13,7 @@
+ #include <QImage>
+ #include <QTransform>
+ 
++#define ZX_USE_UTF8 1
+ #include <ZXing/ReadBarcode.h>
+ #include <ZXing/TextUtfEncoding.h>
+ 
+@@ -25,7 +27,11 @@ VideoScannerWorker::VideoScannerWorker(QObject *parent)
+ 
+ void VideoScannerWorker::slotScanFrame(VideoScannerFrame frame)
+ {
++#if ZXING_VERSION < QT_VERSION_CHECK(1, 4, 0)
+     ZXing::Result zxRes(ZXing::DecodeStatus::FormatError);
++#else
++    ZXing::Result zxRes;
++#endif
+     ZXing::DecodeHints hints;
+     hints.setFormats(frame.formats() == Format::NoFormat ? 
ZXing::BarcodeFormats::all() : Format::toZXing(frame.formats()));
+ 
+@@ -173,6 +179,7 @@ void VideoScannerWorker::slotScanFrame(VideoScannerFrame 
frame)
+     if (zxRes.isValid()) {
+         auto res = ScanResultPrivate::get(scanResult);
+ 
++#if ZXING_VERSION < QT_VERSION_CHECK(1, 4, 0)
+         // distinguish between binary and text content
+         const auto hasWideChars = std::any_of(zxRes.text().begin(), 
zxRes.text().end(), [](auto c) {
+             return c > 255;
+@@ -188,6 +195,16 @@ void VideoScannerWorker::slotScanFrame(VideoScannerFrame 
frame)
+             std::copy(zxRes.text().begin(), zxRes.text().end(), b.begin());
+             res->content = b;
+         }
++#else
++        if (zxRes.contentType() == ZXing::ContentType::Text) {
++            res->content = QString::fromStdString(zxRes.text());
++        } else {
++            QByteArray b;
++            b.resize(zxRes.bytes().size());
++            std::copy(zxRes.bytes().begin(), zxRes.bytes().end(), b.begin());
++            res->content = b;
++        }
++#endif
+ 
+         // determine the bounding rect
+         // the cooridinates we get from ZXing are a polygon, we need to 
determine the
+-- 
+GitLab
+

diff --git a/kde-frameworks/prison/prison-5.96.0-r1.ebuild 
b/kde-frameworks/prison/prison-5.96.0-r1.ebuild
new file mode 100644
index 000000000000..4173c4d0a8ba
--- /dev/null
+++ b/kde-frameworks/prison/prison-5.96.0-r1.ebuild
@@ -0,0 +1,36 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+QTMIN=5.15.4
+inherit ecm frameworks.kde.org
+
+DESCRIPTION="QRCode and data matrix barcode library"
+HOMEPAGE="https://invent.kde.org/frameworks/prison";
+
+LICENSE="GPL-2"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+IUSE="qml"
+
+RDEPEND="
+       >=dev-qt/qtgui-${QTMIN}:5
+       >=dev-qt/qtmultimedia-${QTMIN}:5
+       media-gfx/qrencode:=
+       media-libs/libdmtx
+       media-libs/zxing-cpp:=
+       qml? ( >=dev-qt/qtdeclarative-${QTMIN}:5 )
+"
+DEPEND="${RDEPEND}
+       test? ( >=dev-qt/qtwidgets-${QTMIN}:5 )
+"
+
+PATCHES=( "${FILESDIR}/${P}-zxing-cpp-1.4.0.patch" )
+
+src_configure() {
+       local mycmakeargs=(
+               $(cmake_use_find_package qml Qt5Quick)
+       )
+
+       ecm_src_configure
+}

Reply via email to