Mercurial > hgrepos > Python2 > PyMuPDF
diff mupdf-source/thirdparty/zxing-cpp/wrappers/kn/README.md @ 2:b50eed0cc0ef upstream
ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
The directory name has changed: no version number in the expanded directory now.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Mon, 15 Sep 2025 11:43:07 +0200 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mupdf-source/thirdparty/zxing-cpp/wrappers/kn/README.md Mon Sep 15 11:43:07 2025 +0200 @@ -0,0 +1,97 @@ +# ZXing-C++ Kotlin/Native Library + +## Install + +The easiest way to use the library is to fetch it from _mavenCentral_. Simply add + +```gradle +implementation("io.github.zxing-cpp:kotlin-native:2.3.0-SNAPSHOT") +``` + +to your `build.gradle.kts` file in the `dependencies` section of `nativeMain` source set. +To access the SNAPSHOT version, you also need to add a separate repositories entry in your build.cradle file: + +```gradle +maven { url = uri("https://s01.oss.sonatype.org/content/repositories/snapshots") } +``` + +## Use + +### Reading + +A trivial use case looks like this: + +```kotlin +import zxingcpp.BarcodeFormat +import zxingcpp.BarcodeReader +import zxingcpp.ImageFormat +import zxingcpp.ImageView + +val data: ByteArray = ... // the image data +val width: Int = ... // the image width +val height: Int = ... // the image height +val format: ImageFormat = ImageFormat.Lum // ImageFormat.Lum assumes grey scale image data + +val image: ImageView = ImageView(data, width, height, format) +val barcodeReader = BarcodeReader().apply { + formats = setOf(BarcodeFormat.EAN13, BarcodeFormat.QRCode) + tryHarder = true + maxNumberOfSymbols = 3 + // more options, see documentation +} + +barcodeReader.read(image).joinToString("\n") { barcode: Barcode -> + "${barcode.format} (${barcode.contentType}): ${barcode.text}" +} +``` + +Here you have to load your image into memory by yourself and pass the decoded data to the constructor of `ImageView`. + +### Writing + +A trivial use case looks like this: + +```kotlin +import zxingcpp.* + +val text: String = "Hello, World!" +val format = BarcodeFormat.QRCode + +@OptIn(ExperimentalWriterApi::class) +val cOpts = CreatorOptions(format) // more options, see documentation + +@OptIn(ExperimentalWriterApi::class) +val barcode = Barcode(text, cOpts) +// or +@OptIn(ExperimentalWriterApi::class) +val barcode2 = Barcode(text.encodeToByteArray(), format) + +@OptIn(ExperimentalWriterApi::class) +val wOpts = WriterOptions().apply { + sizeHint = 400 + // more options, see documentation +} + +@OptIn(ExperimentalWriterApi::class) +val svg: String = barcode.toSVG(wOpts) +@OptIn(ExperimentalWriterApi::class) +val image: Image = barcode.toImage(wOpts) +``` + +> Note: The Writer api is still experimental and may change in future versions. +> You will have to opt-in `zxingcpp.ExperimentalWriterApi` to use it. + +## Build locally + +1. Install JDK, CMake and Android NDK(With `$ANDROID_NDK` correctly configured) and ensure their + executable binaries appear in `$PATH`. +2. Prepare kotlin/native toolchain (You can easily do this by cloning + [K/N Toolchain Initializer](https://github.com/ISNing/kn-toolchain-initializer) and executing `gradle build` + so that kotlin will download toolchains needed into user's home dir.). +3. Ensure there's `run_konan` available in `$PATH` or specify path of kotlin-native toolchain in `local.properties` + like `konan.dir=/home/user/.konan/kotlin-native-prebuilt-linux-x86_64-1.9.22`. +4. Ensure there's `llvm-ar` available in `$PATH` for mingwX64 target building. + +And then you can build the project from the command line: + + $ ./gradlew :assemble
