Releases: zxing-cpp/zxing-cpp
v3.0.2 (Important API fix)
Patch release
This is a patch release, fixing three issues:
-
Workaround for missing
<format>C++20 header in GCC 11 and GCC 12
This is required to make Homebrew and older distros happy. -
Zint Header Detection Fix
Fixed an issue that caused a<zint.h> not founderror when building the library with-DZXING_USE_BUNDLED_ZINT=OFFand libzint was installed in a non-standard install prefix (e.g.,/opt/homebrew). -
Typo Fix in ReaderOptions API
Fixed a typo in the newly addedReaderOptions::validateOptionalCheckSum, now correctly namedvalidateOptionalChecksum. If anyone is angry at me for breaking their brand new code, let me know and Iโll consider adding a compatibility symbol with the "one week old" name.
Bonus: Calling ZXingReader --version now returns a string better following standard practice: ZXingReader version 3.0.2.
For an overview of the many changes since the 2.3 release, see the v3.0.0 Release notes.
Package maintainers, please review the v3.0.1 Release notes regarding proper library configuration.
Full Changelog: v3.0.1...v3.0.2
v3.0.1 (for package maintainers)
Patch release
This is a patch release, fixing a critical error (compile regression, see #1051) for people relying on the "old" (MultiFormatWriter) API. All wrapper code is unaffected and will not be released as 3.0.1.
Note 1: The old writer API is disabled by default, to enable it, you need to configure zxing-cpp with -DZXING_WRITERS=BOTH (or OLD). It is generally advised for package maintainers to use the BOTH config option during the 3.0 release cycle to allow client applications (like e.g. LibreOffice) to work until they switch to the new API.
Note 2: The new API is backed by libzint. The default config will statically link a bundled 2.16 version of libzint. If your distribution has a libzint v2.16 available, you might want to configure zxing-cpp to link against that: -DZXING_USE_BUNDLED_ZINT=OFF
Note 3: As with the 3.0.0 release, the automatically created "Source Code" zip and tar.gz files are broken and can't be fixed (GitHub limitation regarding git submodules). If you need this, please download the attached zxing-cpp-3.0.1.zip or zxing-cpp-3.0.1.tar.gz file.
For an overview of the many changes from the 2.3 release, see the v3.0.0 Release notes.
Full Changelog: v3.0.0...v3.0.1
v3.0.0
Important:
- The automatically created "Source Code" zip and tar.gz files are broken and can't be fixed (GitHub limitation regarding git submodules). If you need this, please download the attached zxing-cpp-3.0.0.zip or zxing-cpp-3.0.0.tar.gz file.
- There has been an issue detected after the release (#1051), which affects users who need access to the OLD ZXING_WRITERS (MultiFormatWriter.h). This will be fixed in a 3.0.1 patch release.
Major changes:
- New creator/writer API (moved out of experimental state) with lots of improvements and fine-tuning
- New
BarcodeFormatandBarcodeFormatsimplementation, with minor changes in API- New meta barcode formats like
All,AllReadable,AllRetail, etc. - New human readable names from
ToString(format), e.g.EAN-13instead ofEAN13 - Added concept of Symbology to
Barcode, e.g.QRCode==QRCodeModel2, MicroQRCode, RMQRCode - The C-API suffered a hard break to accommodate the bit-field to array switch of the
BarcodeFormats
- New meta barcode formats like
CreatorOptionsnow has a JSON (key-value pair) pair basedoptionsparameter- C++20 is now a build requirement for the library, the client side API is still c++17 compatible
- Cleaned up number of included headers, new single source
ZXingCpp.hheader - MultiFormatWriter: deprecate use of old writer API
- New
Barcode::extra()API that returns symbology specific extra information as JSON string, e.g. "EcLevel" - Add cmake flags to remove individual barcode formats from the build (smaller lib for wasm or embedded applications)
- publish native ARM python wrapper binaries
- New header only Qt6 API (
ZXingQt.h) with support for multiple barcodes and new writer API - New
ZXingQtCamReaderdemo based on QWidgets with proper macOS support
Minor improvements and bug fixes
- QRCode: improve detection rate for circular finder patterns
- DataBar: fix inconsistency / plain spec violation (missing "(01)" prefix)
- EAN/UPC: return 13-digit numbers for UPC-A/E as required by standard
- Improved quiet zone handling for ITF
- QRCode: fix decoding of Model 1 symbols with more than 1 data block
- Content: modify bytesECI() to behave like a standard reader w.r.t. ECIs
- WriteBarcode: automatic GS1PARENS_MODE
- python: add ImageView class and ImageFormat enum as custom memoryview
- python: add experimental support to read_barcodes from QtGui.QImage
- ZXingReader: add experimental -denoise command line option
- Code39: improve detection for 4x difference between wide and narrow and lower quiet-zone requirements
- python: remove 3.9 and add 3.14 packages
- Content: improve auto-detection of charaset/eci info
- make installed binaries relocatable on macOS and Linux
- dotnet: implement IDisposable for the Barcode and Options classes and add XML documentation
- ReaderOptions: new
validateOptionalCheckSumproperty replacing the Code39 and ITF specific ones - ReaderOptions: deprecated the
tryCode39ExtendedModeproperty (use newBarcodeFormat::Code39Ext) - Expose structure append metadata via C API by @magethle in #950
- Add experimental tryDenoise to C API by @magethle in #952
- AZDecoder: minor fixes by @gitlost in #917
- Use 16 KB page size alignment on 64-bit Androids by @markusfisch in #1001
- Remove ZXing path from include path by @fnadeau in #924
- try denoise for android wrapper by @toktarov84 in #1035
- Improvements to Qt/QML interface by @m7913d in #945
Plus a whole bunch of minor fixes and improvements by lots of people.
New Contributors
- @MonkeybreadSoftware made their first contribution in #889
- @mgorny made their first contribution in #902
- @Xie-Long-0 made their first contribution in #933
- @m7913d made their first contribution in #938
- @magethle made their first contribution in #950
- @samuelcolvin made their first contribution in #957
- @HoratiuMarginean made their first contribution in #967
- @maxksielaff made their first contribution in #969
- @wooyechan made their first contribution in #972
- @dantti made their first contribution in #975
- @caolanm made their first contribution in #979
- @brlin-tw made their first contribution in #980
- @nift4 made their first contribution in #988
- @dependabot[bot] made their first contribution in #993
- @wizard97 made their first contribution in #1003
- @chamalgomes made their first contribution in #1014
- @fnadeau made their first contribution in #924
- @toktarov84 made their first contribution in #1035
- @CHC383 made their first contribution in #1041
Sponsors
Thanks to all 'new' and 'old' contributors, named here in random order:
- EUREKAM
- @SAP
- @kurzdigital
- @moonshine-ai
- @somcosoftware
Full Changelog: v2.3.0...v3.0.0
v3.0.0-rc1
Important:
The automatically created "Source Code" zip and tar.gz files are broken and can't be fixed (GitHub limitation regarding git submodules). If you need this, please download the attached zxing-cpp-3.0.0-rc1.zip or zxing-cpp-3.0.0-rc1.tar.gz file.
Major changes:
- New creator/writer API (moved out of experimental state) with lots of improvements and fine-tuning
- New
BarcodeFormatandBarcodeFormatsimplementation, with minor changes in API- New meta barcode formats like
All,AllReadable,AllRetail, etc. - New human readable names from
ToString(format), e.g.EAN-13instead ofEAN13 - Added concept of Symbology to
Barcode, e.g.QRCode==QRCodeModel2, MicroQRCode, RMQRCode - The C-API suffered a hard break to accommodate the bit-field to array switch of the
BarcodeFormats
- New meta barcode formats like
CreatorOptionsnow has a JSON (key-value pair) pair basedoptionsparameter- C++20 is now a build requirement for the library, the client side API is still c++17 compatible
- Cleaned up number of included headers, new single source
ZXingCpp.hheader - MultiFormatWriter: deprecate use of old writer API
- New
Barcode::extra()API that returns symbology specific extra information as JSON string - Add cmake flags to remove individual barcode formats from the build (smaller lib for wasm or embedded applications)
- publish native ARM python wrapper binaries
- New header only Qt wrapper (
ZXingQt.h) with cleaned up API and support for multiple barcodes and new writer API - New
ZXingQtCamReaderdemo based on QWidgets with proper macOS support
Minor improvements and bug fixes
- QRCode: improve detection rate for circular finder patterns
- DataBar: fix inconsistency / plain spec violation (missing "(01)" prefix)
- EAN/UPC: return 13-digit numbers for UPC-A/E as required by standard
- Improved quiet zone handling for ITF
- QRCode: fix decoding of Model 1 symbols with more than 1 data block
- Content: modify bytesECI() to behave like a standard reader w.r.t. ECIs
- WriteBarcode: automatic GS1PARENS_MODE
- python: add ImageView class and ImageFormat enum as custom memoryview
- python: add experimental support to read_barcodes from QtGui.QImage
- ZXingReader: add experimental -denoise command line option
- Code39: improve detection for 4x difference between wide and narrow and lower quiet-zone requirements
- python: remove 3.9 and add 3.14 packages
- Content: improve auto-detection of charaset/eci info
- make installed binaries relocatable on macOS and Linux
- dotnet: implement IDisposable for the Barcode and Options classes and add XML documentation
- ReaderOptions: new
validateOptionalCheckSumproperty replacing the Code39 and ITF specific ones - ReaderOptions: deprecated the
tryCode39ExtendedModeproperty (use newBarcodeFormat::Code39Ext) - Expose structure append metadata via C API by @magethle in #950
- Add experimental tryDenoise to C API by @magethle in #952
- AZDecoder: minor fixes by @gitlost in #917
- Use 16 KB page size alignment on 64-bit Androids by @markusfisch in #1001
- Remove ZXing path from include path by @fnadeau in #924
- try denoise for android wrapper by @toktarov84 in #1035
- Improvements to Qt/QML interface by @m7913d in #945
Plus a whole bunch of minor fixes and improvements by lots of people.
New Contributors
- @MonkeybreadSoftware made their first contribution in #889
- @mgorny made their first contribution in #902
- @Xie-Long-0 made their first contribution in #933
- @m7913d made their first contribution in #938
- @magethle made their first contribution in #950
- @samuelcolvin made their first contribution in #957
- @HoratiuMarginean made their first contribution in #967
- @maxksielaff made their first contribution in #969
- @wooyechan made their first contribution in #972
- @dantti made their first contribution in #975
- @caolanm made their first contribution in #979
- @brlin-tw made their first contribution in #980
- @nift4 made their first contribution in #988
- @dependabot[bot] made their first contribution in #993
- @wizard97 made their first contribution in #1003
- @chamalgomes made their first contribution in #1014
- @fnadeau made their first contribution in #924
- @toktarov84 made their first contribution in #1035
- @CHC383 made their first contribution in #1041
Sponsors
Thanks to all 'new' and 'old' contributors, named here in random order:
- EUREKAM
- @SAP
- @kurzdigital
- @moonshine-ai
- @somcosoftware
Full Changelog: v2.3.0...v3.0.0-rc1
v2.3.0
Shiny new stuff (more than I was aware of, after all this time...)
- Add support for DX Film Edge read by @Merinorus in #684
- Add support for detecting and reading Aztec Runes by @gormster in #763
- Add reader support for
DataBarLimitedsymbols (sponsored by EUREKAM) - Add C-API in official build (EDIT: unfortunately the default is still off, to enable do
cmake -DZXING_C_API=ON) - Add Kotlin/Native Wrapper by @isning in #719
- Add Rust wrapper based on C-API
- Add .NET wrapper based on C-API
- Introduce new name
BarcodeforResultwhich will be removed in 3.0 - LocalAverage binarizer: re-implement with symmetric threshold interpolation for improved detection of inverted symbols
- cmake: replace
BUILD_...prefix of cmake options withZXING_... - cmake: switch to c++-20 by default for the core library
- ImageView: introduce bounds checks in constructor
- ImageView: Add ImageFormat::LumX for 2-byte grey + alpha input
- ImageFormat: replace 'X' with 'A', e.g. RGBX -> RGBA
- ZXingReader: add -binarizer <local|global|fixed> command line option
- ZXingReader: add -single option to setMaxNumberOfSymbols(1)
- ZXingReader: parse -formats (including 's') command line argument
- ZXingReader: support reading image file from stdin by passing '-'
- android: switch 'namespace' from
zxingcpptozxingcpp.libto fix issue with maven central publication - Python: add support to write
bytesas binary data ZXing::Version()function to query the library version at runtime (useful when dynamically linked)
New experimental API (cmake option -DZXING_EXPERIMENTAL_API=ON)
- New experimental Create+Write API for generating/writing barcodes (will replace MultiFormatWriter)
- New experimental libzint based writer backend
- New
ImageView Barcode::symbol()property - New experimental writer API in python
Minor changes and bug fixes
- Complete ZXIReaderOptions in iOS Wrapper by @markusfisch in #692
- ios: remove initWithFormats initializer by @markusfisch in #723
- cmake: Make build reproducible across different build directories by @EchterAgo in #730
- Release color space after use in iOS wrapper by @markusfisch in #790
- cmake: allow overriding python install directories by @jameshilliard in #842
- Refine MultiFormatReader results filtering and apply C++20
erase_ifby @Doekin in #846 - HRI: update AIs to latest gs1-syntax-dictionary.txt by @gitlost in #880
- android: add linker flag to support flexible page sizes in Android 15 by @ccrowell-kr in #872
- Deprecate
validateITFCheckSum,validateCode39CheckSum,returnCodabarStartEnd - BitHacks: fix random QRCode content on pre-Haswell Windows machines
- DataMatrix: improve detection of near 45ยฐ rotated symbols
- cmake: add /utf-8 to MSVC compile flags
- Barcode: tune operator==() to not split up overly tall linear symbols
- Several ITFReader improvements
- QRDecoder: return some content even in the presence of a checksum error
- DataBar: improve detection rate by incorporating edge-2-edge pattern
- PDF417: prevent wrong position info with right side collapsing to (0,0)
- Python: make sure macOS and 64bit Linux packes on pypi.org support multi-symbol DataMatrix detection (c++20 support)
New Contributors
- @Merinorus made their first contribution in #684
- @isning made their first contribution in #718
- @hha1501 made their first contribution in #747
- @gormster made their first contribution in #763
- @549393092 made their first contribution in #777
- @bindreams made their first contribution in #787
- @johngladp made their first contribution in #808
- @jameshilliard made their first contribution in #842
- @Doekin made their first contribution in #846
- @spageektti made their first contribution in #858
- @stbergmann made their first contribution in #864
- @ccrowell-kr made their first contribution in #872
- @GUIEEN made their first contribution in #877
Sponsors
Thanks a lot for all 'old' and 'new' sponsors, listed here in alphabetical order:
Full Changelog: v2.2.1...v2.3.0
v2.3.0-rc1
Shiny new stuff (more than I was aware of, after all this time...)
- Add support for DX Film Edge read by @Merinorus in #684
- Add support for detecting and reading Aztec Runes by @gormster in #763
- Add reader support for
DataBarLimitedsymbols (sponsored by EUREKAM) - Add C-API in official build
- Add Kotlin/Native Wrapper by @isning in #719
- Add Rust wrapper based on C-API
- Add .NET wrapper based on C-API
- Introduce new name
BarcodeforResultwhich will be removed in 3.0 - LocalAverage binarizer: re-implement with symmetric threshold interpolation for improved detection of inverted symbols
- cmake: replace
BUILD_...prefix of cmake options withZXING_... - cmake: switch to c++-20 by default for the core library
- ImageView: introduce bounds checks in constructor
- ImageView: Add ImageFormat::LumX for 2-byte grey + alpha input
- ImageFormat: replace 'X' with 'A', e.g. RGBX -> RGBA
- ZXingReader: add -binarizer <local|global|fixed> command line option
- ZXingReader: add -single option to setMaxNumberOfSymbols(1)
- ZXingReader: parse -formats (including 's') command line argument
- ZXingReader: support reading image file from stdin by passing '-'
- android: switch 'namespace' from
zxingcpptozxingcpp.libto fix issue with maven central publication - Python: add support to write
bytesas binary data
New experimental API (cmake option -DZXING_EXPERIMENTAL_API=ON)
- New experimental Create+Write API for generating/writing barcodes (will replace MultiFormatWriter)
- New experimental libzint based writer backend
- New
ImageView Barcode::symbol()property - New experimental writer API in python
Minor changes and bug fixes
- Complete ZXIReaderOptions in iOS Wrapper by @markusfisch in #692
- ios: remove initWithFormats initializer by @markusfisch in #723
- cmake: Make build reproducible across different build directories by @EchterAgo in #730
- Release color space after use in iOS wrapper by @markusfisch in #790
- cmake: allow overriding python install directories by @jameshilliard in #842
- Refine MultiFormatReader results filtering and apply C++20
erase_ifby @Doekin in #846 - HRI: update AIs to latest gs1-syntax-dictionary.txt by @gitlost in #880
- android: add linker flag to support flexible page sizes in Android 15 by @ccrowell-kr in #872
- Deprecate
validateITFCheckSum,validateCode39CheckSum,returnCodabarStartEnd - BitHacks: fix random QRCode content on pre-Haswell Windows machines
- DataMatrix: improve detection of near 45ยฐ rotated symbols
- cmake: add /utf-8 to MSVC compile flags
- Barcode: tune operator==() to not split up overly tall linear symbols
- Several ITFReader improvements
- QRDecoder: return some content even in the presence of a checksum error
- DataBar: improve detection rate by incorporating edge-2-edge pattern
- PDF417: prevent wrong position info with right side collapsing to (0,0)
- Python: make sure macOS and 64bit Linux packes on pypi.org support multi-symbol DataMatrix detection (c++20 support)
New Contributors
- @Merinorus made their first contribution in #684
- @isning made their first contribution in #718
- @hha1501 made their first contribution in #747
- @gormster made their first contribution in #763
- @549393092 made their first contribution in #777
- @bindreams made their first contribution in #787
- @johngladp made their first contribution in #808
- @jameshilliard made their first contribution in #842
- @Doekin made their first contribution in #846
- @spageektti made their first contribution in #858
- @stbergmann made their first contribution in #864
- @ccrowell-kr made their first contribution in #872
- @GUIEEN made their first contribution in #877
Sponsors
Thanks a lot for all 'old' and 'new' sponsors, listed here in alphabetical order:
Full Changelog: v2.2.1...v2.3.0
Fix c++ ABI breakage of 2.2.0
I accidentally broke c++ ABI compatibility between 2.1.0 and 2.2.0. This is fixed here. This release is only of relevance for package maintainers caring about ABI stability of MINOR version changes according to semantic versioning. None of the wrappers are effected by this change and hence will not be released as 2.2.1.
DISCLAMER: Unfortunately, it turned out that the above mentioned fix for the c++ ABI can break your build if you have some kind of globally enabled pre-compiled-header setup, like apparently in libreoffice (see #685). In that case, either disable pre-compiled-headers or use 2.2.0.
Full Changelog: v2.2.0...v2.2.1
EDIT: added test_samples.tar.gz containing the test/samples/ subfolder. See this discussion.
v2.2.0
WARNING: I accidentally broke c++ ABI compatibility between 2.1.0 and 2.2.0. This is fixed here. There will likely be a 2.2.1 patch release. If you are packaging this software for distribution, you might want to skip packaging this version or make sure the above patch is applied in your build. For all the wrapper code, this has no impact whatsoever. Please join the discussion if you have comments regarding the situation.
Major Changes
This release is mostly about the Python, Android and iOS wrappers. The latter 2 have changed considerably to have an API that is more in line with each other and with the core c++ library. The changes will most likely break existing app code but set a proper foundation for the future.
-
Python:
- Multithreading Support via GIL by @billmccartney in #616
- Remove numpy requirement, use buffer protocol instead by @EchterAgo in #615
- Support sliced numpy arrays
- Expose return_errors parameter to Python wrapper APIs. by @gregtws in #618
- Expose Result::ecLevel method as python property by @marcoffee in #600
- Build wheels for Python 3.12. by @dainnilsson in #625
-
Android:
- Android wrapper: Modernize build files by @okarmazin in #619
- Fix permissions on Android R+ by @markusfisch in #656
- Android wrapper improvements by @markusfisch in #659
- android: add consumerProguardFiles by @markusfisch in #660
- android: Fix build with NDK 26 by @michaelweghorn in #674
- Build with C++20 (improved DataMatrix detection) by default
- Don't
close()theImageProxyinsideread()anymore, need to do that outside now (this breaks existing code) - Change package name from
com.zxingcppto simplyzxingcpp(breaking change) - publish library on mavenCentral for lowest possible barrier of entry
-
iOS/macOS:
- iOS Wrapper improvements by @benjohnde in #630
- iOS wrapper: Add functionality of encoding binary data into Barcodes by @alexmanzer in #635
- Rename ZXingCppWrapper to ZXingCpp by @alexmanzer in #638
- iOS: Enable CocoaPods by providing a podspec by @benjohnde in #637
- Build with C++20 (improved DataMatrix detection) by default
- ios: specify EC level/margin for generation by @markusfisch in #644
- ios: expose all native result items in wrapper by @markusfisch in #649
- ios: clean up ZXIDecodeHints by @markusfisch in #652
- ios: use a default error text instead of crashing by @markusfisch in #661
- ios: improve exception handling by @markusfisch in #664
- ios: rename
ZXIDecodeHintstoZXIReaderOptions
-
General:
- Rename
DecodeHintstoReaderOptions. The old name is still available for backward API compatibility but deprecated. Since the C-API and the Qt wrapper code are not officially part of the library, they changed without backward compatibility. - WASM: bytes in
ReadResultby @Sec-ant in #588 - DataMatrix: use charset for encoding by @markusfisch in #628
- QRCode: Support QR Code Model1 by @sayzzy-nt in #633
- rMQR Code: Support Rectangular Micro QR Code by @gitlost in #681
- Rename
Minor Changes and Fixes
- Fix QT 6 QML Crash & Enable QML Shape by @LeonnardoVerol in #597
- Python: Fix wrapper build on MSVC not having __cplusplus for BitHacks by @EchterAgo in #613
- Correctly handle supported image formats on Android APIs < 23 by @okarmazin in #622
- Add
DecodeHints.setMaxNumberOfSymbols()to C API by @siiky in #665 - aztec: on decoding check for padding bits after B/S by @gitlost in #671
New Contributors
- @Sec-ant made their first contribution in #588
- @LeonnardoVerol made their first contribution in #597
- @EchterAgo made their first contribution in #613
- @billmccartney made their first contribution in #616
- @gregtws made their first contribution in #618
- @okarmazin made their first contribution in #619
- @alexmanzer made their first contribution in #624
- @dainnilsson made their first contribution in #625
- @benjohnde made their first contribution in #630
- @sayzzy-nt made their first contribution in #633
- @michaelweghorn made their first contribution in #674
Full Changelog: v2.1.0...v2.2.0
v2.1.0
Major Changes
- Considerable performance improvements in linear symbol detection (up to 2x speedup in select use cases of
ReadBarcodes) - QRCode: major improvement in detection of high version symbols (see e.g. here)
- DMDetector: reduce runtime overhead of c++-20 builds by around 50%
- Refactor Python wrapper so the sdist includes the core library code by @stumpylog in #530
- wasm wrapper: add function to reader to scan multiple barcode by @Trim in #567
- Added a C wrapper by @siiky in #553. If you find this useful, please have a look at #583.
- new
BUILD_EXPERIMENTAL_APIcmake option (currently enablingDecodeHints::tryDenoisefeature, see 9bcfdb3)
[EDIT: just noticed that this does not work, see 8202a4e]
Minor Changes
- fix crash when the source image is less than 3 pixels width/height by @liulex in #476
- Android: Enable the saving of images to the phone gallery. by @Sergio- in #483
- WASM wrapper: add symbologyIdentifier into result by @AlexXiong-dev in #576
- CI: build universal2 python module for macos
- Python: compile module with c++20 (position independend DataMatrix support) by default
- Python: improve error reporting
- DMDetector: fix potential dead-lock
- DMDecoder: support 144x144 symbols in legacy and compliant variants
- UPC/EAN: reduce right quiet zone requirement -> fix non-conformant input
- EAN/UPCA: include AddOn in position calculation
- MSVC build option cleanup
- WASM: simplify and cleanup
demo_*.htmlfiles - Updated live web demos to latest code (and setup semi-automatic gh-page creation for the future)
- a bunch of minor bug fixes
Sponsors
Thanks a lot to @Sergio- and @sdcubber for their sponsorship in the past and also to the current sponsors
New Contributors
- @liulex made their first contribution in #476
- @Sergio- made their first contribution in #483
- @FalsinSoft made their first contribution in #484
- @kientux made their first contribution in #507
- @cbm755 made their first contribution in #513
- @stumpylog made their first contribution in #533
- @nmariusp made their first contribution in #554
- @fedormsv made their first contribution in #573
- @AlexXiong-dev made their first contribution in #576
- @siiky made their first contribution in #553
Full Changelog: v2.0.0...v2.1.0
v2.0.0
The most visible change from the client perspective is the removal of all formerly deprecated API, (almost) completing the 'cleanup'. Since I was way too slow with this release to implement a 'cleanish' SemVer release as discussed in #333, I decided to release this 2.0 with SONAME 3. A 3.0 release might bring the major version number back in sync with the SONAME.
Major Changes
- switch to UTF8 based API and remove deprecated UTF16 one (
Result::text()) - remove all API deprecated in 1.4
- Adding a wrapper for iOS by @parallaxe in #337
- new Aztec detector implementation to support arbitrary rotation and position of the symbol
- support multi-symbol detection in Aztec detector
- replace all Qt originated ECI/CharacterSet conversion code with a new implementation provided by @gitlost (libzueci)
- require c++17 to build library and client code
- new
DecodeHints::textMode()andResult::text(TextMode)API to specify howbytesare rendered intotext. - HRI (human readable interpretation) is the new default for the
TextMode(has been for most cases before, but not all) - new
DecodeHits::tryInvert()feature to test for inverted symbols (white on black background)
Minor Changes
- deprecate
TextUtfEncodinghelpers, not required anymore with UTF8 APIs for both reader and writer - support for multi-symbol and arbitrary position detection of DataMatrix symbols when library is built with c++20
- Include version number of QR Code and DataMatrix in Result by @markusfisch in #396
- reduce size of
Resultstruct by about a third - cleanup all license related files (see removal of the Qt code above)
- update links and comments to refer to new github.com/zxing-cpp/zxing-cpp home
- improved Code128 decoder for over/underexposed images
- support python 3.11
- a whole bunch of fixes and minor improvements all over the place
New Contributors
- @khoren93 made their first contribution in #356
- @parallaxe made their first contribution in #337
- @Alex-MSFT made their first contribution in #415
- @Trim made their first contribution in #435
- @zander made their first contribution in #446
- @th1722 made their first contribution in #458
Thanks also to all the 'old' ones! :)
Full Changelog: v1.4.0...v2.0.0