v1.6.0
What has changed
- [Enhancement] Huge performance (runtime and memory) optimization in
QrCodeGenerator(PRs #509, #519, #520, #521, #524, #530, #532) - [Enhancement] Big performance (runtime and memory) optimization in
BitmapByteQRCode(PR #566) - [Enhancement] Added ECC level mismatch detection when using payloads from payload generator (PR #526)
- [Enhancement] Implementation of encoding constraints (EccLevel, EciMode) in SwissQRCode and GiroCode payloads to enforce that the payloads comply with the specifications of the respective standards (PR #533)
- [Enhancement] Added support for trimming (
IsTrimmableproject property) (PR #539) - [Enhancement] Added XML comments (code documentation) to all public members (PR #561)
- [Enhancement] Added new/third overload to
PngByteQRCodethat accepts colors as System.Drawing.Color (PR #564) - [Enhancement] Updated the Bitmap header from BITMAPCOREHEADER to BITMAPINFOHEADER in
BitmapByteQRCode(PR #565) - [Refactoring] Restructured
QRCodeGeneratorclasses into separate files and partially restructured code for better manageability (PRs #516, #528, #531) - [Refactoring] Restructured
PayloadGeneratorclasses into separate files for better manageability (PR #556) - [Refactoring] Restructured the
PayloadGeneratorTestsinto separate files for better manageability (PR #569) - [Refactoring] Removed category attribute from tests as it is no longer used/useful (PR #568)
- [Refactoring] Improved code documentation by adding comments to generator methods (PR #517)
- [Refactoring] Refactored and cleaned up the (needed for backwards compatibility) Stream- and String extension methods (PR #534)
- [Refactoring] Added nullable reference type (NRT) metadata to all possible members (PR #559)
- [Refactoring] Removed not longer necessary framework overrides in project files (PR #560)
- [Refactoring] Reformatted code and added
dotnet formattoolchain (PR #562) - [Note] Added performance benchmark project to ensure that future enhancement don't affect performance negatively (PRs #508, #510)
Breaking Changes
- If the function
GenerateQrCode(payload, eccLevel)is called and the payload has set an ECC level "X" that differs from the ECC level from the parametereccLevel, the QRCoder now throws anArgumentOutOfRangeExceptionto prevent the contract violation in the context of the payload. (Previously, the EccLevel was taken fromeccLevelparameter without further checking, which in the worst case could lead to unreadable payloads.)
Deprecations
- class
QRCoder.Extensions.CustomExtensions - class
QRCoder.Extensions.StringValueAttribute
NuGet Package (QRCoder): https://www.nuget.org/packages/QRCoder/1.6.0
NuGet Package (QRCoder.Xaml): https://www.nuget.org/packages/QRCoder.Xaml/1.6.0
Full Release Notes: https://github.com/codebude/QRCoder/wiki/Release-notes
Full Changelog: v1.5.1...v1.6.0
Special thanks for PRs and support goes to: @Shane32, @gfoidl, @csturm83, @Apflkuacha