4#ifndef PDF_CHAR_CODE_MAP_H
5#define PDF_CHAR_CODE_MAP_H
8#include "PdfEncodingCommon.h"
12 struct CodePointMapNode;
14 struct PODOFO_API CodeUnitRange final
16 PdfCharCode SrcCodeLo;
18 CodePointSpan DstCodeLo;
22 CodeUnitRange(PdfCharCode srcCodeLo,
unsigned size, CodePointSpan dstCodeLo);
24 PdfCharCode GetSrcCodeHi()
const;
27 struct PODOFO_API CodeUnitRangeInequality
29 using is_transparent = std::true_type;
31 bool operator()(
const CodeUnitRange& lhs,
const PdfCharCode& rhs)
const
33 return lhs.SrcCodeLo < rhs;
35 bool operator()(
const PdfCharCode& lhs,
const CodeUnitRange& rhs)
const
37 return lhs < rhs.SrcCodeLo;
39 bool operator()(
const CodeUnitRange& lhs,
const CodeUnitRange& rhs)
const
41 return lhs.SrcCodeLo < rhs.SrcCodeLo;
45 using CodeUnitRanges = std::set<CodeUnitRange, CodeUnitRangeInequality>;
60 unsigned char CodeSpaceSize;
77 PODOFO_PRIVATE_FRIEND(
class PdfCMapEncodingFactory);
120 bool TryGetNextCharCode(std::string_view::iterator&
it,
134 const PdfEncodingLimits& GetLimits()
const {
return m_Limits; }
136 bool IsEmpty()
const;
140 bool IsTrivialIdentity()
const;
142 std::vector<CodeSpaceRange> GetCodeSpaceRanges()
const;
151 const CodeUnitRanges&
GetRanges()
const {
return m_Ranges; }
163 void reviseCodePointMap();
167 PdfEncodingLimits m_Limits;
168 CodeUnitMap m_Mappings;
169 CodeUnitRanges m_Ranges;
This file should be included as the FIRST file in every header of PoDoFo lib.
A memory owning immutable block of code points, optimized for small segments as up to 3 elements can ...
Definition PdfEncodingCommon.h:135
A bidirectional map from character code units to unspecified code points.
Definition PdfCharCodeMap.h:76
const CodeUnitMap & GetMappings() const
Provides direct mappings.
Definition PdfCharCodeMap.h:147
const CodeUnitRanges & GetRanges() const
Provides range mappings.
Definition PdfCharCodeMap.h:151
Convenient type for char array storage and/or buffer with std::string compatibility.
Definition basetypes.h:35
All classes, functions, types and enums of PoDoFo are members of these namespace.
Definition basetypes.h:13
char32_t codepoint
A convenient typedef for an unspecified codepoint The underlying type is conveniently char32_t so it'...
Definition PdfEncodingCommon.h:127
Represent a range in the "begincodespacerange" section.
Definition PdfCharCodeMap.h:54
A character code unit.
Definition PdfEncodingCommon.h:17