| OLD | NEW |
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 #ifndef CORE_SRC_FPDFAPI_FPDF_FONT_FONT_INT_H_ | 6 #ifndef CORE_SRC_FPDFAPI_FPDF_FONT_FONT_INT_H_ |
| 7 #define CORE_SRC_FPDFAPI_FPDF_FONT_FONT_INT_H_ | 7 #define CORE_SRC_FPDFAPI_FPDF_FONT_FONT_INT_H_ |
| 8 | 8 |
| 9 typedef void* FXFT_Library; | 9 typedef void* FXFT_Library; |
| 10 class CPDF_CMapManager | 10 class CPDF_CMapManager { |
| 11 { | 11 public: |
| 12 public: | 12 CPDF_CMapManager(); |
| 13 CPDF_CMapManager(); | 13 ~CPDF_CMapManager(); |
| 14 ~CPDF_CMapManager(); | 14 void* GetPackage(FX_BOOL bPrompt); |
| 15 void*» » » » GetPackage(FX_BOOL bPrompt); | 15 CPDF_CMap* GetPredefinedCMap(const CFX_ByteString& name, FX_BOOL bPrompt); |
| 16 CPDF_CMap*» » » » GetPredefinedCMap(const CFX_ByteString&
name, FX_BOOL bPrompt); | 16 CPDF_CID2UnicodeMap* GetCID2UnicodeMap(int charset, FX_BOOL bPrompt); |
| 17 CPDF_CID2UnicodeMap*» GetCID2UnicodeMap(int charset, FX_BOOL bPrompt); | 17 void ReloadAll(); |
| 18 void» » » » » ReloadAll(); | 18 |
| 19 private: | 19 private: |
| 20 CPDF_CMap*» » » » LoadPredefinedCMap(const CFX_ByteString&
name, FX_BOOL bPrompt); | 20 CPDF_CMap* LoadPredefinedCMap(const CFX_ByteString& name, FX_BOOL bPrompt); |
| 21 CPDF_CID2UnicodeMap*» LoadCID2UnicodeMap(int charset, FX_BOOL bPrompt)
; | 21 CPDF_CID2UnicodeMap* LoadCID2UnicodeMap(int charset, FX_BOOL bPrompt); |
| 22 void» » » » » DropAll(FX_BOOL bReload); | 22 void DropAll(FX_BOOL bReload); |
| 23 FX_BOOL» » » » » m_bPrompted; | 23 FX_BOOL m_bPrompted; |
| 24 CFX_MapByteStringToPtr» m_CMaps; | 24 CFX_MapByteStringToPtr m_CMaps; |
| 25 CPDF_CID2UnicodeMap*» m_CID2UnicodeMaps[6]; | 25 CPDF_CID2UnicodeMap* m_CID2UnicodeMaps[6]; |
| 26 }; | 26 }; |
| 27 class CPDF_FontGlobals | 27 class CPDF_FontGlobals { |
| 28 { | 28 public: |
| 29 public: | 29 CPDF_FontGlobals(); |
| 30 CPDF_FontGlobals(); | 30 ~CPDF_FontGlobals(); |
| 31 ~CPDF_FontGlobals(); | 31 void ClearAll(); |
| 32 void» » » » ClearAll(); | 32 void Clear(void* key); |
| 33 void» » » » Clear(void* key); | 33 CPDF_Font* Find(void* key, int index); |
| 34 CPDF_Font*» » » Find(void* key, int index); | 34 void Set(void* key, int index, CPDF_Font* pFont); |
| 35 void» » » » Set(void* key, int index, CPDF_Font* pFo
nt); | 35 CPDF_CMapManager m_CMapManager; |
| 36 CPDF_CMapManager» m_CMapManager; | 36 struct { |
| 37 struct { | 37 const struct FXCMAP_CMap* m_pMapList; |
| 38 const struct FXCMAP_CMap*» m_pMapList; | 38 int m_Count; |
| 39 int» » » » m_Count; | 39 } m_EmbeddedCharsets[NUMBER_OF_CIDSETS]; |
| 40 } m_EmbeddedCharsets[NUMBER_OF_CIDSETS]; | 40 struct { |
| 41 struct { | 41 const FX_WORD* m_pMap; |
| 42 const FX_WORD*» m_pMap; | 42 int m_Count; |
| 43 int» » » » m_Count; | 43 } m_EmbeddedToUnicodes[NUMBER_OF_CIDSETS]; |
| 44 } m_EmbeddedToUnicodes[NUMBER_OF_CIDSETS]; | 44 |
| 45 private: | 45 private: |
| 46 CFX_MapPtrToPtr» » m_pStockMap; | 46 CFX_MapPtrToPtr m_pStockMap; |
| 47 uint8_t*» » » m_pContrastRamps; | 47 uint8_t* m_pContrastRamps; |
| 48 }; | 48 }; |
| 49 struct _CMap_CodeRange { | 49 struct _CMap_CodeRange { |
| 50 int»» » m_CharSize; | 50 int m_CharSize; |
| 51 uint8_t» » m_Lower[4]; | 51 uint8_t m_Lower[4]; |
| 52 uint8_t» » m_Upper[4]; | 52 uint8_t m_Upper[4]; |
| 53 }; | 53 }; |
| 54 class CPDF_CMapParser | 54 class CPDF_CMapParser { |
| 55 { | 55 public: |
| 56 public: | 56 CPDF_CMapParser(); |
| 57 CPDF_CMapParser(); | 57 ~CPDF_CMapParser() {} |
| 58 ~CPDF_CMapParser() {} | 58 FX_BOOL Initialize(CPDF_CMap*); |
| 59 FX_BOOL» Initialize(CPDF_CMap*); | 59 void ParseWord(const CFX_ByteStringC& str); |
| 60 void» ParseWord(const CFX_ByteStringC& str); | 60 CFX_BinaryBuf m_AddMaps; |
| 61 CFX_BinaryBuf» m_AddMaps; | 61 |
| 62 private: | 62 private: |
| 63 CPDF_CMap*» m_pCMap; | 63 CPDF_CMap* m_pCMap; |
| 64 int»» » » m_Status; | 64 int m_Status; |
| 65 int»» » » m_CodeSeq; | 65 int m_CodeSeq; |
| 66 FX_DWORD» » m_CodePoints[4]; | 66 FX_DWORD m_CodePoints[4]; |
| 67 CFX_ArrayTemplate<_CMap_CodeRange>» m_CodeRanges; | 67 CFX_ArrayTemplate<_CMap_CodeRange> m_CodeRanges; |
| 68 CFX_ByteString» m_Registry, m_Ordering, m_Supplement; | 68 CFX_ByteString m_Registry, m_Ordering, m_Supplement; |
| 69 CFX_ByteString» m_LastWord; | 69 CFX_ByteString m_LastWord; |
| 70 }; | 70 }; |
| 71 #define CIDCODING_UNKNOWN» 0 | 71 #define CIDCODING_UNKNOWN 0 |
| 72 #define CIDCODING_GB» » 1 | 72 #define CIDCODING_GB 1 |
| 73 #define CIDCODING_BIG5» » 2 | 73 #define CIDCODING_BIG5 2 |
| 74 #define CIDCODING_JIS» » 3 | 74 #define CIDCODING_JIS 3 |
| 75 #define CIDCODING_KOREA»» 4 | 75 #define CIDCODING_KOREA 4 |
| 76 #define CIDCODING_UCS2» » 5 | 76 #define CIDCODING_UCS2 5 |
| 77 #define CIDCODING_CID» » 6 | 77 #define CIDCODING_CID 6 |
| 78 #define CIDCODING_UTF16»» 7 | 78 #define CIDCODING_UTF16 7 |
| 79 class CPDF_CMap | 79 class CPDF_CMap { |
| 80 { | 80 public: |
| 81 public: | 81 CPDF_CMap(); |
| 82 CPDF_CMap(); | 82 FX_BOOL LoadPredefined(CPDF_CMapManager* pMgr, |
| 83 FX_BOOL» » » » » LoadPredefined(CPDF_CMapManager*
pMgr, const FX_CHAR* name, FX_BOOL bPromptCJK); | 83 const FX_CHAR* name, |
| 84 FX_BOOL» » » » » LoadEmbedded(const uint8_t* pDat
a, FX_DWORD dwSize); | 84 FX_BOOL bPromptCJK); |
| 85 void» » » » » Release(); | 85 FX_BOOL LoadEmbedded(const uint8_t* pData, FX_DWORD dwSize); |
| 86 FX_BOOL» » » » » IsLoaded() const | 86 void Release(); |
| 87 { | 87 FX_BOOL IsLoaded() const { return m_bLoaded; } |
| 88 return m_bLoaded; | 88 int GetCharset() { return m_Charset; } |
| 89 } | 89 FX_BOOL IsVertWriting() const { return m_bVertical; } |
| 90 int»» » » » » GetCharset() | 90 FX_WORD CIDFromCharCode(FX_DWORD charcode) const; |
| 91 { | 91 FX_DWORD CharCodeFromCID(FX_WORD CID) const; |
| 92 return m_Charset; | 92 int GetCharSize(FX_DWORD charcode) const; |
| 93 } | 93 FX_DWORD GetNextChar(const FX_CHAR* pString, int nStrLen, int& offset) const; |
| 94 FX_BOOL» » » » » IsVertWriting() const | 94 int CountChar(const FX_CHAR* pString, int size) const; |
| 95 { | 95 int AppendChar(FX_CHAR* str, FX_DWORD charcode) const; |
| 96 return m_bVertical; | 96 typedef enum { |
| 97 } | 97 OneByte, |
| 98 FX_WORD» » » » » CIDFromCharCode(FX_DWORD charcod
e) const; | 98 TwoBytes, |
| 99 FX_DWORD» » » » CharCodeFromCID(FX_WORD CID) const; | 99 MixedTwoBytes, |
| 100 int»» » » » » GetCharSize(FX_DWORD charcode) c
onst; | 100 MixedFourBytes |
| 101 FX_DWORD» » » » GetNextChar(const FX_CHAR* pString, int
nStrLen, int& offset) const; | 101 } CodingScheme; |
| 102 int»» » » » » CountChar(const FX_CHAR* pString
, int size) const; | 102 |
| 103 int»» » » » » AppendChar(FX_CHAR* str, FX_DWOR
D charcode) const; | 103 protected: |
| 104 typedef enum {OneByte, TwoBytes, MixedTwoBytes, MixedFourBytes} CodingScheme
; | 104 ~CPDF_CMap(); |
| 105 protected: | 105 friend class CPDF_CMapParser; |
| 106 ~CPDF_CMap(); | 106 friend class CPDF_CMapManager; |
| 107 friend class» » » CPDF_CMapParser; | 107 friend class CPDF_CIDFont; |
| 108 friend class» » » CPDF_CMapManager; | 108 |
| 109 friend class» » » CPDF_CIDFont; | 109 protected: |
| 110 protected: | 110 CFX_ByteString m_PredefinedCMap; |
| 111 CFX_ByteString» » » m_PredefinedCMap; | 111 FX_BOOL m_bVertical; |
| 112 FX_BOOL» » » » » m_bVertical; | 112 int m_Charset, m_Coding; |
| 113 int»» » » » » m_Charset, m_Coding; | 113 CodingScheme m_CodingScheme; |
| 114 CodingScheme» » » m_CodingScheme; | 114 int m_nCodeRanges; |
| 115 int»» » » » » m_nCodeRanges; | 115 uint8_t* m_pLeadingBytes; |
| 116 uint8_t*» » » » m_pLeadingBytes; | 116 FX_WORD* m_pMapping; |
| 117 FX_WORD*» » » » m_pMapping; | 117 uint8_t* m_pAddMapping; |
| 118 uint8_t*» » » » m_pAddMapping; | 118 FX_BOOL m_bLoaded; |
| 119 FX_BOOL» » » » » m_bLoaded; | 119 const FXCMAP_CMap* m_pEmbedMap; |
| 120 const FXCMAP_CMap*» » m_pEmbedMap; | 120 CPDF_CMap* m_pUseMap; |
| 121 CPDF_CMap*» » » » m_pUseMap; | |
| 122 }; | 121 }; |
| 123 class CPDF_PredefinedCMap | 122 class CPDF_PredefinedCMap { |
| 124 { | 123 public: |
| 125 public: | 124 const FX_CHAR* m_pName; |
| 126 const FX_CHAR*» m_pName; | 125 int m_Charset; |
| 127 int»» » m_Charset; | 126 int m_Coding; |
| 128 int»» » m_Coding; | 127 CPDF_CMap::CodingScheme m_CodingScheme; |
| 129 CPDF_CMap::CodingScheme» m_CodingScheme; | 128 FX_DWORD m_LeadingSegCount; |
| 130 FX_DWORD» m_LeadingSegCount; | 129 uint8_t m_LeadingSegs[4]; |
| 131 uint8_t» » m_LeadingSegs[4]; | |
| 132 }; | 130 }; |
| 133 typedef struct _FileHeader { | 131 typedef struct _FileHeader { |
| 134 uint8_t» » btTag[4]; | 132 uint8_t btTag[4]; |
| 135 uint8_t» » btVersion; | 133 uint8_t btVersion; |
| 136 uint8_t» » btFormat; | 134 uint8_t btFormat; |
| 137 uint8_t» » btReserved1[2]; | 135 uint8_t btReserved1[2]; |
| 138 FX_DWORD» dwStartIndex; | 136 FX_DWORD dwStartIndex; |
| 139 FX_DWORD» dwEndIndex; | 137 FX_DWORD dwEndIndex; |
| 140 FX_DWORD» dwDataSize; | 138 FX_DWORD dwDataSize; |
| 141 FX_DWORD» dwDataOffset; | 139 FX_DWORD dwDataOffset; |
| 142 FX_DWORD» dwRecordSize; | 140 FX_DWORD dwRecordSize; |
| 143 } FXMP_FILEHEADER; | 141 } FXMP_FILEHEADER; |
| 144 class CPDF_CID2UnicodeMap | 142 class CPDF_CID2UnicodeMap { |
| 145 { | 143 public: |
| 146 public: | 144 CPDF_CID2UnicodeMap(); |
| 147 CPDF_CID2UnicodeMap(); | 145 ~CPDF_CID2UnicodeMap(); |
| 148 ~CPDF_CID2UnicodeMap(); | 146 FX_BOOL Initialize(); |
| 149 FX_BOOL» » Initialize(); | 147 FX_BOOL IsLoaded(); |
| 150 FX_BOOL» » IsLoaded(); | 148 void Load(CPDF_CMapManager* pMgr, int charset, FX_BOOL bPromptCJK); |
| 151 void» » Load(CPDF_CMapManager* pMgr, int charset, FX_BOOL bPromp
tCJK); | 149 FX_WCHAR UnicodeFromCID(FX_WORD CID); |
| 152 FX_WCHAR» UnicodeFromCID(FX_WORD CID); | 150 |
| 153 protected: | 151 protected: |
| 154 int»» » m_Charset; | 152 int m_Charset; |
| 155 const FX_WORD*» m_pEmbeddedMap; | 153 const FX_WORD* m_pEmbeddedMap; |
| 156 FX_DWORD» m_EmbeddedCount; | 154 FX_DWORD m_EmbeddedCount; |
| 157 }; | 155 }; |
| 158 class CPDF_ToUnicodeMap | 156 class CPDF_ToUnicodeMap { |
| 159 { | 157 public: |
| 160 public: | 158 void Load(CPDF_Stream* pStream); |
| 161 void» » » » » Load(CPDF_Stream* pStream); | 159 CFX_WideString Lookup(FX_DWORD charcode); |
| 162 CFX_WideString» » » Lookup(FX_DWORD charcode); | 160 FX_DWORD ReverseLookup(FX_WCHAR unicode); |
| 163 FX_DWORD» » » » ReverseLookup(FX_WCHAR unicode); | 161 |
| 164 protected: | 162 protected: |
| 165 CFX_CMapDWordToDWord» m_Map; | 163 CFX_CMapDWordToDWord m_Map; |
| 166 CPDF_CID2UnicodeMap*» m_pBaseMap; | 164 CPDF_CID2UnicodeMap* m_pBaseMap; |
| 167 CFX_WideTextBuf» » » m_MultiCharBuf; | 165 CFX_WideTextBuf m_MultiCharBuf; |
| 168 }; | 166 }; |
| 169 class CPDF_FontCharMap : public CFX_CharMap | 167 class CPDF_FontCharMap : public CFX_CharMap { |
| 170 { | 168 public: |
| 171 public: | 169 CPDF_FontCharMap(CPDF_Font* pFont); |
| 172 CPDF_FontCharMap(CPDF_Font* pFont); | 170 CPDF_Font* m_pFont; |
| 173 CPDF_Font*» » m_pFont; | |
| 174 }; | 171 }; |
| 175 | 172 |
| 176 #endif // CORE_SRC_FPDFAPI_FPDF_FONT_FONT_INT_H_ | 173 #endif // CORE_SRC_FPDFAPI_FPDF_FONT_FONT_INT_H_ |
| OLD | NEW |