Mercurial > hgrepos > Python2 > PyMuPDF
view mupdf-source/thirdparty/zxing-cpp/core/src/Content.h @ 46:7ee69f120f19 default tip
>>>>> tag v1.26.5+1 for changeset b74429b0f5c4
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Sat, 11 Oct 2025 17:17:30 +0200 |
| parents | b50eed0cc0ef |
| children |
line wrap: on
line source
/* * Copyright 2022 Axel Waggershauser */ // SPDX-License-Identifier: Apache-2.0 #pragma once #include "ByteArray.h" #include "CharacterSet.h" #include "ReaderOptions.h" #include <string> #include <vector> namespace ZXing { enum class ECI : int; enum class ContentType { Text, Binary, Mixed, GS1, ISO15434, UnknownECI }; enum class AIFlag : char { None, GS1, AIM }; std::string ToString(ContentType type); struct SymbologyIdentifier { char code = 0, modifier = 0, eciModifierOffset = 0; AIFlag aiFlag = AIFlag::None; std::string toString(bool hasECI = false) const { return code ? ']' + std::string(1, code) + static_cast<char>(modifier + eciModifierOffset * hasECI) : std::string(); } }; class Content { template <typename FUNC> void ForEachECIBlock(FUNC f) const; void switchEncoding(ECI eci, bool isECI); std::string render(bool withECI) const; public: struct Encoding { ECI eci; int pos; }; ByteArray bytes; std::vector<Encoding> encodings; SymbologyIdentifier symbology; CharacterSet defaultCharset = CharacterSet::Unknown; bool hasECI = false; Content(); Content(ByteArray&& bytes, SymbologyIdentifier si); void switchEncoding(ECI eci) { switchEncoding(eci, true); } void switchEncoding(CharacterSet cs); void reserve(int count) { bytes.reserve(bytes.size() + count); } void push_back(uint8_t val) { bytes.push_back(val); } void append(const std::string& str) { bytes.insert(bytes.end(), str.begin(), str.end()); } void append(const ByteArray& ba) { bytes.insert(bytes.end(), ba.begin(), ba.end()); } void append(const Content& other); void operator+=(char val) { push_back(val); } void operator+=(const std::string& str) { append(str); } void erase(int pos, int n); void insert(int pos, const std::string& str); bool empty() const { return bytes.empty(); } bool canProcess() const; std::string text(TextMode mode) const; std::wstring utfW() const; // utf16 or utf32 depending on the platform, i.e. on size_of(wchar_t) std::string utf8() const { return render(false); } ByteArray bytesECI() const; CharacterSet guessEncoding() const; ContentType type() const; }; } // ZXing
