zxing-cpp

C++ port of ZXing

APACHE-2.0 License

Downloads
138.6K
Stars
1.1K
Committers
64

Bot releases are visible (Hide)

zxing-cpp - Fix c++ ABI breakage of 2.2.0 Latest Release

Published by axxel 10 months ago

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: https://github.com/zxing-cpp/zxing-cpp/compare/v2.2.0...v2.2.1

zxing-cpp - v2.2.0

Published by axxel 11 months ago

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.

Minor Changes and Fixes

New Contributors

Full Changelog: https://github.com/zxing-cpp/zxing-cpp/compare/v2.1.0...v2.2.0

zxing-cpp - v2.1.0

Published by axxel over 1 year ago

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 https://github.com/zxing-cpp/zxing-cpp/pull/530
  • wasm wrapper: add function to reader to scan multiple barcode by @Trim in https://github.com/zxing-cpp/zxing-cpp/pull/567
  • Added a C wrapper by @siiky in https://github.com/zxing-cpp/zxing-cpp/pull/553. If you find this useful, please have a look at #583.
  • new BUILD_EXPERIMENTAL_API cmake option (currently enabling DecodeHints::tryDenoise feature, see 9bcfdb3637714af9419bae99dd4c48a12625ab1e)
    [EDIT: just noticed that this does not work, see 8202a4e13a65de3a2b459d121af7b02cc7d2e9b5]

Minor Changes

  • fix crash when the source image is less than 3 pixels width/height by @liulex in https://github.com/zxing-cpp/zxing-cpp/pull/476
  • Android: Enable the saving of images to the phone gallery. by @Sergio- in https://github.com/zxing-cpp/zxing-cpp/pull/483
  • WASM wrapper: add symbologyIdentifier into result by @AlexXiong-dev in https://github.com/zxing-cpp/zxing-cpp/pull/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_*.html files
  • 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

Full Changelog: https://github.com/zxing-cpp/zxing-cpp/compare/v2.0.0...v2.1.0

zxing-cpp - v2.0.0

Published by axxel almost 2 years ago

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 https://github.com/zxing-cpp/zxing-cpp/pull/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() and Result::text(TextMode) API to specify how bytes are rendered into text.
  • 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 TextUtfEncoding helpers, 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 https://github.com/zxing-cpp/zxing-cpp/pull/396
  • reduce size of Result struct 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

Thanks also to all the 'old' ones! :)

Full Changelog: https://github.com/zxing-cpp/zxing-cpp/compare/v1.4.0...v2.0.0

zxing-cpp - Pre-2.0 API cleanup time

Published by axxel over 2 years ago

Note: this is an intermediary release on the way to 2.0. This code is (supposed to be) API compatible (via the ReadBarcode.h interface) with v1.3.0 but contains quite a few additional deprecations. It still has SO number 1, which is as wrong as it was for release v1.3.0 and it is not ABI compatible with 1.3 either. 2.0 will be basically 1.4 but with all deprecated API removed and the final fix for #333.

Main changes

  • Reader support for Micro QRCode by @corbers
  • prepared switch from std::wstring based utf16 to std::string based utf8 results, use new ZX_USE_UTF8 macro to transition to the upcoming 2.0 API
  • much improved 'binary' data support via new Result::bytes() API, see #334 for a detailed background discussion.
  • new Result::contentType() API returning information about the type of content (like text vs. binary, etc.)
  • better standards conformance with respect to ECI handling, see Results::bytesECI()
  • support for proper ECI handling across structured append symbols (see MergeStructuredAppendResults())
  • new Result::error() API with improved error handling, see also DecodeHints::returnErrors()
  • removed all internal header files from the installed set, so only the ReadBarcode.h based APIs are supported from here on out
  • removed all sample images from the 'source' distribution zip/tar balls (much reduced size)
  • python read_barcode returns None if no symbol was found (might break existing code if not checked for None before)

Minor changes

  • lots of little bug fixes
  • smaller per process runtime memory (thanks to @vkrause)
  • clang-13 and gcc-13 compilation fixes
  • ported Qt example code to Qt6
  • experimental multi-symbol detection support for DataMatrix when compiled with c++-20
  • fix error in multi-symbol detection of linear codes (sometimes reported 1 symbol as 2)
  • new -bytes and -errors options in ZXingReader
  • support tryRotate for PDF417 symbols

Full Changelog: https://github.com/nu-book/zxing-cpp/compare/v1.3.0...v1.4.0

zxing-cpp - Multi-Barcode + Multi-Resolution

Published by axxel over 2 years ago

DISCLAIMER: a note for downstream package maintainers: as discussed in #333 this release should have been named 2.0 not 1.3. Please don't package this release until the issue is resolved.

The major new features:

  • Multi-barcode reading with the new std::vector<Result> ReadBardcodes(...) function. Does not work for Aztec, DataMatrix and Maxicode, yet.
  • Multi-resolution scanning that can automatically downscale the input to substantially increase the detection rate on high resolution scans, see DecodeHints::tryDownscale, currently only enabled in the ReadBardcodes function
  • New Result::symbologyIdentifier property (thanks to @gitlost)
  • Updated and improved android wrapper (thanks to @markusfisch)

Worth mentioning:

  • Most deprecated APIs from last release were removed (will likely break your build if you still have deprecation warnings with 1.2.0)
  • New Result::lineCount and DecodeHints::minLineCount properties to improve reliability of 1D code reading
  • New Result::isMirrored property (works for QRCode, PDF417, DataMatrix)
  • Improved FNC1 handling and deprecation of DecodeHints::assumeGS1
  • Lots of small fixes all over the place
  • Drop in-tree copy of stb image library
  • New OpenCV example code
  • QRCode reading improvements
  • Python 3.10 support

This includes around 200 commits including those of 11 new contributors.

Full Changelog: https://github.com/nu-book/zxing-cpp/compare/v1.2.0...v1.3.0

zxing-cpp - There is so much stuff...

Published by axxel over 3 years ago

There have been nearly 800 commits that touched about 10k lines of code since the last release.

Here are the highlights/major changes:

  • switch to C++-17 (client code can still be compiled with a C++-11 compiler)
  • switch to the reimplemented 1D detectors (about 5x faster than old ones in false-positive use case)
  • deprecate the use of ResultMetadata, see ZXingReader.cpp as an example
  • completely new Android wrapper library with CameraX support, integrated build system and demo app
  • a lot faster and more capable isPure detection for all 2D codes
  • completely new QRCode reader (faster, better support for rotated symbols)
  • new BarcodeFormat names (old ones still available but deprecated)
  • new ZXingQtCamReader demo app based on QtMultimedia and QtQuick
  • reduced false positive rate for UPC/EAN barcodes + improved Add-On symbol handling
  • 20% faster ReedSolomon error correcting
  • PDF417 is faster and supports flipped symbols
  • DataMatrix: added DMRE support
  • much improved python wrapper incl. PyPI module for easy pip installation (thanks to antoinehumbert)
  • proper ECI handling in all 2D barcodes (thanks to gitlost)
  • added Structured Append support for DataMatrix, Aztec and MaxiCode (thanks to gitlost)

Note: The next release will drop support for a number of deprecated APIs. Please update your code and fix all deprecation warnings now.

zxing-cpp - Final Final C++14 based release collecting a number of fixes

Published by axxel about 4 years ago

Since the switch to C++17 got delayed and a bunch of fixes and small improvements have piled up since the "Final C++14 based" release, here is the final-final pre C++17 release. This includes WinRT build improvements, Android and python wrapper fixes and pkgconfig fixes.

zxing-cpp - Final C++-14 based release with major new APIs

Published by axxel about 4 years ago

The purpose of this release is mainly to tag the last version that can be compiled with a C++-14 compiler.

There have been a lot of changes under the hood and to the public facing API. Effort has been made to make sure the client code still compiles without changes. If you encounter deprecation warnings from your compiler, please update you code as those outdated APIs will be removed in a future version.

Here are the highlights of the changes:

  • A new and (hopefully) 'future proof' single ReadBarcode entry point into the decoding functionality.
  • The LuminanceSource based API is now deprecated but still compiles.
  • A new BarcodeFormats flag type to specify the set of barcodes to look for.
  • Deprecated unrelyable Result::resultPoints in favor of well defined Result::position.
  • Deprecated Result::metadata() -> ORIENTATION in favor of Result::orientation.
  • New Binarizer enum in DecodeHints to specify the binarizer for the ReadBarcode API.
  • New DecodeHints::isPure property to speed up detection for 'pure' input use-cases.
  • New 'unified' CMake structure to build (most) of the project from the top-level project.
  • New ZXingReader and ZXingWriter example code also meant for distributing.
  • New CI system based on gitub actions to continuously test on Windows/macOS/Linux/emscripten.
  • New simplified and consistent Python API (breaking change)
  • ReedSolomon error detection code 2x speedup.
  • Enable basic MaxiCode support.
  • Fix coutry-code metatdata decoding for UPC/EAN codes.
  • Slightly improved QRCode detection for rotated symbols.
  • Faster PDF417 decoder.
  • Lots of minor code readability and general cleanup improvements.
zxing-cpp -

Published by huycn almost 5 years ago

  • Improve DataMatrix encoder
  • Add interface to simplify basic usage
  • WASM API to support pixels array as input
  • Few minor bug fixes
zxing-cpp -

Published by huycn about 5 years ago

  • Bug fixes from upstream XZing project
  • Many performance improvements for 1D readers
  • More meta-data exported when reading specific format
  • Minor bug fixes and improvements for corner cases
zxing-cpp -

Published by huycn over 5 years ago

  • Add Python binding
  • Add more options to BarcodeReader for WinRT
zxing-cpp -

Published by huycn over 5 years ago

  • Fix build errors with Visual Studio 2019
  • Export correctly code count for structured append QR Code
zxing-cpp - Few bug fixes and improvements

Published by huycn over 5 years ago

  • Fix interleaved 2 of 5 with bearer bar not recognized
  • Fix build issue with GCC on Linux
  • Add version defines
zxing-cpp - Support for wasm + few bug fixes

Published by huycn almost 6 years ago

  • Add CMake file for building as WebAssembly module
  • UBSAN: fix div-by-zero
  • Fix a DataMatrix encoder with wrong encoding
  • ODCode93Writer: fix bug in error message assembly
zxing-cpp -

Published by huycn almost 6 years ago

Fix issue with floating point precision in release build with gcc; Fix a potential bug in QRCode decoder

zxing-cpp -

Published by huycn almost 6 years ago

Merge latest bug fixes and improvements from upstream ZXing project

zxing-cpp -

Published by huycn almost 6 years ago