File indexing completed on 2024-05-12 04:01:32

0001 /*
0002     SPDX-FileCopyrightText: 2022 Volker Krause <vkrause@kde.org>
0003     SPDX-License-Identifier: MIT
0004 */
0005 
0006 #include "format_p.h"
0007 
0008 using namespace Prison;
0009 
0010 struct format_map_t {
0011     ZXing::BarcodeFormat zxFormat;
0012     Prison::Format::BarcodeFormat format;
0013 };
0014 
0015 static constexpr const format_map_t format_map[] = {
0016     {ZXing::BarcodeFormat::None, Format::NoFormat},
0017     {ZXing::BarcodeFormat::Aztec, Format::Aztec},
0018     {ZXing::BarcodeFormat::Codabar, Format::Codabar},
0019     {ZXing::BarcodeFormat::Code39, Format::Code39},
0020     {ZXing::BarcodeFormat::Code93, Format::Code93},
0021     {ZXing::BarcodeFormat::Code128, Format::Code128},
0022     {ZXing::BarcodeFormat::DataBar, Format::DataBar},
0023     {ZXing::BarcodeFormat::DataBarExpanded, Format::DataBarExpanded},
0024     {ZXing::BarcodeFormat::DataMatrix, Format::DataMatrix},
0025     {ZXing::BarcodeFormat::EAN8, Format::EAN8},
0026     {ZXing::BarcodeFormat::EAN13, Format::EAN13},
0027     {ZXing::BarcodeFormat::ITF, Format::ITF},
0028     {ZXing::BarcodeFormat::MaxiCode, Format::MaxiCode},
0029     {ZXing::BarcodeFormat::PDF417, Format::PDF417},
0030     {ZXing::BarcodeFormat::QRCode, Format::QRCode},
0031     {ZXing::BarcodeFormat::UPCA, Format::UPCA},
0032     {ZXing::BarcodeFormat::UPCE, Format::UPCE},
0033 };
0034 
0035 ZXing::BarcodeFormats Format::toZXing(Format::BarcodeFormats formats)
0036 {
0037     ZXing::BarcodeFormats f;
0038     for (auto m : format_map) {
0039         if (m.format & formats) {
0040             f |= m.zxFormat;
0041         }
0042     }
0043     return f;
0044 }
0045 
0046 Format::BarcodeFormat Format::toFormat(ZXing::BarcodeFormat format)
0047 {
0048     const auto it = std::find_if(std::begin(format_map), std::end(format_map), [format](auto m) {
0049         return m.zxFormat == format;
0050     });
0051 
0052     return it != std::end(format_map) ? (*it).format : Format::NoFormat;
0053 }
0054 
0055 #include "moc_format.cpp"