83 lines
3.1 KiB
C++
83 lines
3.1 KiB
C++
/*
|
|
* 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
|