Support binary content in QR codes

Volker Krause requested to merge work/qr-binary-content into master

This requires a larger rework of the currently purely textual API, which only works with binary content for other formats by relying on Latin1 encoding not damaging binary data. For QR this doesn't work though, as unlike any other format, QR has built-in support for a subset of Unicode, and therefore non-Latin1 content does not imply generic binary encoding there.

Therefore both the C++ and QML API now can take either a string or a byte array as input, and each barcode format needs to check which one to use and convert it according to its own needs.

For the simple 1D formats only supporting an ASCII subset, this doesn't really make a difference, for the complex ones a number of extra tests have been added to protect against regressions.

The practical need for binary QR code content comes from Indian vaccination certificates which currently get severely corrupted.

cc @sune @nicolasfella

Merge request reports