diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/fpdfapi/fpdf_font/font_int.h | 34 | ||||
-rw-r--r-- | core/fpdfapi/fpdf_font/fpdf_font_cid.cpp | 6 | ||||
-rw-r--r-- | core/fpdfdoc/doc_action.cpp | 58 | ||||
-rw-r--r-- | core/fpdfdoc/doc_basic.cpp | 25 | ||||
-rw-r--r-- | core/include/fpdfapi/fpdf_resource.h | 2 |
5 files changed, 72 insertions, 53 deletions
diff --git a/core/fpdfapi/fpdf_font/font_int.h b/core/fpdfapi/fpdf_font/font_int.h index c9981387e6..bb209d8c16 100644 --- a/core/fpdfapi/fpdf_font/font_int.h +++ b/core/fpdfapi/fpdf_font/font_int.h @@ -110,16 +110,27 @@ class CPDF_CMapParser { CFX_ByteString m_Registry, m_Ordering, m_Supplement; CFX_ByteString m_LastWord; }; -#define CIDCODING_UNKNOWN 0 -#define CIDCODING_GB 1 -#define CIDCODING_BIG5 2 -#define CIDCODING_JIS 3 -#define CIDCODING_KOREA 4 -#define CIDCODING_UCS2 5 -#define CIDCODING_CID 6 -#define CIDCODING_UTF16 7 + +enum CIDCoding : uint8_t { + CIDCODING_UNKNOWN = 0, + CIDCODING_GB, + CIDCODING_BIG5, + CIDCODING_JIS, + CIDCODING_KOREA, + CIDCODING_UCS2, + CIDCODING_CID, + CIDCODING_UTF16, +}; + class CPDF_CMap { public: + enum CodingScheme : uint8_t { + OneByte, + TwoBytes, + MixedTwoBytes, + MixedFourBytes + }; + CPDF_CMap(); FX_BOOL LoadPredefined(CPDF_CMapManager* pMgr, const FX_CHAR* name, @@ -134,12 +145,6 @@ class CPDF_CMap { FX_DWORD GetNextChar(const FX_CHAR* pString, int nStrLen, int& offset) const; int CountChar(const FX_CHAR* pString, int size) const; int AppendChar(FX_CHAR* str, FX_DWORD charcode) const; - typedef enum { - OneByte, - TwoBytes, - MixedTwoBytes, - MixedFourBytes - } CodingScheme; protected: ~CPDF_CMap(); @@ -147,7 +152,6 @@ class CPDF_CMap { friend class CPDF_CMapManager; friend class CPDF_CIDFont; - protected: CFX_ByteString m_PredefinedCMap; FX_BOOL m_bVertical; CIDSet m_Charset; diff --git a/core/fpdfapi/fpdf_font/fpdf_font_cid.cpp b/core/fpdfapi/fpdf_font/fpdf_font_cid.cpp index 60fa40103b..97a3d4dbc1 100644 --- a/core/fpdfapi/fpdf_font/fpdf_font_cid.cpp +++ b/core/fpdfapi/fpdf_font/fpdf_font_cid.cpp @@ -22,15 +22,15 @@ namespace { const FX_CHAR* const g_CharsetNames[CIDSET_NUM_SETS] = { nullptr, "GB1", "CNS1", "Japan1", "Korea1", "UCS"}; -const int g_CharsetCPs[CIDSET_NUM_SETS] = {0, 936, 950, 932, 949, 1200}; +const uint16_t g_CharsetCPs[CIDSET_NUM_SETS] = {0, 936, 950, 932, 949, 1200}; class CPDF_PredefinedCMap { public: const FX_CHAR* m_pName; CIDSet m_Charset; - int m_Coding; + CIDCoding m_Coding; CPDF_CMap::CodingScheme m_CodingScheme; - FX_DWORD m_LeadingSegCount; + uint8_t m_LeadingSegCount; uint8_t m_LeadingSegs[4]; }; diff --git a/core/fpdfdoc/doc_action.cpp b/core/fpdfdoc/doc_action.cpp index 963257006a..d0deb19a8c 100644 --- a/core/fpdfdoc/doc_action.cpp +++ b/core/fpdfdoc/doc_action.cpp @@ -10,6 +10,20 @@ #include "core/fpdfapi/fpdf_parser/include/cpdf_document.h" #include "core/include/fpdfdoc/fpdf_doc.h" +namespace { + +const FX_CHAR* const g_sATypes[] = { + "Unknown", "GoTo", "GoToR", "GoToE", "Launch", + "Thread", "URI", "Sound", "Movie", "Hide", + "Named", "SubmitForm", "ResetForm", "ImportData", "JavaScript", + "SetOCGState", "Rendition", "Trans", "GoTo3DView", nullptr}; + +const FX_CHAR* g_sAATypes[] = {"E", "X", "D", "U", "Fo", "Bl", "PO", "PC", + "PV", "PI", "O", "C", "K", "F", "V", "C", + "WC", "WS", "DS", "WP", "DP", ""}; + +} // namespace + CPDF_Dest CPDF_Action::GetDest(CPDF_Document* pDoc) const { if (!m_pDict) { return CPDF_Dest(); @@ -31,27 +45,22 @@ CPDF_Dest CPDF_Action::GetDest(CPDF_Document* pDoc) const { return CPDF_Dest(pArray); return CPDF_Dest(); } -const FX_CHAR* g_sATypes[] = { - "Unknown", "GoTo", "GoToR", "GoToE", "Launch", - "Thread", "URI", "Sound", "Movie", "Hide", - "Named", "SubmitForm", "ResetForm", "ImportData", "JavaScript", - "SetOCGState", "Rendition", "Trans", "GoTo3DView", ""}; + CPDF_Action::ActionType CPDF_Action::GetType() const { - ActionType eType = Unknown; - if (m_pDict) { - CFX_ByteString csType = m_pDict->GetStringBy("S"); - if (!csType.IsEmpty()) { - int i = 0; - while (g_sATypes[i][0] != '\0') { - if (csType == g_sATypes[i]) { - return (ActionType)i; - } - i++; - } - } + if (!m_pDict) + return Unknown; + + CFX_ByteString csType = m_pDict->GetStringBy("S"); + if (csType.IsEmpty()) + return Unknown; + + for (int i = 0; g_sATypes[i]; ++i) { + if (csType == g_sATypes[i]) + return static_cast<ActionType>(i); } - return eType; + return Unknown; } + CFX_WideString CPDF_Action::GetFilePath() const { CFX_ByteString type = m_pDict->GetStringBy("S"); if (type != "GoToR" && type != "Launch" && type != "SubmitForm" && @@ -249,17 +258,16 @@ CPDF_Action CPDF_Action::GetSubAction(FX_DWORD iIndex) const { } return CPDF_Action(); } -const FX_CHAR* g_sAATypes[] = {"E", "X", "D", "U", "Fo", "Bl", "PO", "PC", - "PV", "PI", "O", "C", "K", "F", "V", "C", - "WC", "WS", "DS", "WP", "DP", ""}; + FX_BOOL CPDF_AAction::ActionExist(AActionType eType) const { - return m_pDict && m_pDict->KeyExist(g_sAATypes[(int)eType]); + return m_pDict && m_pDict->KeyExist(g_sAATypes[eType]); } + CPDF_Action CPDF_AAction::GetAction(AActionType eType) const { - if (!m_pDict) { + if (!m_pDict) return CPDF_Action(); - } - return CPDF_Action(m_pDict->GetDictBy(g_sAATypes[(int)eType])); + + return CPDF_Action(m_pDict->GetDictBy(g_sAATypes[eType])); } CPDF_DocJSActions::CPDF_DocJSActions(CPDF_Document* pDoc) : m_pDocument(pDoc) {} diff --git a/core/fpdfdoc/doc_basic.cpp b/core/fpdfdoc/doc_basic.cpp index 851730346c..cd2afab408 100644 --- a/core/fpdfdoc/doc_basic.cpp +++ b/core/fpdfdoc/doc_basic.cpp @@ -9,7 +9,14 @@ #include "core/fpdfdoc/doc_utils.h" #include "core/include/fpdfdoc/fpdf_doc.h" +namespace { + const int nMaxRecursion = 32; +const FX_CHAR* const g_sZoomModes[] = {"XYZ", "Fit", "FitH", "FitV", "FitR", + "FitB", "FitBH", "FitBV", nullptr}; + +} // namespace + int CPDF_Dest::GetPageIndex(CPDF_Document* pDoc) { CPDF_Array* pArray = ToArray(m_pObj); if (!pArray) @@ -38,25 +45,25 @@ FX_DWORD CPDF_Dest::GetPageObjNum() { return pPage->GetObjNum(); return 0; } -const FX_CHAR* g_sZoomModes[] = {"XYZ", "Fit", "FitH", "FitV", "FitR", - "FitB", "FitBH", "FitBV", ""}; + int CPDF_Dest::GetZoomMode() { CPDF_Array* pArray = ToArray(m_pObj); if (!pArray) return 0; - CFX_ByteString mode; CPDF_Object* pObj = pArray->GetElementValue(1); - mode = pObj ? pObj->GetString() : CFX_ByteString(); - int i = 0; - while (g_sZoomModes[i][0] != '\0') { - if (mode == g_sZoomModes[i]) { + if (!pObj) + return 0; + + CFX_ByteString mode = pObj->GetString(); + for (int i = 0; g_sZoomModes[i]; ++i) { + if (mode == g_sZoomModes[i]) return i + 1; - } - i++; } + return 0; } + FX_FLOAT CPDF_Dest::GetParam(int index) { CPDF_Array* pArray = ToArray(m_pObj); return pArray ? pArray->GetNumberAt(2 + index) : 0; diff --git a/core/include/fpdfapi/fpdf_resource.h b/core/include/fpdfapi/fpdf_resource.h index 1ae0030df8..379f53acb9 100644 --- a/core/include/fpdfapi/fpdf_resource.h +++ b/core/include/fpdfapi/fpdf_resource.h @@ -344,7 +344,7 @@ class CPDF_Type3Font : public CPDF_SimpleFont { std::map<FX_DWORD, CPDF_Type3Char*> m_CacheMap; }; -enum CIDSet { +enum CIDSet : uint8_t { CIDSET_UNKNOWN, CIDSET_GB1, CIDSET_CNS1, |