Files
ANSLibs/QRCode/datamatrix/DMVersion.cpp

83 lines
3.1 KiB
C++
Raw Normal View History

/*
* Copyright 2016 Nu-book Inc.
* Copyright 2016 ZXing authors
*/
// SPDX-License-Identifier: Apache-2.0
#include "DMVersion.h"
namespace ZXing::DataMatrix {
const Version* VersionForDimensions(int height, int width)
{
if ((height & 0x01) != 0 || (width & 0x01) != 0 || height < 8 || height > 144)
return nullptr;
/**
* See ISO 16022:2006 5.5.1 Table 7
* See ISO 21471:2020 (DMRE) 5.5.1 Table 7
*/
static const Version allVersions[] = {
// clang-format off
{1, 10, 10, 8, 8, {5, {{1, 3 }, {0, 0}}}},
{2, 12, 12, 10, 10, {7, {{1, 5 }, {0, 0}}}},
{3, 14, 14, 12, 12, {10, {{1, 8 }, {0, 0}}}},
{4, 16, 16, 14, 14, {12, {{1, 12 }, {0, 0}}}},
{5, 18, 18, 16, 16, {14, {{1, 18 }, {0, 0}}}},
{6, 20, 20, 18, 18, {18, {{1, 22 }, {0, 0}}}},
{7, 22, 22, 20, 20, {20, {{1, 30 }, {0, 0}}}},
{8, 24, 24, 22, 22, {24, {{1, 36 }, {0, 0}}}},
{9, 26, 26, 24, 24, {28, {{1, 44 }, {0, 0}}}},
{10, 32, 32, 14, 14, {36, {{1, 62 }, {0, 0}}}},
{11, 36, 36, 16, 16, {42, {{1, 86 }, {0, 0}}}},
{12, 40, 40, 18, 18, {48, {{1, 114}, {0, 0}}}},
{13, 44, 44, 20, 20, {56, {{1, 144}, {0, 0}}}},
{14, 48, 48, 22, 22, {68, {{1, 174}, {0, 0}}}},
{15, 52, 52, 24, 24, {42, {{2, 102}, {0, 0}}}},
{16, 64, 64, 14, 14, {56, {{2, 140}, {0, 0}}}},
{17, 72, 72, 16, 16, {36, {{4, 92 }, {0, 0}}}},
{18, 80, 80, 18, 18, {48, {{4, 114}, {0, 0}}}},
{19, 88, 88, 20, 20, {56, {{4, 144}, {0, 0}}}},
{20, 96, 96, 22, 22, {68, {{4, 174}, {0, 0}}}},
{21, 104, 104, 24, 24, {56, {{6, 136}, {0, 0}}}},
{22, 120, 120, 18, 18, {68, {{6, 175}, {0, 0}}}},
{23, 132, 132, 20, 20, {62, {{8, 163}, {0, 0}}}},
{24, 144, 144, 22, 22, {62, {{8, 156}, {2, 155}}}},
{25, 8, 18, 6, 16, {7, {{1, 5 }, {0, 0}}}},
{26, 8, 32, 6, 14, {11, {{1, 10 }, {0, 0}}}},
{27, 12, 26, 10, 24, {14, {{1, 16 }, {0, 0}}}},
{28, 12, 36, 10, 16, {18, {{1, 22 }, {0, 0}}}},
{29, 16, 36, 14, 16, {24, {{1, 32 }, {0, 0}}}},
{30, 16, 48, 14, 22, {28, {{1, 49 }, {0, 0}}}},
// DMRE
{31, 8, 48, 6, 22, {15, {{1, 18 }, {0, 0}}}},
{32, 8, 64, 6, 14, {18, {{1, 24 }, {0, 0}}}},
{33, 8, 80, 6, 18, {22, {{1, 32 }, {0, 0}}}},
{34, 8, 96, 6, 22, {28, {{1, 38 }, {0, 0}}}},
{35, 8, 120, 6, 18, {32, {{1, 49 }, {0, 0}}}},
{36, 8, 144, 6, 22, {36, {{1, 63 }, {0, 0}}}},
{37, 12, 64, 10, 14, {27, {{1, 43 }, {0, 0}}}},
{38, 12, 88, 10, 20, {36, {{1, 64 }, {0, 0}}}},
{39, 16, 64, 14, 14, {36, {{1, 62 }, {0, 0}}}},
{40, 20, 36, 18, 16, {28, {{1, 44 }, {0, 0}}}},
{41, 20, 44, 18, 20, {34, {{1, 56 }, {0, 0}}}},
{42, 20, 64, 18, 14, {42, {{1, 84 }, {0, 0}}}},
{43, 22, 48, 20, 22, {38, {{1, 72 }, {0, 0}}}},
{44, 24, 48, 22, 22, {41, {{1, 80 }, {0, 0}}}},
{45, 24, 64, 22, 14, {46, {{1, 108}, {0, 0}}}},
{46, 26, 40, 24, 18, {38, {{1, 70 }, {0, 0}}}},
{47, 26, 48, 24, 22, {42, {{1, 90 }, {0, 0}}}},
{48, 26, 64, 24, 14, {50, {{1, 118}, {0, 0}}}},
// clang-format on
};
for (auto& version : allVersions)
if (version.symbolHeight == height && version.symbolWidth == width)
return &version;
return nullptr;
}
} // namespace ZXing::DataMatrix