Mercurial > hgrepos > Python2 > PyMuPDF
comparison mupdf-source/thirdparty/zxing-cpp/core/src/CharacterSet.cpp @ 2:b50eed0cc0ef upstream
ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
The directory name has changed: no version number in the expanded directory now.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Mon, 15 Sep 2025 11:43:07 +0200 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 1:1d09e1dec1d9 | 2:b50eed0cc0ef |
|---|---|
| 1 /* | |
| 2 * Copyright 2016 Nu-book Inc. | |
| 3 * Copyright 2016 ZXing authors | |
| 4 */ | |
| 5 // SPDX-License-Identifier: Apache-2.0 | |
| 6 | |
| 7 #include "CharacterSet.h" | |
| 8 | |
| 9 #include "ZXAlgorithms.h" | |
| 10 | |
| 11 #include <algorithm> | |
| 12 #include <cctype> | |
| 13 | |
| 14 namespace ZXing { | |
| 15 | |
| 16 struct CharacterSetName | |
| 17 { | |
| 18 std::string_view name; | |
| 19 CharacterSet cs; | |
| 20 }; | |
| 21 | |
| 22 static CharacterSetName NAME_TO_CHARSET[] = { | |
| 23 {"Cp437", CharacterSet::Cp437}, | |
| 24 {"ISO-8859-1", CharacterSet::ISO8859_1}, | |
| 25 {"ISO-8859-2", CharacterSet::ISO8859_2}, | |
| 26 {"ISO-8859-3", CharacterSet::ISO8859_3}, | |
| 27 {"ISO-8859-4", CharacterSet::ISO8859_4}, | |
| 28 {"ISO-8859-5", CharacterSet::ISO8859_5}, | |
| 29 {"ISO-8859-6", CharacterSet::ISO8859_6}, | |
| 30 {"ISO-8859-7", CharacterSet::ISO8859_7}, | |
| 31 {"ISO-8859-8", CharacterSet::ISO8859_8}, | |
| 32 {"ISO-8859-9", CharacterSet::ISO8859_9}, | |
| 33 {"ISO-8859-10", CharacterSet::ISO8859_10}, | |
| 34 {"ISO-8859-11", CharacterSet::ISO8859_11}, | |
| 35 {"ISO-8859-13", CharacterSet::ISO8859_13}, | |
| 36 {"ISO-8859-14", CharacterSet::ISO8859_14}, | |
| 37 {"ISO-8859-15", CharacterSet::ISO8859_15}, | |
| 38 {"ISO-8859-16", CharacterSet::ISO8859_16}, | |
| 39 {"SJIS", CharacterSet::Shift_JIS}, | |
| 40 {"Shift_JIS", CharacterSet::Shift_JIS}, | |
| 41 {"Cp1250", CharacterSet::Cp1250}, | |
| 42 {"windows-1250",CharacterSet::Cp1250}, | |
| 43 {"Cp1251", CharacterSet::Cp1251}, | |
| 44 {"windows-1251",CharacterSet::Cp1251}, | |
| 45 {"Cp1252", CharacterSet::Cp1252}, | |
| 46 {"windows-1252",CharacterSet::Cp1252}, | |
| 47 {"Cp1256", CharacterSet::Cp1256}, | |
| 48 {"windows-1256",CharacterSet::Cp1256}, | |
| 49 {"UTF-16BE", CharacterSet::UTF16BE}, | |
| 50 {"UTF-16LE", CharacterSet::UTF16LE}, | |
| 51 {"UTF-32BE", CharacterSet::UTF32BE}, | |
| 52 {"UTF-32LE", CharacterSet::UTF32LE}, | |
| 53 {"UnicodeBigUnmarked", CharacterSet::UTF16BE}, | |
| 54 {"UnicodeBig", CharacterSet::UTF16BE}, | |
| 55 {"UTF-8", CharacterSet::UTF8}, | |
| 56 {"ASCII", CharacterSet::ASCII}, | |
| 57 {"US-ASCII", CharacterSet::ASCII}, | |
| 58 {"Big5", CharacterSet::Big5}, | |
| 59 {"GB2312", CharacterSet::GB2312}, | |
| 60 {"GB18030", CharacterSet::GB18030}, | |
| 61 {"EUC-CN", CharacterSet::GB18030}, | |
| 62 {"GBK", CharacterSet::GB18030}, | |
| 63 {"EUC-KR", CharacterSet::EUC_KR}, | |
| 64 {"BINARY", CharacterSet::BINARY}, | |
| 65 }; | |
| 66 | |
| 67 static std::string NormalizeName(std::string_view sv) | |
| 68 { | |
| 69 std::string str(sv); | |
| 70 std::transform(str.begin(), str.end(), str.begin(), [](char c) { return (char)std::tolower(c); }); | |
| 71 #ifdef __cpp_lib_erase_if | |
| 72 std::erase_if(str, [](char c) { return Contains("_-[] ", c); }); | |
| 73 #else | |
| 74 str.erase(std::remove_if(str.begin(), str.end(), [](char c) { return Contains("_-[] ", c); }), str.end()); | |
| 75 #endif | |
| 76 return str; | |
| 77 } | |
| 78 | |
| 79 CharacterSet CharacterSetFromString(std::string_view name) | |
| 80 { | |
| 81 auto i = FindIf(NAME_TO_CHARSET, [str = NormalizeName(name)](auto& v) { return NormalizeName(v.name) == str; }); | |
| 82 return i == std::end(NAME_TO_CHARSET) ? CharacterSet::Unknown : i->cs; | |
| 83 } | |
| 84 | |
| 85 std::string ToString(CharacterSet cs) | |
| 86 { | |
| 87 auto i = FindIf(NAME_TO_CHARSET, [cs](auto& v) { return v.cs == cs; }); | |
| 88 return i == std::end(NAME_TO_CHARSET) ? "" : std::string(i->name); | |
| 89 } | |
| 90 | |
| 91 } // namespace ZXing |
