diff options
Diffstat (limited to 'core/include/fpdfdoc')
-rw-r--r-- | core/include/fpdfdoc/fpdf_ap.h | 138 | ||||
-rw-r--r-- | core/include/fpdfdoc/fpdf_doc.h | 2079 | ||||
-rw-r--r-- | core/include/fpdfdoc/fpdf_tagged.h | 120 | ||||
-rw-r--r-- | core/include/fpdfdoc/fpdf_vt.h | 603 |
4 files changed, 1261 insertions, 1679 deletions
diff --git a/core/include/fpdfdoc/fpdf_ap.h b/core/include/fpdfdoc/fpdf_ap.h index 7cfaed4685..43452fdb47 100644 --- a/core/include/fpdfdoc/fpdf_ap.h +++ b/core/include/fpdfdoc/fpdf_ap.h @@ -10,86 +10,98 @@ #include "../fpdfapi/fpdf_parser.h" #include "fpdf_vt.h" -class IPVT_FontMap -{ -public: - virtual ~IPVT_FontMap() { } - virtual CPDF_Font* GetPDFFont(int32_t nFontIndex) = 0; - virtual CFX_ByteString GetPDFFontAlias(int32_t nFontIndex) = 0; +class IPVT_FontMap { + public: + virtual ~IPVT_FontMap() {} + virtual CPDF_Font* GetPDFFont(int32_t nFontIndex) = 0; + virtual CFX_ByteString GetPDFFontAlias(int32_t nFontIndex) = 0; }; struct CPVT_Dash { + CPVT_Dash(int32_t dash, int32_t gap, int32_t phase) + : nDash(dash), nGap(gap), nPhase(phase) {} - CPVT_Dash(int32_t dash, int32_t gap, int32_t phase) : nDash(dash), nGap(gap), nPhase(phase) - {} + int32_t nDash; - int32_t nDash; + int32_t nGap; - int32_t nGap; - - int32_t nPhase; + int32_t nPhase; }; -#define CT_TRANSPARENT 0 -#define CT_GRAY 1 -#define CT_RGB 2 -#define CT_CMYK 3 +#define CT_TRANSPARENT 0 +#define CT_GRAY 1 +#define CT_RGB 2 +#define CT_CMYK 3 struct CPVT_Color { - - CPVT_Color(int32_t type = 0, FX_FLOAT color1 = 0.0f, FX_FLOAT color2 = 0.0f, FX_FLOAT color3 = 0.0f, FX_FLOAT color4 = 0.0f) - : nColorType(type), fColor1(color1), fColor2(color2), fColor3(color3), fColor4(color4) - {} - - int32_t nColorType; - FX_FLOAT fColor1; - FX_FLOAT fColor2; - FX_FLOAT fColor3; - FX_FLOAT fColor4; + CPVT_Color(int32_t type = 0, + FX_FLOAT color1 = 0.0f, + FX_FLOAT color2 = 0.0f, + FX_FLOAT color3 = 0.0f, + FX_FLOAT color4 = 0.0f) + : nColorType(type), + fColor1(color1), + fColor2(color2), + fColor3(color3), + fColor4(color4) {} + + int32_t nColorType; + FX_FLOAT fColor1; + FX_FLOAT fColor2; + FX_FLOAT fColor3; + FX_FLOAT fColor4; }; -class CPVT_Provider : public IPDF_VariableText_Provider -{ -public: +class CPVT_Provider : public IPDF_VariableText_Provider { + public: + CPVT_Provider(IPVT_FontMap* pFontMap); - CPVT_Provider(IPVT_FontMap * pFontMap); + virtual ~CPVT_Provider(); - virtual ~CPVT_Provider(); + int32_t GetCharWidth(int32_t nFontIndex, FX_WORD word, int32_t nWordStyle); - int32_t GetCharWidth(int32_t nFontIndex, FX_WORD word, int32_t nWordStyle); + int32_t GetTypeAscent(int32_t nFontIndex); - int32_t GetTypeAscent(int32_t nFontIndex); + int32_t GetTypeDescent(int32_t nFontIndex); - int32_t GetTypeDescent(int32_t nFontIndex); + int32_t GetWordFontIndex(FX_WORD word, int32_t charset, int32_t nFontIndex); - int32_t GetWordFontIndex(FX_WORD word, int32_t charset, int32_t nFontIndex); + FX_BOOL IsLatinWord(FX_WORD word); - FX_BOOL IsLatinWord(FX_WORD word); + int32_t GetDefaultFontIndex(); - int32_t GetDefaultFontIndex(); -private: - - IPVT_FontMap * m_pFontMap; + private: + IPVT_FontMap* m_pFontMap; }; -#define PBS_SOLID 0 -#define PBS_DASH 1 -#define PBS_BEVELED 2 -#define PBS_INSET 3 -#define PBS_UNDERLINED 4 -class CPVT_GenerateAP -{ -public: - - static FX_BOOL GenerateTextFieldAP(CPDF_Document* pDoc, CPDF_Dictionary* pAnnotDict); - - static FX_BOOL GenerateComboBoxAP(CPDF_Document* pDoc, CPDF_Dictionary* pAnnotDict); - - static FX_BOOL GenerateListBoxAP(CPDF_Document* pDoc, CPDF_Dictionary* pAnnotDict); - - static CFX_ByteString GenerateEditAP(IPVT_FontMap * pFontMap, IPDF_VariableText_Iterator * pIterator, - const CPDF_Point & ptOffset, FX_BOOL bContinuous, FX_WORD SubWord = 0, const CPVT_WordRange * pVisible = NULL); - - static CFX_ByteString GenerateBorderAP(const CPDF_Rect & rect, FX_FLOAT fWidth, - const CPVT_Color & color, const CPVT_Color & crLeftTop, const CPVT_Color & crRightBottom, - int32_t nStyle, const CPVT_Dash & dash); - - static CFX_ByteString GenerateColorAP(const CPVT_Color & color, const FX_BOOL & bFillOrStroke); +#define PBS_SOLID 0 +#define PBS_DASH 1 +#define PBS_BEVELED 2 +#define PBS_INSET 3 +#define PBS_UNDERLINED 4 +class CPVT_GenerateAP { + public: + static FX_BOOL GenerateTextFieldAP(CPDF_Document* pDoc, + CPDF_Dictionary* pAnnotDict); + + static FX_BOOL GenerateComboBoxAP(CPDF_Document* pDoc, + CPDF_Dictionary* pAnnotDict); + + static FX_BOOL GenerateListBoxAP(CPDF_Document* pDoc, + CPDF_Dictionary* pAnnotDict); + + static CFX_ByteString GenerateEditAP(IPVT_FontMap* pFontMap, + IPDF_VariableText_Iterator* pIterator, + const CPDF_Point& ptOffset, + FX_BOOL bContinuous, + FX_WORD SubWord = 0, + const CPVT_WordRange* pVisible = NULL); + + static CFX_ByteString GenerateBorderAP(const CPDF_Rect& rect, + FX_FLOAT fWidth, + const CPVT_Color& color, + const CPVT_Color& crLeftTop, + const CPVT_Color& crRightBottom, + int32_t nStyle, + const CPVT_Dash& dash); + + static CFX_ByteString GenerateColorAP(const CPVT_Color& color, + const FX_BOOL& bFillOrStroke); }; #endif // CORE_INCLUDE_FPDFDOC_FPDF_AP_H_ diff --git a/core/include/fpdfdoc/fpdf_doc.h b/core/include/fpdfdoc/fpdf_doc.h index fc9d3bce87..18dc7aa064 100644 --- a/core/include/fpdfdoc/fpdf_doc.h +++ b/core/include/fpdfdoc/fpdf_doc.h @@ -42,1663 +42,1220 @@ class CPDF_TextObject; class CPDF_ViewerPreferences; class CXML_Element; -class CPDF_NameTree -{ -public: +class CPDF_NameTree { + public: + CPDF_NameTree(CPDF_Dictionary* pRoot) { m_pRoot = pRoot; } - CPDF_NameTree(CPDF_Dictionary* pRoot) - { - m_pRoot = pRoot; - } + CPDF_NameTree(CPDF_Document* pDoc, const CFX_ByteStringC& category); - CPDF_NameTree(CPDF_Document* pDoc, const CFX_ByteStringC& category); + CPDF_Object* LookupValue(int nIndex, CFX_ByteString& csName) const; - CPDF_Object* LookupValue(int nIndex, CFX_ByteString& csName) const; + CPDF_Object* LookupValue(const CFX_ByteString& csName) const; - CPDF_Object* LookupValue(const CFX_ByteString& csName) const; + CPDF_Array* LookupNamedDest(CPDF_Document* pDoc, + const CFX_ByteStringC& sName); - CPDF_Array* LookupNamedDest(CPDF_Document* pDoc, const CFX_ByteStringC& sName); + int GetIndex(const CFX_ByteString& csName) const; - int GetIndex(const CFX_ByteString& csName) const; + int GetCount() const; - int GetCount() const; + CPDF_Dictionary* GetRoot() const { return m_pRoot; } - - CPDF_Dictionary* GetRoot() const - { - return m_pRoot; - } - -protected: - - CPDF_Dictionary* m_pRoot; + protected: + CPDF_Dictionary* m_pRoot; }; -class CPDF_BookmarkTree -{ -public: - CPDF_BookmarkTree(CPDF_Document* pDoc) : m_pDocument(pDoc) {} +class CPDF_BookmarkTree { + public: + CPDF_BookmarkTree(CPDF_Document* pDoc) : m_pDocument(pDoc) {} - CPDF_Bookmark GetFirstChild(const CPDF_Bookmark& parent) const; + CPDF_Bookmark GetFirstChild(const CPDF_Bookmark& parent) const; - CPDF_Bookmark GetNextSibling(const CPDF_Bookmark& bookmark) const; + CPDF_Bookmark GetNextSibling(const CPDF_Bookmark& bookmark) const; - CPDF_Document* GetDocument() const { return m_pDocument; } + CPDF_Document* GetDocument() const { return m_pDocument; } -protected: - CPDF_Document* m_pDocument; + protected: + CPDF_Document* m_pDocument; }; -#define PDFBOOKMARK_ITALIC 1 -#define PDFBOOKMARK_BOLD 2 -class CPDF_Bookmark -{ -public: - - CPDF_Bookmark() : m_pDict(NULL) {} +#define PDFBOOKMARK_ITALIC 1 +#define PDFBOOKMARK_BOLD 2 +class CPDF_Bookmark { + public: + CPDF_Bookmark() : m_pDict(NULL) {} - explicit CPDF_Bookmark(CPDF_Dictionary* pDict) : m_pDict(pDict) {} + explicit CPDF_Bookmark(CPDF_Dictionary* pDict) : m_pDict(pDict) {} - CPDF_Dictionary* GetDict() const { return m_pDict; } + CPDF_Dictionary* GetDict() const { return m_pDict; } - operator bool() const { return m_pDict != NULL; } + operator bool() const { return m_pDict != NULL; } - FX_DWORD GetColorRef() const; + FX_DWORD GetColorRef() const; - FX_DWORD GetFontStyle() const; + FX_DWORD GetFontStyle() const; - CFX_WideString GetTitle() const; + CFX_WideString GetTitle() const; - CPDF_Dest GetDest(CPDF_Document* pDocument) const; + CPDF_Dest GetDest(CPDF_Document* pDocument) const; - CPDF_Action GetAction() const; + CPDF_Action GetAction() const; - CPDF_Dictionary* m_pDict; + CPDF_Dictionary* m_pDict; }; -#define PDFZOOM_XYZ 1 -#define PDFZOOM_FITPAGE 2 -#define PDFZOOM_FITHORZ 3 -#define PDFZOOM_FITVERT 4 -#define PDFZOOM_FITRECT 5 -#define PDFZOOM_FITBBOX 6 -#define PDFZOOM_FITBHORZ 7 -#define PDFZOOM_FITBVERT 8 -class CPDF_Dest -{ -public: - CPDF_Dest() : m_pObj(nullptr) { } - explicit CPDF_Dest(CPDF_Object* pObj) : m_pObj(pObj) { } - - operator bool () const { return m_pObj != NULL; } - CPDF_Object* GetObject() const { return m_pObj; } - - CFX_ByteString GetRemoteName(); - int GetPageIndex(CPDF_Document* pDoc); - FX_DWORD GetPageObjNum(); - int GetZoomMode(); - FX_FLOAT GetParam(int index); - -protected: - CPDF_Object* m_pObj; +#define PDFZOOM_XYZ 1 +#define PDFZOOM_FITPAGE 2 +#define PDFZOOM_FITHORZ 3 +#define PDFZOOM_FITVERT 4 +#define PDFZOOM_FITRECT 5 +#define PDFZOOM_FITBBOX 6 +#define PDFZOOM_FITBHORZ 7 +#define PDFZOOM_FITBVERT 8 +class CPDF_Dest { + public: + CPDF_Dest() : m_pObj(nullptr) {} + explicit CPDF_Dest(CPDF_Object* pObj) : m_pObj(pObj) {} + + operator bool() const { return m_pObj != NULL; } + CPDF_Object* GetObject() const { return m_pObj; } + + CFX_ByteString GetRemoteName(); + int GetPageIndex(CPDF_Document* pDoc); + FX_DWORD GetPageObjNum(); + int GetZoomMode(); + FX_FLOAT GetParam(int index); + + protected: + CPDF_Object* m_pObj; }; -class CPDF_OCContext : public IPDF_OCContext -{ -public: +class CPDF_OCContext : public IPDF_OCContext { + public: + enum UsageType { View = 0, Design, Print, Export }; - enum UsageType { - View = 0, - Design, - Print, - Export - }; + CPDF_OCContext(CPDF_Document* pDoc, UsageType eUsageType = View); - CPDF_OCContext(CPDF_Document *pDoc, UsageType eUsageType = View); + virtual ~CPDF_OCContext(); - virtual ~CPDF_OCContext(); + CPDF_Document* GetDocument() const { return m_pDocument; } - CPDF_Document* GetDocument() const - { - return m_pDocument; - } + UsageType GetUsageType() const { return m_eUsageType; } - UsageType GetUsageType() const - { - return m_eUsageType; - } + FX_BOOL CheckOCGVisible(const CPDF_Dictionary* pOCGDict); - FX_BOOL CheckOCGVisible(const CPDF_Dictionary *pOCGDict); + void ResetOCContext(); - void ResetOCContext(); -protected: + protected: + FX_BOOL LoadOCGStateFromConfig(const CFX_ByteStringC& csConfig, + const CPDF_Dictionary* pOCGDict, + FX_BOOL& bValidConfig) const; - FX_BOOL LoadOCGStateFromConfig(const CFX_ByteStringC& csConfig, const CPDF_Dictionary *pOCGDict, FX_BOOL &bValidConfig) const; + FX_BOOL LoadOCGState(const CPDF_Dictionary* pOCGDict) const; - FX_BOOL LoadOCGState(const CPDF_Dictionary *pOCGDict) const; + FX_BOOL GetOCGVisible(const CPDF_Dictionary* pOCGDict); - FX_BOOL GetOCGVisible(const CPDF_Dictionary *pOCGDict); + FX_BOOL GetOCGVE(CPDF_Array* pExpression, + FX_BOOL bFromConfig, + int nLevel = 0); - FX_BOOL GetOCGVE(CPDF_Array *pExpression, FX_BOOL bFromConfig, int nLevel = 0); + FX_BOOL LoadOCMDState(const CPDF_Dictionary* pOCMDDict, FX_BOOL bFromConfig); - FX_BOOL LoadOCMDState(const CPDF_Dictionary *pOCMDDict, FX_BOOL bFromConfig); + CPDF_Document* m_pDocument; - CPDF_Document *m_pDocument; + UsageType m_eUsageType; - UsageType m_eUsageType; - - std::map<const CPDF_Dictionary*, FX_BOOL> m_OCGStates; + std::map<const CPDF_Dictionary*, FX_BOOL> m_OCGStates; }; -class CPDF_LWinParam -{ -public: - - CPDF_LWinParam(CPDF_Dictionary* pDict) - { - m_pDict = pDict; - } - - operator CPDF_Dictionary* () const - { - return m_pDict; - } - - inline CFX_ByteString GetFileName() - { - return m_pDict->GetString("F"); - } +class CPDF_LWinParam { + public: + CPDF_LWinParam(CPDF_Dictionary* pDict) { m_pDict = pDict; } + operator CPDF_Dictionary*() const { return m_pDict; } - inline CFX_ByteString GetDefaultDirectory() - { - return m_pDict->GetString("D"); - } + inline CFX_ByteString GetFileName() { return m_pDict->GetString("F"); } + inline CFX_ByteString GetDefaultDirectory() { + return m_pDict->GetString("D"); + } - inline CFX_ByteString GetOperation() - { - return m_pDict->GetString("O"); - } + inline CFX_ByteString GetOperation() { return m_pDict->GetString("O"); } + inline CFX_ByteString GetParameter() { return m_pDict->GetString("P"); } - inline CFX_ByteString GetParameter() - { - return m_pDict->GetString("P"); - } - - CPDF_Dictionary* m_pDict; + CPDF_Dictionary* m_pDict; }; -class CPDF_ActionFields -{ -public: - - CPDF_ActionFields(const CPDF_Action* pAction) - { - m_pAction = (CPDF_Action*)pAction; - } +class CPDF_ActionFields { + public: + CPDF_ActionFields(const CPDF_Action* pAction) { + m_pAction = (CPDF_Action*)pAction; + } - operator CPDF_Action*() const - { - return m_pAction; - } + operator CPDF_Action*() const { return m_pAction; } - FX_DWORD GetFieldsCount() const; + FX_DWORD GetFieldsCount() const; - void GetAllFields(CFX_PtrArray& fieldObjects) const; + void GetAllFields(CFX_PtrArray& fieldObjects) const; - CPDF_Object* GetField(FX_DWORD iIndex) const; + CPDF_Object* GetField(FX_DWORD iIndex) const; - CPDF_Action* m_pAction; + CPDF_Action* m_pAction; }; -#define PDFNAMED_NEXTPAGE 1 -#define PDFNAMED_PREVPAGE 2 -#define PDFNAMED_FIRSTPAGE 3 -#define PDFNAMED_LASTPAGE 4 -#define PDFJS_MAXLENGTH 64 -class CPDF_Action -{ -public: - enum ActionType { - Unknown = 0, - GoTo, - GoToR, - GoToE, - Launch, - Thread, - URI, - Sound, - Movie, - Hide, - Named, - SubmitForm, - ResetForm, - ImportData, - JavaScript, - SetOCGState, - Rendition, - Trans, - GoTo3DView - }; - - CPDF_Action() : m_pDict(nullptr) { } - explicit CPDF_Action(CPDF_Dictionary* pDict) : m_pDict(pDict) { } - - operator bool () const { return m_pDict != NULL; } - - CPDF_Dictionary* GetDict() const { return m_pDict; } - - CFX_ByteString GetTypeName() const - { - return m_pDict->GetString("S"); - } - - ActionType GetType() const; - - CPDF_Dest GetDest(CPDF_Document* pDoc) const; - - CFX_WideString GetFilePath() const; - - FX_BOOL GetNewWindow() const - { - return m_pDict->GetBoolean("NewWindow"); - } - - CPDF_LWinParam GetWinParam() const; - - CFX_ByteString GetURI(CPDF_Document* pDoc) const; - - FX_BOOL GetMouseMap() const - { - return m_pDict->GetBoolean("IsMap"); - } - - CPDF_ActionFields GetWidgets() const - { - return this; - } - - FX_BOOL GetHideStatus() const - { - return m_pDict->GetBoolean("H", TRUE); - } - - CFX_ByteString GetNamedAction() const - { - return m_pDict->GetString("N"); - } - - FX_DWORD GetFlags() const - { - return m_pDict->GetInteger("Flags"); - } - - CFX_WideString GetJavaScript() const; - - CPDF_Dictionary* GetAnnot() const; - - int32_t GetOperationType() const; - - CPDF_Stream* GetSoundStream() const - { - return m_pDict->GetStream("Sound"); - } - - FX_FLOAT GetVolume() const - { - return m_pDict->GetNumber("Volume"); - } - - FX_BOOL IsSynchronous() const - { - return m_pDict->GetBoolean("Synchronous"); - } - - FX_BOOL IsRepeat() const - { - return m_pDict->GetBoolean("Repeat"); - } - - FX_BOOL IsMixPlay() const - { - return m_pDict->GetBoolean("Mix"); - } - - FX_DWORD GetSubActionsCount() const; - - CPDF_Action GetSubAction(FX_DWORD iIndex) const; +#define PDFNAMED_NEXTPAGE 1 +#define PDFNAMED_PREVPAGE 2 +#define PDFNAMED_FIRSTPAGE 3 +#define PDFNAMED_LASTPAGE 4 +#define PDFJS_MAXLENGTH 64 +class CPDF_Action { + public: + enum ActionType { + Unknown = 0, + GoTo, + GoToR, + GoToE, + Launch, + Thread, + URI, + Sound, + Movie, + Hide, + Named, + SubmitForm, + ResetForm, + ImportData, + JavaScript, + SetOCGState, + Rendition, + Trans, + GoTo3DView + }; -protected: - CPDF_Dictionary* m_pDict; -}; -class CPDF_AAction -{ -public: - - CPDF_AAction(CPDF_Dictionary* pDict = NULL) - { - m_pDict = pDict; - } - - operator CPDF_Dictionary*() const - { - return m_pDict; - } - - enum AActionType { - CursorEnter = 0, - CursorExit, - ButtonDown, - ButtonUp, - GetFocus, - LoseFocus, - PageOpen, - PageClose, - PageVisible, - PageInvisible, - OpenPage, - ClosePage, - KeyStroke, - Format, - Validate, - Calculate, - CloseDocument, - SaveDocument, - DocumentSaved, - PrintDocument, - DocumentPrinted - }; - - FX_BOOL ActionExist(AActionType eType) const; - - CPDF_Action GetAction(AActionType eType) const; - - FX_POSITION GetStartPos() const; - - CPDF_Action GetNextAction(FX_POSITION& pos, AActionType& eType) const; - - CPDF_Dictionary* m_pDict; -}; -class CPDF_DocJSActions -{ -public: - CPDF_DocJSActions(CPDF_Document* pDoc); + CPDF_Action() : m_pDict(nullptr) {} + explicit CPDF_Action(CPDF_Dictionary* pDict) : m_pDict(pDict) {} + operator bool() const { return m_pDict != NULL; } - int CountJSActions() const; + CPDF_Dictionary* GetDict() const { return m_pDict; } - CPDF_Action GetJSAction(int index, CFX_ByteString& csName) const; + CFX_ByteString GetTypeName() const { return m_pDict->GetString("S"); } - CPDF_Action GetJSAction(const CFX_ByteString& csName) const; + ActionType GetType() const; - int FindJSAction(const CFX_ByteString& csName) const; + CPDF_Dest GetDest(CPDF_Document* pDoc) const; + CFX_WideString GetFilePath() const; - CPDF_Document* GetDocument() const - { - return m_pDocument; - } + FX_BOOL GetNewWindow() const { return m_pDict->GetBoolean("NewWindow"); } -protected: + CPDF_LWinParam GetWinParam() const; - CPDF_Document* m_pDocument; -}; -class CPDF_FileSpec -{ -public: + CFX_ByteString GetURI(CPDF_Document* pDoc) const; - CPDF_FileSpec(); + FX_BOOL GetMouseMap() const { return m_pDict->GetBoolean("IsMap"); } - CPDF_FileSpec(CPDF_Object *pObj) - { - m_pObj = pObj; - } + CPDF_ActionFields GetWidgets() const { return this; } - operator CPDF_Object*() const - { - return m_pObj; - } + FX_BOOL GetHideStatus() const { return m_pDict->GetBoolean("H", TRUE); } - FX_BOOL IsURL() const; + CFX_ByteString GetNamedAction() const { return m_pDict->GetString("N"); } - FX_BOOL GetFileName(CFX_WideString &wsFileName) const; + FX_DWORD GetFlags() const { return m_pDict->GetInteger("Flags"); } - CPDF_Stream* GetFileStream() const; + CFX_WideString GetJavaScript() const; - void SetFileName(const CFX_WideStringC& wsFileName, FX_BOOL bURL = FALSE); -protected: + CPDF_Dictionary* GetAnnot() const; - CPDF_Object *m_pObj; -}; -class CPDF_LinkList -{ -public: + int32_t GetOperationType() const; - CPDF_LinkList(CPDF_Document* pDoc) - { - m_pDocument = pDoc; - } + CPDF_Stream* GetSoundStream() const { return m_pDict->GetStream("Sound"); } - ~CPDF_LinkList(); + FX_FLOAT GetVolume() const { return m_pDict->GetNumber("Volume"); } - CPDF_Link GetLinkAtPoint(CPDF_Page* pPage, FX_FLOAT pdf_x, FX_FLOAT pdf_y); + FX_BOOL IsSynchronous() const { return m_pDict->GetBoolean("Synchronous"); } - int CountLinks(CPDF_Page* pPage); + FX_BOOL IsRepeat() const { return m_pDict->GetBoolean("Repeat"); } - CPDF_Link GetLink(CPDF_Page* pPage, int index); + FX_BOOL IsMixPlay() const { return m_pDict->GetBoolean("Mix"); } - CPDF_Document* GetDocument() const - { - return m_pDocument; - } -protected: + FX_DWORD GetSubActionsCount() const; - CPDF_Document* m_pDocument; + CPDF_Action GetSubAction(FX_DWORD iIndex) const; - CFX_MapPtrToPtr m_PageMap; - - CFX_PtrArray* GetPageLinks(CPDF_Page* pPage); - - void LoadPageLinks(CPDF_Page* pPage, CFX_PtrArray* pList); + protected: + CPDF_Dictionary* m_pDict; }; -class CPDF_Link -{ -public: - CPDF_Link() : m_pDict(nullptr) { } - explicit CPDF_Link(CPDF_Dictionary* pDict) : m_pDict(pDict) { } - - CPDF_Dictionary* GetDict() const { return m_pDict; } - - CFX_FloatRect GetRect(); - CPDF_Dest GetDest(CPDF_Document* pDoc); - CPDF_Action GetAction(); - -protected: - CPDF_Dictionary* m_pDict; +class CPDF_AAction { + public: + CPDF_AAction(CPDF_Dictionary* pDict = NULL) { m_pDict = pDict; } + + operator CPDF_Dictionary*() const { return m_pDict; } + + enum AActionType { + CursorEnter = 0, + CursorExit, + ButtonDown, + ButtonUp, + GetFocus, + LoseFocus, + PageOpen, + PageClose, + PageVisible, + PageInvisible, + OpenPage, + ClosePage, + KeyStroke, + Format, + Validate, + Calculate, + CloseDocument, + SaveDocument, + DocumentSaved, + PrintDocument, + DocumentPrinted + }; + + FX_BOOL ActionExist(AActionType eType) const; + + CPDF_Action GetAction(AActionType eType) const; + + FX_POSITION GetStartPos() const; + + CPDF_Action GetNextAction(FX_POSITION& pos, AActionType& eType) const; + + CPDF_Dictionary* m_pDict; }; +class CPDF_DocJSActions { + public: + CPDF_DocJSActions(CPDF_Document* pDoc); -#define ANNOTFLAG_INVISIBLE 0x0001 -#define ANNOTFLAG_HIDDEN 0x0002 -#define ANNOTFLAG_PRINT 0x0004 -#define ANNOTFLAG_NOZOOM 0x0008 -#define ANNOTFLAG_NOROTATE 0x0010 -#define ANNOTFLAG_NOVIEW 0x0020 -#define ANNOTFLAG_READONLY 0x0040 -#define ANNOTFLAG_LOCKED 0x0080 -#define ANNOTFLAG_TOGGLENOVIEW 0x0100 - -class CPDF_Annot : public CFX_PrivateData -{ - public: - enum AppearanceMode { - Normal, - Rollover, - Down - }; - - CPDF_Annot(CPDF_Dictionary* pDict, CPDF_AnnotList* pList); - ~CPDF_Annot(); - - CFX_ByteString GetSubType() const; - - FX_DWORD GetFlags() const; - - void GetRect(CFX_FloatRect& rect) const; - - CPDF_Dictionary* GetAnnotDict(); - - FX_BOOL DrawAppearance(const CPDF_Page* pPage, - CFX_RenderDevice* pDevice, - const CFX_AffineMatrix* pUser2Device, - AppearanceMode mode, - const CPDF_RenderOptions* pOptions); - - FX_BOOL DrawInContext(const CPDF_Page* pPage, - const CPDF_RenderContext* pContext, - const CFX_AffineMatrix* pUser2Device, - AppearanceMode mode); - - void ClearCachedAP(); - - void DrawBorder(CFX_RenderDevice* pDevice, - const CFX_AffineMatrix* pUser2Device, - const CPDF_RenderOptions* pOptions); + int CountJSActions() const; - CPDF_Form* GetAPForm(const CPDF_Page* pPage, AppearanceMode mode); + CPDF_Action GetJSAction(int index, CFX_ByteString& csName) const; - private: - CPDF_Dictionary* const m_pAnnotDict; + CPDF_Action GetJSAction(const CFX_ByteString& csName) const; - CPDF_AnnotList* const m_pList; + int FindJSAction(const CFX_ByteString& csName) const; - const CFX_ByteString m_sSubtype; + CPDF_Document* GetDocument() const { return m_pDocument; } - CFX_MapPtrToPtr m_APMap; + protected: + CPDF_Document* m_pDocument; }; +class CPDF_FileSpec { + public: + CPDF_FileSpec(); -class CPDF_AnnotList -{ -public: + CPDF_FileSpec(CPDF_Object* pObj) { m_pObj = pObj; } - CPDF_AnnotList(CPDF_Page* pPage); + operator CPDF_Object*() const { return m_pObj; } - ~CPDF_AnnotList(); + FX_BOOL IsURL() const; - void GetAnnotMatrix(const CPDF_Dictionary* pAnnotDict, const CFX_Matrix* pUser2Device, CFX_Matrix &matrix) const; + FX_BOOL GetFileName(CFX_WideString& wsFileName) const; - void GetAnnotRect(const CPDF_Dictionary* pAnnotDict, const CFX_Matrix* pUser2Device, CPDF_Rect &rtAnnot) const; + CPDF_Stream* GetFileStream() const; - void DisplayAnnots(const CPDF_Page* pPage, CFX_RenderDevice* pDevice, - CFX_AffineMatrix* pMatrix, FX_BOOL bShowWidget, - CPDF_RenderOptions* pOptions); + void SetFileName(const CFX_WideStringC& wsFileName, FX_BOOL bURL = FALSE); - void DisplayAnnots(const CPDF_Page* pPage, CPDF_RenderContext* pContext, - FX_BOOL bPrinting, CFX_AffineMatrix* pMatrix, FX_BOOL bShowWidget, - CPDF_RenderOptions* pOptions) - { - DisplayAnnots(pPage, NULL, pContext, bPrinting, pMatrix, bShowWidget ? 3 : 1, pOptions, NULL); - } - - void DisplayAnnots(const CPDF_Page* pPage, CPDF_RenderContext* pContext, - FX_BOOL bPrinting, CFX_AffineMatrix* pMatrix, FX_BOOL bShowWidget, - CPDF_RenderOptions* pOptions, FX_RECT *pClipRect) - { - DisplayAnnots(pPage, NULL, pContext, bPrinting, pMatrix, bShowWidget ? 3 : 1, pOptions, pClipRect); - } - - void DisplayAnnots(const CPDF_Page* pPage, CFX_RenderDevice* pDevice, CPDF_RenderContext* pContext, - FX_BOOL bPrinting, CFX_AffineMatrix* pMatrix, FX_DWORD dwAnnotFlags, - CPDF_RenderOptions* pOptions, FX_RECT* pClipRect); - - - - CPDF_Annot* GetAt(int index) - { - return (CPDF_Annot*)m_AnnotList.GetAt(index); - } - - int Count() - { - return m_AnnotList.GetSize(); - } - - int GetIndex(CPDF_Annot* pAnnot); - - - CPDF_Document* GetDocument() const - { - return m_pDocument; - } -protected: - - CFX_PtrArray m_AnnotList; - - CPDF_Dictionary* m_pPageDict; - - CPDF_Document* m_pDocument; - - CFX_PtrArray m_Borders; - - void DisplayPass(const CPDF_Page* pPage, CFX_RenderDevice* pDevice, - CPDF_RenderContext* pContext, FX_BOOL bPrinting, CFX_AffineMatrix* pMatrix, - FX_BOOL bWidget, CPDF_RenderOptions* pOptions, FX_RECT* clip_rect); - friend class CPDF_Annot; + protected: + CPDF_Object* m_pObj; }; -#define COLORTYPE_TRANSPARENT 0 -#define COLORTYPE_GRAY 1 -#define COLORTYPE_RGB 2 -#define COLORTYPE_CMYK 3 -class CPDF_DefaultAppearance -{ -public: - - CPDF_DefaultAppearance(const CFX_ByteString& csDA = "") - { - m_csDA = csDA; - } - - CPDF_DefaultAppearance(const CPDF_DefaultAppearance& cDA) - { - m_csDA = (CFX_ByteString)(CPDF_DefaultAppearance&)cDA; - } - - - operator CFX_ByteString() const - { - return m_csDA; - } - - const CPDF_DefaultAppearance& operator =(const CFX_ByteString& csDA) - { - m_csDA = csDA; - return *this; - } - - const CPDF_DefaultAppearance& operator =(const CPDF_DefaultAppearance& cDA) - { - m_csDA = (CFX_ByteString)(CPDF_DefaultAppearance&)cDA; - return *this; - } - - - - FX_BOOL HasFont(); - - CFX_ByteString GetFontString(); - - void GetFont(CFX_ByteString& csFontNameTag, FX_FLOAT& fFontSize); - - - - - FX_BOOL HasColor(FX_BOOL bStrokingOperation = FALSE); - - CFX_ByteString GetColorString(FX_BOOL bStrokingOperation = FALSE); +class CPDF_LinkList { + public: + CPDF_LinkList(CPDF_Document* pDoc) { m_pDocument = pDoc; } - void GetColor(int& iColorType, FX_FLOAT fc[4], FX_BOOL bStrokingOperation = FALSE); + ~CPDF_LinkList(); - void GetColor(FX_ARGB& color, int& iColorType, FX_BOOL bStrokingOperation = FALSE); + CPDF_Link GetLinkAtPoint(CPDF_Page* pPage, FX_FLOAT pdf_x, FX_FLOAT pdf_y); + int CountLinks(CPDF_Page* pPage); + CPDF_Link GetLink(CPDF_Page* pPage, int index); + CPDF_Document* GetDocument() const { return m_pDocument; } - FX_BOOL HasTextMatrix(); + protected: + CPDF_Document* m_pDocument; - CFX_ByteString GetTextMatrixString(); + CFX_MapPtrToPtr m_PageMap; - CFX_AffineMatrix GetTextMatrix(); + CFX_PtrArray* GetPageLinks(CPDF_Page* pPage); -protected: - - CFX_ByteString m_csDA; + void LoadPageLinks(CPDF_Page* pPage, CFX_PtrArray* pList); }; -#define FIELDTYPE_UNKNOWN 0 -#define FIELDTYPE_PUSHBUTTON 1 -#define FIELDTYPE_CHECKBOX 2 -#define FIELDTYPE_RADIOBUTTON 3 -#define FIELDTYPE_COMBOBOX 4 -#define FIELDTYPE_LISTBOX 5 -#define FIELDTYPE_TEXTFIELD 6 -#define FIELDTYPE_SIGNATURE 7 -class CPDF_InterForm : public CFX_PrivateData -{ -public: - - CPDF_InterForm(CPDF_Document* pDocument, FX_BOOL bUpdateAP); - - ~CPDF_InterForm(); - - - - static void EnableUpdateAP(FX_BOOL bUpdateAP); - - static FX_BOOL UpdatingAPEnabled(); - - - static CFX_ByteString GenerateNewResourceName(const CPDF_Dictionary* pResDict, const FX_CHAR* csType, int iMinLen = 2, const FX_CHAR* csPrefix = ""); - - - - static CPDF_Font* AddSystemDefaultFont(const CPDF_Document* pDocument); - - static CPDF_Font* AddSystemFont(const CPDF_Document* pDocument, CFX_ByteString csFontName, uint8_t iCharSet = 1); - - static CPDF_Font* AddSystemFont(const CPDF_Document* pDocument, CFX_WideString csFontName, uint8_t iCharSet = 1); - - static CPDF_Font* AddStandardFont(const CPDF_Document* pDocument, CFX_ByteString csFontName); +class CPDF_Link { + public: + CPDF_Link() : m_pDict(nullptr) {} + explicit CPDF_Link(CPDF_Dictionary* pDict) : m_pDict(pDict) {} - static CFX_ByteString GetNativeFont(uint8_t iCharSet, void* pLogFont = NULL); + CPDF_Dictionary* GetDict() const { return m_pDict; } - static CFX_ByteString GetNativeFont(void* pLogFont = NULL); + CFX_FloatRect GetRect(); + CPDF_Dest GetDest(CPDF_Document* pDoc); + CPDF_Action GetAction(); - static uint8_t GetNativeCharSet(); - - static CPDF_Font* AddNativeFont(uint8_t iCharSet, const CPDF_Document* pDocument); - - static CPDF_Font* AddNativeFont(const CPDF_Document* pDocument); + protected: + CPDF_Dictionary* m_pDict; +}; +#define ANNOTFLAG_INVISIBLE 0x0001 +#define ANNOTFLAG_HIDDEN 0x0002 +#define ANNOTFLAG_PRINT 0x0004 +#define ANNOTFLAG_NOZOOM 0x0008 +#define ANNOTFLAG_NOROTATE 0x0010 +#define ANNOTFLAG_NOVIEW 0x0020 +#define ANNOTFLAG_READONLY 0x0040 +#define ANNOTFLAG_LOCKED 0x0080 +#define ANNOTFLAG_TOGGLENOVIEW 0x0100 +class CPDF_Annot : public CFX_PrivateData { + public: + enum AppearanceMode { Normal, Rollover, Down }; + CPDF_Annot(CPDF_Dictionary* pDict, CPDF_AnnotList* pList); + ~CPDF_Annot(); - FX_BOOL ValidateFieldName(CFX_WideString& csNewFieldName, int iType); + CFX_ByteString GetSubType() const; - FX_BOOL ValidateFieldName(const CPDF_FormField* pField, CFX_WideString& csNewFieldName); + FX_DWORD GetFlags() const; - FX_BOOL ValidateFieldName(const CPDF_FormControl* pControl, CFX_WideString& csNewFieldName); + void GetRect(CFX_FloatRect& rect) const; + CPDF_Dictionary* GetAnnotDict(); + FX_BOOL DrawAppearance(const CPDF_Page* pPage, + CFX_RenderDevice* pDevice, + const CFX_AffineMatrix* pUser2Device, + AppearanceMode mode, + const CPDF_RenderOptions* pOptions); + FX_BOOL DrawInContext(const CPDF_Page* pPage, + const CPDF_RenderContext* pContext, + const CFX_AffineMatrix* pUser2Device, + AppearanceMode mode); - FX_DWORD CountFields(const CFX_WideString &csFieldName = L""); + void ClearCachedAP(); - CPDF_FormField* GetField(FX_DWORD index, const CFX_WideString &csFieldName = L""); + void DrawBorder(CFX_RenderDevice* pDevice, + const CFX_AffineMatrix* pUser2Device, + const CPDF_RenderOptions* pOptions); - void GetAllFieldNames(CFX_WideStringArray& allFieldNames); + CPDF_Form* GetAPForm(const CPDF_Page* pPage, AppearanceMode mode); - FX_BOOL IsValidFormField(const void* pField); + private: + CPDF_Dictionary* const m_pAnnotDict; - CPDF_FormField* GetFieldByDict(CPDF_Dictionary* pFieldDict) const; + CPDF_AnnotList* const m_pList; + const CFX_ByteString m_sSubtype; + CFX_MapPtrToPtr m_APMap; +}; +class CPDF_AnnotList { + public: + CPDF_AnnotList(CPDF_Page* pPage); + + ~CPDF_AnnotList(); + + void GetAnnotMatrix(const CPDF_Dictionary* pAnnotDict, + const CFX_Matrix* pUser2Device, + CFX_Matrix& matrix) const; + + void GetAnnotRect(const CPDF_Dictionary* pAnnotDict, + const CFX_Matrix* pUser2Device, + CPDF_Rect& rtAnnot) const; + + void DisplayAnnots(const CPDF_Page* pPage, + CFX_RenderDevice* pDevice, + CFX_AffineMatrix* pMatrix, + FX_BOOL bShowWidget, + CPDF_RenderOptions* pOptions); + + void DisplayAnnots(const CPDF_Page* pPage, + CPDF_RenderContext* pContext, + FX_BOOL bPrinting, + CFX_AffineMatrix* pMatrix, + FX_BOOL bShowWidget, + CPDF_RenderOptions* pOptions) { + DisplayAnnots(pPage, NULL, pContext, bPrinting, pMatrix, + bShowWidget ? 3 : 1, pOptions, NULL); + } + + void DisplayAnnots(const CPDF_Page* pPage, + CPDF_RenderContext* pContext, + FX_BOOL bPrinting, + CFX_AffineMatrix* pMatrix, + FX_BOOL bShowWidget, + CPDF_RenderOptions* pOptions, + FX_RECT* pClipRect) { + DisplayAnnots(pPage, NULL, pContext, bPrinting, pMatrix, + bShowWidget ? 3 : 1, pOptions, pClipRect); + } + + void DisplayAnnots(const CPDF_Page* pPage, + CFX_RenderDevice* pDevice, + CPDF_RenderContext* pContext, + FX_BOOL bPrinting, + CFX_AffineMatrix* pMatrix, + FX_DWORD dwAnnotFlags, + CPDF_RenderOptions* pOptions, + FX_RECT* pClipRect); + + CPDF_Annot* GetAt(int index) { return (CPDF_Annot*)m_AnnotList.GetAt(index); } + + int Count() { return m_AnnotList.GetSize(); } + + int GetIndex(CPDF_Annot* pAnnot); + + CPDF_Document* GetDocument() const { return m_pDocument; } + + protected: + CFX_PtrArray m_AnnotList; + + CPDF_Dictionary* m_pPageDict; + + CPDF_Document* m_pDocument; + + CFX_PtrArray m_Borders; + + void DisplayPass(const CPDF_Page* pPage, + CFX_RenderDevice* pDevice, + CPDF_RenderContext* pContext, + FX_BOOL bPrinting, + CFX_AffineMatrix* pMatrix, + FX_BOOL bWidget, + CPDF_RenderOptions* pOptions, + FX_RECT* clip_rect); + friend class CPDF_Annot; +}; +#define COLORTYPE_TRANSPARENT 0 +#define COLORTYPE_GRAY 1 +#define COLORTYPE_RGB 2 +#define COLORTYPE_CMYK 3 +class CPDF_DefaultAppearance { + public: + CPDF_DefaultAppearance(const CFX_ByteString& csDA = "") { m_csDA = csDA; } - FX_DWORD CountControls(CFX_WideString csFieldName = L""); + CPDF_DefaultAppearance(const CPDF_DefaultAppearance& cDA) { + m_csDA = (CFX_ByteString)(CPDF_DefaultAppearance&)cDA; + } - CPDF_FormControl* GetControl(FX_DWORD index, CFX_WideString csFieldName = L""); + operator CFX_ByteString() const { return m_csDA; } - FX_BOOL IsValidFormControl(const void* pControl); + const CPDF_DefaultAppearance& operator=(const CFX_ByteString& csDA) { + m_csDA = csDA; + return *this; + } - int CountPageControls(CPDF_Page* pPage) const; + const CPDF_DefaultAppearance& operator=(const CPDF_DefaultAppearance& cDA) { + m_csDA = (CFX_ByteString)(CPDF_DefaultAppearance&)cDA; + return *this; + } - CPDF_FormControl* GetPageControl(CPDF_Page* pPage, int index) const; + FX_BOOL HasFont(); + CFX_ByteString GetFontString(); - CPDF_FormControl* GetControlAtPoint(CPDF_Page* pPage, FX_FLOAT pdf_x, FX_FLOAT pdf_y) const; + void GetFont(CFX_ByteString& csFontNameTag, FX_FLOAT& fFontSize); - CPDF_FormControl* GetControlByDict(CPDF_Dictionary* pWidgetDict) const; + FX_BOOL HasColor(FX_BOOL bStrokingOperation = FALSE); + CFX_ByteString GetColorString(FX_BOOL bStrokingOperation = FALSE); + void GetColor(int& iColorType, + FX_FLOAT fc[4], + FX_BOOL bStrokingOperation = FALSE); + void GetColor(FX_ARGB& color, + int& iColorType, + FX_BOOL bStrokingOperation = FALSE); - FX_DWORD CountInternalFields(const CFX_WideString& csFieldName = L"") const; + FX_BOOL HasTextMatrix(); - CPDF_Dictionary* GetInternalField(FX_DWORD index, const CFX_WideString& csFieldName = L"") const; + CFX_ByteString GetTextMatrixString(); + CFX_AffineMatrix GetTextMatrix(); + protected: + CFX_ByteString m_csDA; +}; +#define FIELDTYPE_UNKNOWN 0 +#define FIELDTYPE_PUSHBUTTON 1 +#define FIELDTYPE_CHECKBOX 2 +#define FIELDTYPE_RADIOBUTTON 3 +#define FIELDTYPE_COMBOBOX 4 +#define FIELDTYPE_LISTBOX 5 +#define FIELDTYPE_TEXTFIELD 6 +#define FIELDTYPE_SIGNATURE 7 +class CPDF_InterForm : public CFX_PrivateData { + public: + CPDF_InterForm(CPDF_Document* pDocument, FX_BOOL bUpdateAP); + ~CPDF_InterForm(); + static void EnableUpdateAP(FX_BOOL bUpdateAP); - CPDF_Document* GetDocument() const - { - return m_pDocument; - } + static FX_BOOL UpdatingAPEnabled(); - CPDF_Dictionary* GetFormDict() const - { - return m_pFormDict; - } + static CFX_ByteString GenerateNewResourceName(const CPDF_Dictionary* pResDict, + const FX_CHAR* csType, + int iMinLen = 2, + const FX_CHAR* csPrefix = ""); + static CPDF_Font* AddSystemDefaultFont(const CPDF_Document* pDocument); + static CPDF_Font* AddSystemFont(const CPDF_Document* pDocument, + CFX_ByteString csFontName, + uint8_t iCharSet = 1); + static CPDF_Font* AddSystemFont(const CPDF_Document* pDocument, + CFX_WideString csFontName, + uint8_t iCharSet = 1); - FX_BOOL NeedConstructAP(); + static CPDF_Font* AddStandardFont(const CPDF_Document* pDocument, + CFX_ByteString csFontName); - void NeedConstructAP(FX_BOOL bNeedAP); + static CFX_ByteString GetNativeFont(uint8_t iCharSet, void* pLogFont = NULL); + static CFX_ByteString GetNativeFont(void* pLogFont = NULL); + static uint8_t GetNativeCharSet(); + static CPDF_Font* AddNativeFont(uint8_t iCharSet, + const CPDF_Document* pDocument); - int CountFieldsInCalculationOrder(); + static CPDF_Font* AddNativeFont(const CPDF_Document* pDocument); - CPDF_FormField* GetFieldInCalculationOrder(int index); + FX_BOOL ValidateFieldName(CFX_WideString& csNewFieldName, int iType); - int FindFieldInCalculationOrder(const CPDF_FormField* pField); + FX_BOOL ValidateFieldName(const CPDF_FormField* pField, + CFX_WideString& csNewFieldName); + FX_BOOL ValidateFieldName(const CPDF_FormControl* pControl, + CFX_WideString& csNewFieldName); + FX_DWORD CountFields(const CFX_WideString& csFieldName = L""); + CPDF_FormField* GetField(FX_DWORD index, + const CFX_WideString& csFieldName = L""); - FX_DWORD CountFormFonts(); + void GetAllFieldNames(CFX_WideStringArray& allFieldNames); - CPDF_Font* GetFormFont(FX_DWORD index, CFX_ByteString& csNameTag); + FX_BOOL IsValidFormField(const void* pField); - CPDF_Font* GetFormFont(CFX_ByteString csNameTag); + CPDF_FormField* GetFieldByDict(CPDF_Dictionary* pFieldDict) const; - CPDF_Font* GetFormFont(CFX_ByteString csFontName, CFX_ByteString& csNameTag); + FX_DWORD CountControls(CFX_WideString csFieldName = L""); - CPDF_Font* GetNativeFormFont(uint8_t iCharSet, CFX_ByteString& csNameTag); + CPDF_FormControl* GetControl(FX_DWORD index, + CFX_WideString csFieldName = L""); - CPDF_Font* GetNativeFormFont(CFX_ByteString& csNameTag); + FX_BOOL IsValidFormControl(const void* pControl); - FX_BOOL FindFormFont(const CPDF_Font* pFont, CFX_ByteString& csNameTag); + int CountPageControls(CPDF_Page* pPage) const; - FX_BOOL FindFormFont(CFX_ByteString csFontName, CPDF_Font*& pFont, CFX_ByteString& csNameTag); + CPDF_FormControl* GetPageControl(CPDF_Page* pPage, int index) const; - inline FX_BOOL FindFormFont(CFX_WideString csFontName, CPDF_Font*& pFont, CFX_ByteString& csNameTag) - { - return FindFormFont(PDF_EncodeText(csFontName), pFont, csNameTag); - } + CPDF_FormControl* GetControlAtPoint(CPDF_Page* pPage, + FX_FLOAT pdf_x, + FX_FLOAT pdf_y) const; + CPDF_FormControl* GetControlByDict(CPDF_Dictionary* pWidgetDict) const; + FX_DWORD CountInternalFields(const CFX_WideString& csFieldName = L"") const; + CPDF_Dictionary* GetInternalField( + FX_DWORD index, + const CFX_WideString& csFieldName = L"") const; + CPDF_Document* GetDocument() const { return m_pDocument; } - void AddFormFont(const CPDF_Font* pFont, CFX_ByteString& csNameTag); + CPDF_Dictionary* GetFormDict() const { return m_pFormDict; } - CPDF_Font* AddNativeFormFont(uint8_t iCharSet, CFX_ByteString& csNameTag); + FX_BOOL NeedConstructAP(); - CPDF_Font* AddNativeFormFont(CFX_ByteString& csNameTag); + void NeedConstructAP(FX_BOOL bNeedAP); - void RemoveFormFont(const CPDF_Font* pFont); + int CountFieldsInCalculationOrder(); - void RemoveFormFont(CFX_ByteString csNameTag); + CPDF_FormField* GetFieldInCalculationOrder(int index); + int FindFieldInCalculationOrder(const CPDF_FormField* pField); + FX_DWORD CountFormFonts(); + CPDF_Font* GetFormFont(FX_DWORD index, CFX_ByteString& csNameTag); - CPDF_DefaultAppearance GetDefaultAppearance(); + CPDF_Font* GetFormFont(CFX_ByteString csNameTag); - CPDF_Font* GetDefaultFormFont(); + CPDF_Font* GetFormFont(CFX_ByteString csFontName, CFX_ByteString& csNameTag); + CPDF_Font* GetNativeFormFont(uint8_t iCharSet, CFX_ByteString& csNameTag); + CPDF_Font* GetNativeFormFont(CFX_ByteString& csNameTag); - int GetFormAlignment(); + FX_BOOL FindFormFont(const CPDF_Font* pFont, CFX_ByteString& csNameTag); + FX_BOOL FindFormFont(CFX_ByteString csFontName, + CPDF_Font*& pFont, + CFX_ByteString& csNameTag); + inline FX_BOOL FindFormFont(CFX_WideString csFontName, + CPDF_Font*& pFont, + CFX_ByteString& csNameTag) { + return FindFormFont(PDF_EncodeText(csFontName), pFont, csNameTag); + } + void AddFormFont(const CPDF_Font* pFont, CFX_ByteString& csNameTag); - CPDF_FormField* CheckRequiredFields(const CFX_PtrArray *fields = NULL, FX_BOOL bIncludeOrExclude = TRUE) const; + CPDF_Font* AddNativeFormFont(uint8_t iCharSet, CFX_ByteString& csNameTag); - CFDF_Document* ExportToFDF(const CFX_WideStringC& pdf_path, FX_BOOL bSimpleFileSpec = FALSE) const; + CPDF_Font* AddNativeFormFont(CFX_ByteString& csNameTag); - CFDF_Document* ExportToFDF(const CFX_WideStringC& pdf_path, CFX_PtrArray& fields, FX_BOOL bIncludeOrExclude = TRUE, FX_BOOL bSimpleFileSpec = FALSE) const; + void RemoveFormFont(const CPDF_Font* pFont); - FX_BOOL ImportFromFDF(const CFDF_Document* pFDFDoc, FX_BOOL bNotify = FALSE); + void RemoveFormFont(CFX_ByteString csNameTag); + CPDF_DefaultAppearance GetDefaultAppearance(); + CPDF_Font* GetDefaultFormFont(); + int GetFormAlignment(); - FX_BOOL ResetForm(const CFX_PtrArray& fields, FX_BOOL bIncludeOrExclude = TRUE, FX_BOOL bNotify = FALSE); + CPDF_FormField* CheckRequiredFields(const CFX_PtrArray* fields = NULL, + FX_BOOL bIncludeOrExclude = TRUE) const; - FX_BOOL ResetForm(FX_BOOL bNotify = FALSE); + CFDF_Document* ExportToFDF(const CFX_WideStringC& pdf_path, + FX_BOOL bSimpleFileSpec = FALSE) const; - void ReloadForm(); + CFDF_Document* ExportToFDF(const CFX_WideStringC& pdf_path, + CFX_PtrArray& fields, + FX_BOOL bIncludeOrExclude = TRUE, + FX_BOOL bSimpleFileSpec = FALSE) const; - CPDF_FormNotify* GetFormNotify() const - { - return m_pFormNotify; - } + FX_BOOL ImportFromFDF(const CFDF_Document* pFDFDoc, FX_BOOL bNotify = FALSE); - void SetFormNotify(const CPDF_FormNotify* pNotify); + FX_BOOL ResetForm(const CFX_PtrArray& fields, + FX_BOOL bIncludeOrExclude = TRUE, + FX_BOOL bNotify = FALSE); + FX_BOOL ResetForm(FX_BOOL bNotify = FALSE); - int GetPageWithWidget(int iCurPage, FX_BOOL bNext); + void ReloadForm(); + CPDF_FormNotify* GetFormNotify() const { return m_pFormNotify; } + void SetFormNotify(const CPDF_FormNotify* pNotify); - FX_BOOL IsUpdated() - { - return m_bUpdated; - } + int GetPageWithWidget(int iCurPage, FX_BOOL bNext); - void ClearUpdatedFlag() - { - m_bUpdated = FALSE; - } + FX_BOOL IsUpdated() { return m_bUpdated; } + void ClearUpdatedFlag() { m_bUpdated = FALSE; } - FX_BOOL HasXFAForm() const; + FX_BOOL HasXFAForm() const; - void FixPageFields(const CPDF_Page* pPage); -protected: + void FixPageFields(const CPDF_Page* pPage); - static FX_BOOL m_bUpdateAP; + protected: + static FX_BOOL m_bUpdateAP; - void LoadField(CPDF_Dictionary* pFieldDict, int nLevel = 0); + void LoadField(CPDF_Dictionary* pFieldDict, int nLevel = 0); - CPDF_Object* GetFieldAttr(CPDF_Dictionary* pFieldDict, const FX_CHAR* name); + CPDF_Object* GetFieldAttr(CPDF_Dictionary* pFieldDict, const FX_CHAR* name); - CPDF_FormField* AddTerminalField(const CPDF_Dictionary* pFieldDict); + CPDF_FormField* AddTerminalField(const CPDF_Dictionary* pFieldDict); - CPDF_FormControl* AddControl(const CPDF_FormField* pField, const CPDF_Dictionary* pWidgetDict); + CPDF_FormControl* AddControl(const CPDF_FormField* pField, + const CPDF_Dictionary* pWidgetDict); - void FDF_ImportField(CPDF_Dictionary* pField, const CFX_WideString& parent_name, FX_BOOL bNotify = FALSE, int nLevel = 0); + void FDF_ImportField(CPDF_Dictionary* pField, + const CFX_WideString& parent_name, + FX_BOOL bNotify = FALSE, + int nLevel = 0); - FX_BOOL ValidateFieldName(CFX_WideString& csNewFieldName, int iType, const CPDF_FormField* pExcludedField, const CPDF_FormControl* pExcludedControl); + FX_BOOL ValidateFieldName(CFX_WideString& csNewFieldName, + int iType, + const CPDF_FormField* pExcludedField, + const CPDF_FormControl* pExcludedControl); - int CompareFieldName(const CFX_WideString& name1, const CFX_WideString& name2); + int CompareFieldName(const CFX_WideString& name1, + const CFX_WideString& name2); - int CompareFieldName(const CFX_ByteString& name1, const CFX_ByteString& name2); + int CompareFieldName(const CFX_ByteString& name1, + const CFX_ByteString& name2); - CPDF_Document* m_pDocument; + CPDF_Document* m_pDocument; - FX_BOOL m_bGenerateAP; + FX_BOOL m_bGenerateAP; - CPDF_Dictionary* m_pFormDict; + CPDF_Dictionary* m_pFormDict; - CFX_MapPtrToPtr m_ControlMap; + CFX_MapPtrToPtr m_ControlMap; - CFieldTree *m_pFieldTree; + CFieldTree* m_pFieldTree; - CFX_ByteString m_bsEncoding; + CFX_ByteString m_bsEncoding; - CPDF_FormNotify* m_pFormNotify; + CPDF_FormNotify* m_pFormNotify; - FX_BOOL m_bUpdated; - friend class CPDF_FormControl; - friend class CPDF_FormField; + FX_BOOL m_bUpdated; + friend class CPDF_FormControl; + friend class CPDF_FormField; }; -#define FORMFIELD_READONLY 0x01 -#define FORMFIELD_REQUIRED 0x02 -#define FORMFIELD_NOEXPORT 0x04 -#define FORMRADIO_NOTOGGLEOFF 0x100 -#define FORMRADIO_UNISON 0x200 -#define FORMTEXT_MULTILINE 0x100 -#define FORMTEXT_PASSWORD 0x200 -#define FORMTEXT_NOSCROLL 0x400 -#define FORMTEXT_COMB 0x800 -#define FORMCOMBO_EDIT 0x100 -#define FORMLIST_MULTISELECT 0x100 -class CPDF_FormField -{ -public: - - enum Type { - Unknown, - PushButton, - RadioButton, - CheckBox, - Text, - RichText, - File, - ListBox, - ComboBox, - Sign - }; - - CFX_WideString GetFullName(); - - Type GetType() - { - return m_Type; - } - - FX_DWORD GetFlags() - { - return m_Flags; - } - - CPDF_InterForm* GetInterForm() const - { - return m_pForm; - } - - CPDF_Dictionary* GetFieldDict() const - { - return m_pDict; - } - - void SetFieldDict(CPDF_Dictionary* pDict) - { - m_pDict = pDict; - } - - FX_BOOL ResetField(FX_BOOL bNotify = FALSE); - - - - int CountControls() - { - return m_ControlList.GetSize(); - } - - CPDF_FormControl* GetControl(int index) - { - return (CPDF_FormControl*)m_ControlList.GetAt(index); - } - - int GetControlIndex(const CPDF_FormControl* pControl); - - - - - int GetFieldType(); - - - - - CPDF_AAction GetAdditionalAction(); - - - - - CFX_WideString GetAlternateName(); - - - - - CFX_WideString GetMappingName(); - - - - - FX_DWORD GetFieldFlags(); - - - - - CFX_ByteString GetDefaultStyle(); - - +#define FORMFIELD_READONLY 0x01 +#define FORMFIELD_REQUIRED 0x02 +#define FORMFIELD_NOEXPORT 0x04 +#define FORMRADIO_NOTOGGLEOFF 0x100 +#define FORMRADIO_UNISON 0x200 +#define FORMTEXT_MULTILINE 0x100 +#define FORMTEXT_PASSWORD 0x200 +#define FORMTEXT_NOSCROLL 0x400 +#define FORMTEXT_COMB 0x800 +#define FORMCOMBO_EDIT 0x100 +#define FORMLIST_MULTISELECT 0x100 +class CPDF_FormField { + public: + enum Type { + Unknown, + PushButton, + RadioButton, + CheckBox, + Text, + RichText, + File, + ListBox, + ComboBox, + Sign + }; + CFX_WideString GetFullName(); - CFX_WideString GetRichTextString(); + Type GetType() { return m_Type; } + FX_DWORD GetFlags() { return m_Flags; } + CPDF_InterForm* GetInterForm() const { return m_pForm; } - CFX_WideString GetValue(); + CPDF_Dictionary* GetFieldDict() const { return m_pDict; } - CFX_WideString GetDefaultValue(); + void SetFieldDict(CPDF_Dictionary* pDict) { m_pDict = pDict; } - FX_BOOL SetValue(const CFX_WideString& value, FX_BOOL bNotify = FALSE); + FX_BOOL ResetField(FX_BOOL bNotify = FALSE); + int CountControls() { return m_ControlList.GetSize(); } + CPDF_FormControl* GetControl(int index) { + return (CPDF_FormControl*)m_ControlList.GetAt(index); + } + int GetControlIndex(const CPDF_FormControl* pControl); + int GetFieldType(); - int GetMaxLen(); + CPDF_AAction GetAdditionalAction(); + CFX_WideString GetAlternateName(); + CFX_WideString GetMappingName(); + FX_DWORD GetFieldFlags(); - int CountSelectedItems(); + CFX_ByteString GetDefaultStyle(); - int GetSelectedIndex(int index); + CFX_WideString GetRichTextString(); - FX_BOOL ClearSelection(FX_BOOL bNotify = FALSE); + CFX_WideString GetValue(); - FX_BOOL IsItemSelected(int index); + CFX_WideString GetDefaultValue(); - FX_BOOL SetItemSelection(int index, FX_BOOL bSelected, FX_BOOL bNotify = FALSE); + FX_BOOL SetValue(const CFX_WideString& value, FX_BOOL bNotify = FALSE); - FX_BOOL IsItemDefaultSelected(int index); + int GetMaxLen(); - int GetDefaultSelectedItem(); + int CountSelectedItems(); + int GetSelectedIndex(int index); + FX_BOOL ClearSelection(FX_BOOL bNotify = FALSE); + FX_BOOL IsItemSelected(int index); - int CountOptions(); + FX_BOOL SetItemSelection(int index, + FX_BOOL bSelected, + FX_BOOL bNotify = FALSE); - CFX_WideString GetOptionLabel(int index); + FX_BOOL IsItemDefaultSelected(int index); - CFX_WideString GetOptionValue(int index); + int GetDefaultSelectedItem(); - int FindOption(CFX_WideString csOptLabel); + int CountOptions(); - int FindOptionValue(const CFX_WideString& csOptValue, int iStartIndex = 0); + CFX_WideString GetOptionLabel(int index); + CFX_WideString GetOptionValue(int index); + int FindOption(CFX_WideString csOptLabel); + int FindOptionValue(const CFX_WideString& csOptValue, int iStartIndex = 0); - FX_BOOL CheckControl(int iControlIndex, FX_BOOL bChecked, FX_BOOL bNotify = FALSE); + FX_BOOL CheckControl(int iControlIndex, + FX_BOOL bChecked, + FX_BOOL bNotify = FALSE); + int GetTopVisibleIndex(); + int CountSelectedOptions(); + int GetSelectedOptionIndex(int index); - int GetTopVisibleIndex(); + FX_BOOL IsOptionSelected(int iOptIndex); + FX_BOOL SelectOption(int iOptIndex, + FX_BOOL bSelected, + FX_BOOL bNotify = FALSE); + FX_BOOL ClearSelectedOptions(FX_BOOL bNotify = FALSE); + FX_FLOAT GetFontSize() { return m_FontSize; } - int CountSelectedOptions(); + CPDF_Font* GetFont() { return m_pFont; } - int GetSelectedOptionIndex(int index); + protected: + CPDF_FormField(CPDF_InterForm* pForm, CPDF_Dictionary* pDict); - FX_BOOL IsOptionSelected(int iOptIndex); + ~CPDF_FormField(); - FX_BOOL SelectOption(int iOptIndex, FX_BOOL bSelected, FX_BOOL bNotify = FALSE); + CPDF_FormField::Type m_Type; - FX_BOOL ClearSelectedOptions(FX_BOOL bNotify = FALSE); + FX_DWORD m_Flags; + CPDF_InterForm* m_pForm; + CPDF_Dictionary* m_pDict; + CFX_PtrArray m_ControlList; + friend class CPDF_InterForm; + friend class CPDF_FormControl; - FX_FLOAT GetFontSize() - { - return m_FontSize; - } + CFX_WideString GetValue(FX_BOOL bDefault); - CPDF_Font* GetFont() - { - return m_pFont; - } + FX_BOOL SetValue(const CFX_WideString& value, + FX_BOOL bDefault, + FX_BOOL bNotify); -protected: + void SyncFieldFlags(); - CPDF_FormField(CPDF_InterForm* pForm, CPDF_Dictionary* pDict); + int FindListSel(CPDF_String* str); - ~CPDF_FormField(); + CFX_WideString GetOptionText(int index, int sub_index); - CPDF_FormField::Type m_Type; + void LoadDA(); - FX_DWORD m_Flags; + void UpdateAP(CPDF_FormControl* pControl); - CPDF_InterForm* m_pForm; + CFX_WideString GetCheckValue(FX_BOOL bDefault); - CPDF_Dictionary* m_pDict; + FX_BOOL SetCheckValue(const CFX_WideString& value, + FX_BOOL bDefault, + FX_BOOL bNotify); - CFX_PtrArray m_ControlList; - friend class CPDF_InterForm; - friend class CPDF_FormControl; + FX_FLOAT m_FontSize; - - - CFX_WideString GetValue(FX_BOOL bDefault); - - FX_BOOL SetValue(const CFX_WideString& value, FX_BOOL bDefault, FX_BOOL bNotify); - - - void SyncFieldFlags(); - - int FindListSel(CPDF_String* str); - - CFX_WideString GetOptionText(int index, int sub_index); - - void LoadDA(); - - void UpdateAP(CPDF_FormControl* pControl); - - - - CFX_WideString GetCheckValue(FX_BOOL bDefault); - - FX_BOOL SetCheckValue(const CFX_WideString& value, FX_BOOL bDefault, FX_BOOL bNotify); - - - FX_FLOAT m_FontSize; - - CPDF_Font* m_pFont; + CPDF_Font* m_pFont; }; -CPDF_Object* FPDF_GetFieldAttr(CPDF_Dictionary* pFieldDict, const FX_CHAR* name, int nLevel = 0); -class CPDF_IconFit -{ -public: - - CPDF_IconFit(CPDF_Dictionary* pDict = NULL) - { - m_pDict = pDict; - } - - operator CPDF_Dictionary*() const - { - return m_pDict; - } - - - - - enum ScaleMethod { - Always = 0, - Bigger, - Smaller, - Never - }; - - ScaleMethod GetScaleMethod(); - - - - - FX_BOOL IsProportionalScale(); - - - +CPDF_Object* FPDF_GetFieldAttr(CPDF_Dictionary* pFieldDict, + const FX_CHAR* name, + int nLevel = 0); +class CPDF_IconFit { + public: + CPDF_IconFit(CPDF_Dictionary* pDict = NULL) { m_pDict = pDict; } - void GetIconPosition(FX_FLOAT& fLeft, FX_FLOAT& fBottom); + operator CPDF_Dictionary*() const { return m_pDict; } + enum ScaleMethod { Always = 0, Bigger, Smaller, Never }; + ScaleMethod GetScaleMethod(); + FX_BOOL IsProportionalScale(); - FX_BOOL GetFittingBounds(); + void GetIconPosition(FX_FLOAT& fLeft, FX_FLOAT& fBottom); + FX_BOOL GetFittingBounds(); - CPDF_Dictionary* m_pDict; + CPDF_Dictionary* m_pDict; }; -#define TEXTPOS_CAPTION 0 -#define TEXTPOS_ICON 1 -#define TEXTPOS_BELOW 2 -#define TEXTPOS_ABOVE 3 -#define TEXTPOS_RIGHT 4 -#define TEXTPOS_LEFT 5 -#define TEXTPOS_OVERLAID 6 -class CPDF_FormControl -{ -public: - - CPDF_FormField::Type GetType() - { - return m_pField->GetType(); - } - - CPDF_InterForm* GetInterForm() const - { - return m_pForm; - } - - CPDF_FormField* GetField() const - { - return m_pField; - } - - CPDF_Dictionary* GetWidget() const - { - return m_pWidgetDict; - } - - CFX_FloatRect GetRect(); - - void DrawControl(CFX_RenderDevice* pDevice, CFX_AffineMatrix* pMatrix, - CPDF_Page* pPage, CPDF_Annot::AppearanceMode mode, const CPDF_RenderOptions* pOptions = NULL); - - - - CFX_ByteString GetCheckedAPState(); - - CFX_WideString GetExportValue(); - - FX_BOOL IsChecked(); - - FX_BOOL IsDefaultChecked(); - - - - - enum HighlightingMode { - None = 0, - Invert, - Outline, - Push, - Toggle - }; - - HighlightingMode GetHighlightingMode(); - - - - - FX_BOOL HasMKEntry(CFX_ByteString csEntry); - - - - - int GetRotation(); - - - - - inline FX_ARGB GetBorderColor(int& iColorType) - { - return GetColor(iColorType, "BC"); - } - - inline FX_FLOAT GetOriginalBorderColor(int index) - { - return GetOriginalColor(index, "BC"); - } +#define TEXTPOS_CAPTION 0 +#define TEXTPOS_ICON 1 +#define TEXTPOS_BELOW 2 +#define TEXTPOS_ABOVE 3 +#define TEXTPOS_RIGHT 4 +#define TEXTPOS_LEFT 5 +#define TEXTPOS_OVERLAID 6 +class CPDF_FormControl { + public: + CPDF_FormField::Type GetType() { return m_pField->GetType(); } - inline void GetOriginalBorderColor(int& iColorType, FX_FLOAT fc[4]) - { - GetOriginalColor(iColorType, fc, "BC"); - } + CPDF_InterForm* GetInterForm() const { return m_pForm; } + CPDF_FormField* GetField() const { return m_pField; } + CPDF_Dictionary* GetWidget() const { return m_pWidgetDict; } + CFX_FloatRect GetRect(); - inline FX_ARGB GetBackgroundColor(int& iColorType) - { - return GetColor(iColorType, "BG"); - } + void DrawControl(CFX_RenderDevice* pDevice, + CFX_AffineMatrix* pMatrix, + CPDF_Page* pPage, + CPDF_Annot::AppearanceMode mode, + const CPDF_RenderOptions* pOptions = NULL); - inline FX_FLOAT GetOriginalBackgroundColor(int index) - { - return GetOriginalColor(index, "BG"); - } + CFX_ByteString GetCheckedAPState(); - inline void GetOriginalBackgroundColor(int& iColorType, FX_FLOAT fc[4]) - { - GetOriginalColor(iColorType, fc, "BG"); - } + CFX_WideString GetExportValue(); + FX_BOOL IsChecked(); + FX_BOOL IsDefaultChecked(); + enum HighlightingMode { None = 0, Invert, Outline, Push, Toggle }; - inline CFX_WideString GetNormalCaption() - { - return GetCaption("CA"); - } + HighlightingMode GetHighlightingMode(); + FX_BOOL HasMKEntry(CFX_ByteString csEntry); + int GetRotation(); + inline FX_ARGB GetBorderColor(int& iColorType) { + return GetColor(iColorType, "BC"); + } - inline CFX_WideString GetRolloverCaption() - { - return GetCaption("RC"); - } + inline FX_FLOAT GetOriginalBorderColor(int index) { + return GetOriginalColor(index, "BC"); + } + inline void GetOriginalBorderColor(int& iColorType, FX_FLOAT fc[4]) { + GetOriginalColor(iColorType, fc, "BC"); + } + inline FX_ARGB GetBackgroundColor(int& iColorType) { + return GetColor(iColorType, "BG"); + } + inline FX_FLOAT GetOriginalBackgroundColor(int index) { + return GetOriginalColor(index, "BG"); + } - inline CFX_WideString GetDownCaption() - { - return GetCaption("AC"); - } + inline void GetOriginalBackgroundColor(int& iColorType, FX_FLOAT fc[4]) { + GetOriginalColor(iColorType, fc, "BG"); + } + inline CFX_WideString GetNormalCaption() { return GetCaption("CA"); } + inline CFX_WideString GetRolloverCaption() { return GetCaption("RC"); } + inline CFX_WideString GetDownCaption() { return GetCaption("AC"); } - inline CPDF_Stream* GetNormalIcon() - { - return GetIcon("I"); - } + inline CPDF_Stream* GetNormalIcon() { return GetIcon("I"); } + inline CPDF_Stream* GetRolloverIcon() { return GetIcon("RI"); } + inline CPDF_Stream* GetDownIcon() { return GetIcon("IX"); } + CPDF_IconFit GetIconFit(); - inline CPDF_Stream* GetRolloverIcon() - { - return GetIcon("RI"); - } + int GetTextPosition(); + CPDF_Action GetAction(); + CPDF_AAction GetAdditionalAction(); + CPDF_DefaultAppearance GetDefaultAppearance(); - inline CPDF_Stream* GetDownIcon() - { - return GetIcon("IX"); - } + CPDF_Font* GetDefaultControlFont(); + int GetControlAlignment(); + protected: + CPDF_FormControl(CPDF_FormField* pField, CPDF_Dictionary* pWidgetDict); + CFX_ByteString GetOnStateName(); - CPDF_IconFit GetIconFit(); + void SetOnStateName(const CFX_ByteString& csOn); + void CheckControl(FX_BOOL bChecked); + FX_ARGB GetColor(int& iColorType, CFX_ByteString csEntry); + FX_FLOAT GetOriginalColor(int index, CFX_ByteString csEntry); - int GetTextPosition(); + void GetOriginalColor(int& iColorType, + FX_FLOAT fc[4], + CFX_ByteString csEntry); + CFX_WideString GetCaption(CFX_ByteString csEntry); + CPDF_Stream* GetIcon(CFX_ByteString csEntry); + CPDF_ApSettings GetMK(FX_BOOL bCreate); - CPDF_Action GetAction(); + CPDF_InterForm* m_pForm; + CPDF_FormField* m_pField; + CPDF_Dictionary* m_pWidgetDict; + friend class CPDF_InterForm; + friend class CPDF_FormField; +}; +class CPDF_FormNotify { + public: + virtual ~CPDF_FormNotify() {} + virtual int BeforeValueChange(const CPDF_FormField* pField, + CFX_WideString& csValue) { + return 0; + } - CPDF_AAction GetAdditionalAction(); - - - - - CPDF_DefaultAppearance GetDefaultAppearance(); - - CPDF_Font* GetDefaultControlFont(); - - - - - int GetControlAlignment(); - -protected: - - CPDF_FormControl(CPDF_FormField* pField, CPDF_Dictionary* pWidgetDict); - - CFX_ByteString GetOnStateName(); - - void SetOnStateName(const CFX_ByteString& csOn); - - void CheckControl(FX_BOOL bChecked); - - FX_ARGB GetColor(int& iColorType, CFX_ByteString csEntry); - - FX_FLOAT GetOriginalColor(int index, CFX_ByteString csEntry); + virtual int AfterValueChange(const CPDF_FormField* pField) { return 0; } - void GetOriginalColor(int& iColorType, FX_FLOAT fc[4], CFX_ByteString csEntry); + virtual int BeforeSelectionChange(const CPDF_FormField* pField, + CFX_WideString& csValue) { + return 0; + } - CFX_WideString GetCaption(CFX_ByteString csEntry); + virtual int AfterSelectionChange(const CPDF_FormField* pField) { return 0; } - CPDF_Stream* GetIcon(CFX_ByteString csEntry); + virtual int AfterCheckedStatusChange(const CPDF_FormField* pField, + const CFX_ByteArray& statusArray) { + return 0; + } - CPDF_ApSettings GetMK(FX_BOOL bCreate); + virtual int BeforeFormReset(const CPDF_InterForm* pForm) { return 0; } - CPDF_InterForm* m_pForm; + virtual int AfterFormReset(const CPDF_InterForm* pForm) { return 0; } - CPDF_FormField* m_pField; + virtual int BeforeFormImportData(const CPDF_InterForm* pForm) { return 0; } - CPDF_Dictionary* m_pWidgetDict; - friend class CPDF_InterForm; - friend class CPDF_FormField; + virtual int AfterFormImportData(const CPDF_InterForm* pForm) { return 0; } }; -class CPDF_FormNotify -{ -public: - - virtual ~CPDF_FormNotify() {} - - virtual int BeforeValueChange(const CPDF_FormField* pField, CFX_WideString& csValue) - { - return 0; - } - - virtual int AfterValueChange(const CPDF_FormField* pField) - { - return 0; - } - - virtual int BeforeSelectionChange(const CPDF_FormField* pField, CFX_WideString& csValue) - { - return 0; - } - - virtual int AfterSelectionChange(const CPDF_FormField* pField) - { - return 0; - } - - virtual int AfterCheckedStatusChange(const CPDF_FormField* pField, const CFX_ByteArray& statusArray) - { - return 0; - } - - virtual int BeforeFormReset(const CPDF_InterForm* pForm) - { - return 0; - } - - virtual int AfterFormReset(const CPDF_InterForm* pForm) - { - return 0; - } - - virtual int BeforeFormImportData(const CPDF_InterForm* pForm) - { - return 0; - } - - virtual int AfterFormImportData(const CPDF_InterForm* pForm) - { - return 0; - } -}; -FX_BOOL FPDF_GenerateAP(CPDF_Document* pDoc, CPDF_Dictionary* pAnnotDict); -class CPDF_PageLabel -{ -public: - - CPDF_PageLabel(CPDF_Document* pDocument) - { - m_pDocument = pDocument; - } +FX_BOOL FPDF_GenerateAP(CPDF_Document* pDoc, CPDF_Dictionary* pAnnotDict); +class CPDF_PageLabel { + public: + CPDF_PageLabel(CPDF_Document* pDocument) { m_pDocument = pDocument; } + CFX_WideString GetLabel(int nPage) const; - CFX_WideString GetLabel(int nPage) const; + int32_t GetPageByLabel(const CFX_ByteStringC& bsLabel) const; - int32_t GetPageByLabel(const CFX_ByteStringC& bsLabel) const; + int32_t GetPageByLabel(const CFX_WideStringC& wsLabel) const; - - int32_t GetPageByLabel(const CFX_WideStringC& wsLabel) const; - -protected: - CPDF_Document* m_pDocument; + protected: + CPDF_Document* m_pDocument; }; -class CPDF_Metadata -{ -public: - - CPDF_Metadata(); - +class CPDF_Metadata { + public: + CPDF_Metadata(); - ~CPDF_Metadata(); + ~CPDF_Metadata(); - void LoadDoc(CPDF_Document *pDoc); + void LoadDoc(CPDF_Document* pDoc); + int32_t GetString(const CFX_ByteStringC& bsItem, CFX_WideString& wsStr); - int32_t GetString(const CFX_ByteStringC& bsItem, CFX_WideString &wsStr); + CXML_Element* GetRoot() const; - CXML_Element* GetRoot() const; + CXML_Element* GetRDF() const; - CXML_Element* GetRDF() const; - -protected: - void* m_pData; + protected: + void* m_pData; }; -class CPDF_ViewerPreferences -{ -public: - - CPDF_ViewerPreferences(CPDF_Document *pDoc); - - - ~CPDF_ViewerPreferences(); +class CPDF_ViewerPreferences { + public: + CPDF_ViewerPreferences(CPDF_Document* pDoc); + ~CPDF_ViewerPreferences(); - FX_BOOL IsDirectionR2L() const; + FX_BOOL IsDirectionR2L() const; - FX_BOOL PrintScaling() const; + FX_BOOL PrintScaling() const; - int32_t NumCopies() const; + int32_t NumCopies() const; - CPDF_Array* PrintPageRange() const; + CPDF_Array* PrintPageRange() const; - CFX_ByteString Duplex() const; + CFX_ByteString Duplex() const; -protected: - CPDF_Document* m_pDoc; + protected: + CPDF_Document* m_pDoc; }; -class CPDF_ApSettings -{ -public: - - CPDF_ApSettings(CPDF_Dictionary* pDict = NULL) - { - m_pDict = pDict; - } - - operator CPDF_Dictionary* () const - { - return m_pDict; - } - - FX_BOOL HasMKEntry(const CFX_ByteStringC& csEntry); - - - - int GetRotation(); - - - - - inline FX_ARGB GetBorderColor(int& iColorType) - { - return GetColor(iColorType, FX_BSTRC("BC")); - } - - inline FX_FLOAT GetOriginalBorderColor(int index) - { - return GetOriginalColor(index, FX_BSTRC("BC")); - } - - inline void GetOriginalBorderColor(int& iColorType, FX_FLOAT fc[4]) - { - GetOriginalColor(iColorType, fc, FX_BSTRC("BC")); - } - - - - - inline FX_ARGB GetBackgroundColor(int& iColorType) - { - return GetColor(iColorType, FX_BSTRC("BG")); - } - - inline FX_FLOAT GetOriginalBackgroundColor(int index) - { - return GetOriginalColor(index, FX_BSTRC("BG")); - } - - inline void GetOriginalBackgroundColor(int& iColorType, FX_FLOAT fc[4]) - { - GetOriginalColor(iColorType, fc, FX_BSTRC("BG")); - } - - - - - inline CFX_WideString GetNormalCaption() - { - return GetCaption(FX_BSTRC("CA")); - } - - - - - inline CFX_WideString GetRolloverCaption() - { - return GetCaption(FX_BSTRC("RC")); - } - - - - - inline CFX_WideString GetDownCaption() - { - return GetCaption(FX_BSTRC("AC")); - } - - - +class CPDF_ApSettings { + public: + CPDF_ApSettings(CPDF_Dictionary* pDict = NULL) { m_pDict = pDict; } - inline CPDF_Stream* GetNormalIcon() - { - return GetIcon(FX_BSTRC("I")); - } + operator CPDF_Dictionary*() const { return m_pDict; } + FX_BOOL HasMKEntry(const CFX_ByteStringC& csEntry); + int GetRotation(); + inline FX_ARGB GetBorderColor(int& iColorType) { + return GetColor(iColorType, FX_BSTRC("BC")); + } - inline CPDF_Stream* GetRolloverIcon() - { - return GetIcon(FX_BSTRC("RI")); - } + inline FX_FLOAT GetOriginalBorderColor(int index) { + return GetOriginalColor(index, FX_BSTRC("BC")); + } + inline void GetOriginalBorderColor(int& iColorType, FX_FLOAT fc[4]) { + GetOriginalColor(iColorType, fc, FX_BSTRC("BC")); + } + inline FX_ARGB GetBackgroundColor(int& iColorType) { + return GetColor(iColorType, FX_BSTRC("BG")); + } + inline FX_FLOAT GetOriginalBackgroundColor(int index) { + return GetOriginalColor(index, FX_BSTRC("BG")); + } - inline CPDF_Stream* GetDownIcon() - { - return GetIcon(FX_BSTRC("IX")); - } + inline void GetOriginalBackgroundColor(int& iColorType, FX_FLOAT fc[4]) { + GetOriginalColor(iColorType, fc, FX_BSTRC("BG")); + } + inline CFX_WideString GetNormalCaption() { + return GetCaption(FX_BSTRC("CA")); + } + inline CFX_WideString GetRolloverCaption() { + return GetCaption(FX_BSTRC("RC")); + } + inline CFX_WideString GetDownCaption() { return GetCaption(FX_BSTRC("AC")); } - CPDF_IconFit GetIconFit(); + inline CPDF_Stream* GetNormalIcon() { return GetIcon(FX_BSTRC("I")); } + inline CPDF_Stream* GetRolloverIcon() { return GetIcon(FX_BSTRC("RI")); } + inline CPDF_Stream* GetDownIcon() { return GetIcon(FX_BSTRC("IX")); } + CPDF_IconFit GetIconFit(); - int GetTextPosition(); + int GetTextPosition(); - CPDF_Dictionary* m_pDict; -protected: + CPDF_Dictionary* m_pDict; - FX_ARGB GetColor(int& iColorType, const CFX_ByteStringC& csEntry); + protected: + FX_ARGB GetColor(int& iColorType, const CFX_ByteStringC& csEntry); - FX_FLOAT GetOriginalColor(int index, const CFX_ByteStringC& csEntry); + FX_FLOAT GetOriginalColor(int index, const CFX_ByteStringC& csEntry); - void GetOriginalColor(int& iColorType, FX_FLOAT fc[4], const CFX_ByteStringC& csEntry); + void GetOriginalColor(int& iColorType, + FX_FLOAT fc[4], + const CFX_ByteStringC& csEntry); - CFX_WideString GetCaption(const CFX_ByteStringC& csEntry); + CFX_WideString GetCaption(const CFX_ByteStringC& csEntry); - CPDF_Stream* GetIcon(const CFX_ByteStringC& csEntry); - friend class CPDF_FormControl; + CPDF_Stream* GetIcon(const CFX_ByteStringC& csEntry); + friend class CPDF_FormControl; }; #endif // CORE_INCLUDE_FPDFDOC_FPDF_DOC_H_ diff --git a/core/include/fpdfdoc/fpdf_tagged.h b/core/include/fpdfdoc/fpdf_tagged.h index 706f5c04d7..3de6041dc1 100644 --- a/core/include/fpdfdoc/fpdf_tagged.h +++ b/core/include/fpdfdoc/fpdf_tagged.h @@ -14,89 +14,93 @@ class CPDF_StructTree; class IPDF_ReflowedPage; struct CPDF_StructKid; -class CPDF_StructTree -{ -public: +class CPDF_StructTree { + public: + static CPDF_StructTree* LoadDoc(const CPDF_Document* pDoc); - static CPDF_StructTree* LoadDoc(const CPDF_Document* pDoc); + static CPDF_StructTree* LoadPage(const CPDF_Document* pDoc, + const CPDF_Dictionary* pPageDict); - static CPDF_StructTree* LoadPage(const CPDF_Document* pDoc, const CPDF_Dictionary* pPageDict); + virtual ~CPDF_StructTree() {} - virtual ~CPDF_StructTree() {} + virtual int CountTopElements() const = 0; - virtual int CountTopElements() const = 0; - - virtual CPDF_StructElement* GetTopElement(int i) const = 0; + virtual CPDF_StructElement* GetTopElement(int i) const = 0; }; struct CPDF_StructKid { - enum { - Invalid, - Element, - PageContent, - StreamContent, - Object - } m_Type; - - union { - struct { - - CPDF_StructElement* m_pElement; - - CPDF_Dictionary* m_pDict; - } m_Element; - struct { + enum { Invalid, Element, PageContent, StreamContent, Object } m_Type; - FX_DWORD m_PageObjNum; + union { + struct { + CPDF_StructElement* m_pElement; - FX_DWORD m_ContentId; - } m_PageContent; - struct { + CPDF_Dictionary* m_pDict; + } m_Element; + struct { + FX_DWORD m_PageObjNum; - FX_DWORD m_PageObjNum; + FX_DWORD m_ContentId; + } m_PageContent; + struct { + FX_DWORD m_PageObjNum; - FX_DWORD m_ContentId; + FX_DWORD m_ContentId; - FX_DWORD m_RefObjNum; - } m_StreamContent; - struct { + FX_DWORD m_RefObjNum; + } m_StreamContent; + struct { + FX_DWORD m_PageObjNum; - FX_DWORD m_PageObjNum; - - FX_DWORD m_RefObjNum; - } m_Object; - }; + FX_DWORD m_RefObjNum; + } m_Object; + }; }; -class CPDF_StructElement -{ -public: - virtual ~CPDF_StructElement() { } - - virtual CPDF_StructTree* GetTree() const = 0; - - virtual const CFX_ByteString& GetType() const = 0; - - virtual CPDF_StructElement* GetParent() const = 0; +class CPDF_StructElement { + public: + virtual ~CPDF_StructElement() {} - virtual CPDF_Dictionary * GetDict() const = 0; + virtual CPDF_StructTree* GetTree() const = 0; - virtual int CountKids() const = 0; + virtual const CFX_ByteString& GetType() const = 0; - virtual const CPDF_StructKid& GetKid(int index) const = 0; + virtual CPDF_StructElement* GetParent() const = 0; - virtual CFX_PtrArray* GetObjectArray() = 0; + virtual CPDF_Dictionary* GetDict() const = 0; - virtual CPDF_Object* GetAttr(const CFX_ByteStringC& owner, const CFX_ByteStringC& name, FX_BOOL bInheritable = FALSE, FX_FLOAT fLevel = 0.0F) = 0; + virtual int CountKids() const = 0; + virtual const CPDF_StructKid& GetKid(int index) const = 0; + virtual CFX_PtrArray* GetObjectArray() = 0; - virtual CFX_ByteString GetName(const CFX_ByteStringC& owner, const CFX_ByteStringC& name, const CFX_ByteStringC& default_value, FX_BOOL bInheritable = FALSE, int subindex = -1) = 0; + virtual CPDF_Object* GetAttr(const CFX_ByteStringC& owner, + const CFX_ByteStringC& name, + FX_BOOL bInheritable = FALSE, + FX_FLOAT fLevel = 0.0F) = 0; - virtual FX_ARGB GetColor(const CFX_ByteStringC& owner, const CFX_ByteStringC& name, FX_ARGB default_value, FX_BOOL bInheritable = FALSE, int subindex = -1) = 0; + virtual CFX_ByteString GetName(const CFX_ByteStringC& owner, + const CFX_ByteStringC& name, + const CFX_ByteStringC& default_value, + FX_BOOL bInheritable = FALSE, + int subindex = -1) = 0; - virtual FX_FLOAT GetNumber(const CFX_ByteStringC& owner, const CFX_ByteStringC& name, FX_FLOAT default_value, FX_BOOL bInheritable = FALSE, int subindex = -1) = 0; + virtual FX_ARGB GetColor(const CFX_ByteStringC& owner, + const CFX_ByteStringC& name, + FX_ARGB default_value, + FX_BOOL bInheritable = FALSE, + int subindex = -1) = 0; - virtual int GetInteger(const CFX_ByteStringC& owner, const CFX_ByteStringC& name, int default_value, FX_BOOL bInheritable = FALSE, int subindex = -1) = 0; + virtual FX_FLOAT GetNumber(const CFX_ByteStringC& owner, + const CFX_ByteStringC& name, + FX_FLOAT default_value, + FX_BOOL bInheritable = FALSE, + int subindex = -1) = 0; + virtual int GetInteger(const CFX_ByteStringC& owner, + const CFX_ByteStringC& name, + int default_value, + FX_BOOL bInheritable = FALSE, + int subindex = -1) = 0; }; #endif // CORE_INCLUDE_FPDFDOC_FPDF_TAGGED_H_ diff --git a/core/include/fpdfdoc/fpdf_vt.h b/core/include/fpdfdoc/fpdf_vt.h index 4baba41348..62a6019793 100644 --- a/core/include/fpdfdoc/fpdf_vt.h +++ b/core/include/fpdfdoc/fpdf_vt.h @@ -20,434 +20,443 @@ struct CPVT_WordPlace; struct CPVT_WordRange; struct CPVT_WordPlace { - - CPVT_WordPlace() : nSecIndex(-1), nLineIndex(-1), nWordIndex(-1) - { + CPVT_WordPlace() : nSecIndex(-1), nLineIndex(-1), nWordIndex(-1) {} + + CPVT_WordPlace(int32_t other_nSecIndex, + int32_t other_nLineIndex, + int32_t other_nWordIndex) { + nSecIndex = other_nSecIndex; + nLineIndex = other_nLineIndex; + nWordIndex = other_nWordIndex; + } + + void Default() { nSecIndex = nLineIndex = nWordIndex = -1; } + + FX_BOOL operator==(const CPVT_WordPlace& wp) const { + return wp.nSecIndex == nSecIndex && wp.nLineIndex == nLineIndex && + wp.nWordIndex == nWordIndex; + } + + FX_BOOL operator!=(const CPVT_WordPlace& wp) const { + return wp.nSecIndex != nSecIndex || wp.nLineIndex != nLineIndex || + wp.nWordIndex != nWordIndex; + } + + inline int32_t WordCmp(const CPVT_WordPlace& wp) const { + if (nSecIndex > wp.nSecIndex) { + return 1; } - - CPVT_WordPlace(int32_t other_nSecIndex, - int32_t other_nLineIndex, - int32_t other_nWordIndex) - { - nSecIndex = other_nSecIndex; - nLineIndex = other_nLineIndex; - nWordIndex = other_nWordIndex; + if (nSecIndex < wp.nSecIndex) { + return -1; } - - void Default() - { - nSecIndex = nLineIndex = nWordIndex = -1; + if (nLineIndex > wp.nLineIndex) { + return 1; } - - FX_BOOL operator == (const CPVT_WordPlace & wp) const - { - return wp.nSecIndex == nSecIndex && wp.nLineIndex == nLineIndex && wp.nWordIndex == nWordIndex; + if (nLineIndex < wp.nLineIndex) { + return -1; } - - FX_BOOL operator != (const CPVT_WordPlace & wp) const - { - return wp.nSecIndex != nSecIndex || wp.nLineIndex != nLineIndex || wp.nWordIndex != nWordIndex; + if (nWordIndex > wp.nWordIndex) { + return 1; } - - inline int32_t WordCmp(const CPVT_WordPlace & wp) const - { - if (nSecIndex > wp.nSecIndex) { - return 1; - } - if (nSecIndex < wp.nSecIndex) { - return -1; - } - if (nLineIndex > wp.nLineIndex) { - return 1; - } - if (nLineIndex < wp.nLineIndex) { - return -1; - } - if (nWordIndex > wp.nWordIndex) { - return 1; - } - if (nWordIndex < wp.nWordIndex) { - return -1; - } - return 0; + if (nWordIndex < wp.nWordIndex) { + return -1; } + return 0; + } - inline int32_t LineCmp(const CPVT_WordPlace & wp) const - { - if (nSecIndex > wp.nSecIndex) { - return 1; - } - if (nSecIndex < wp.nSecIndex) { - return -1; - } - if (nLineIndex > wp.nLineIndex) { - return 1; - } - if (nLineIndex < wp.nLineIndex) { - return -1; - } - return 0; + inline int32_t LineCmp(const CPVT_WordPlace& wp) const { + if (nSecIndex > wp.nSecIndex) { + return 1; } - - inline int32_t SecCmp(const CPVT_WordPlace & wp) const - { - if (nSecIndex > wp.nSecIndex) { - return 1; - } - if (nSecIndex < wp.nSecIndex) { - return -1; - } - return 0; + if (nSecIndex < wp.nSecIndex) { + return -1; } - - int32_t nSecIndex; - - int32_t nLineIndex; - - int32_t nWordIndex; -}; -struct CPVT_WordRange { - - CPVT_WordRange() - { - } - - CPVT_WordRange(const CPVT_WordPlace & begin, const CPVT_WordPlace & end) - { - Set(begin, end); + if (nLineIndex > wp.nLineIndex) { + return 1; } - - void Default() - { - BeginPos.Default(); - EndPos.Default(); + if (nLineIndex < wp.nLineIndex) { + return -1; } + return 0; + } - void Set(const CPVT_WordPlace & begin, const CPVT_WordPlace & end) - { - BeginPos = begin; - EndPos = end; - SwapWordPlace(); + inline int32_t SecCmp(const CPVT_WordPlace& wp) const { + if (nSecIndex > wp.nSecIndex) { + return 1; } - - void SetBeginPos(const CPVT_WordPlace & begin) - { - BeginPos = begin; - SwapWordPlace(); + if (nSecIndex < wp.nSecIndex) { + return -1; } + return 0; + } - void SetEndPos(const CPVT_WordPlace & end) - { - EndPos = end; - SwapWordPlace(); - } + int32_t nSecIndex; - FX_BOOL IsExist() const - { - return BeginPos != EndPos; - } - - FX_BOOL operator != (const CPVT_WordRange & wr) const - { - return wr.BeginPos != BeginPos || wr.EndPos != EndPos; - } - - void SwapWordPlace() - { - if (BeginPos.WordCmp(EndPos) > 0) { - CPVT_WordPlace place = EndPos; - EndPos = BeginPos; - BeginPos = place; - } - } + int32_t nLineIndex; - CPVT_WordPlace BeginPos; - - CPVT_WordPlace EndPos; + int32_t nWordIndex; }; -struct CPVT_SecProps { - - CPVT_SecProps() : fLineLeading(0.0f), fLineIndent(0.0f), nAlignment(0) - { - } - - CPVT_SecProps(FX_FLOAT lineLeading, FX_FLOAT lineIndent, int32_t alignment) : - fLineLeading(lineLeading), fLineIndent(lineIndent), nAlignment(alignment) - { - } - - CPVT_SecProps(const CPVT_SecProps & other) : - fLineLeading(other.fLineLeading), fLineIndent(other.fLineIndent), nAlignment(other.nAlignment) - { +struct CPVT_WordRange { + CPVT_WordRange() {} + + CPVT_WordRange(const CPVT_WordPlace& begin, const CPVT_WordPlace& end) { + Set(begin, end); + } + + void Default() { + BeginPos.Default(); + EndPos.Default(); + } + + void Set(const CPVT_WordPlace& begin, const CPVT_WordPlace& end) { + BeginPos = begin; + EndPos = end; + SwapWordPlace(); + } + + void SetBeginPos(const CPVT_WordPlace& begin) { + BeginPos = begin; + SwapWordPlace(); + } + + void SetEndPos(const CPVT_WordPlace& end) { + EndPos = end; + SwapWordPlace(); + } + + FX_BOOL IsExist() const { return BeginPos != EndPos; } + + FX_BOOL operator!=(const CPVT_WordRange& wr) const { + return wr.BeginPos != BeginPos || wr.EndPos != EndPos; + } + + void SwapWordPlace() { + if (BeginPos.WordCmp(EndPos) > 0) { + CPVT_WordPlace place = EndPos; + EndPos = BeginPos; + BeginPos = place; } + } - FX_FLOAT fLineLeading; - - FX_FLOAT fLineIndent; + CPVT_WordPlace BeginPos; - int32_t nAlignment; + CPVT_WordPlace EndPos; }; -struct CPVT_WordProps { - - CPVT_WordProps() : nFontIndex(-1), fFontSize(0.0f), dwWordColor(0), nScriptType(0), nWordStyle(0), - fCharSpace(0.0f), nHorzScale(0) - { - } - - CPVT_WordProps(int32_t fontIndex, FX_FLOAT fontSize, FX_COLORREF wordColor = 0, int32_t scriptType = 0, int32_t wordStyle = 0, - FX_FLOAT charSpace = 0, int32_t horzScale = 100) : - nFontIndex(fontIndex), fFontSize(fontSize), dwWordColor(wordColor), nScriptType(scriptType), - nWordStyle(wordStyle), fCharSpace(charSpace), nHorzScale(horzScale) - { - } - - CPVT_WordProps(const CPVT_WordProps & other) : - nFontIndex(other.nFontIndex), fFontSize(other.fFontSize), dwWordColor(other.dwWordColor), - nScriptType(other.nScriptType), nWordStyle(other.nWordStyle), fCharSpace(other.fCharSpace), - nHorzScale(other.nHorzScale) - { - } +struct CPVT_SecProps { + CPVT_SecProps() : fLineLeading(0.0f), fLineIndent(0.0f), nAlignment(0) {} - int32_t nFontIndex; + CPVT_SecProps(FX_FLOAT lineLeading, FX_FLOAT lineIndent, int32_t alignment) + : fLineLeading(lineLeading), + fLineIndent(lineIndent), + nAlignment(alignment) {} - FX_FLOAT fFontSize; + CPVT_SecProps(const CPVT_SecProps& other) + : fLineLeading(other.fLineLeading), + fLineIndent(other.fLineIndent), + nAlignment(other.nAlignment) {} - FX_COLORREF dwWordColor; + FX_FLOAT fLineLeading; - int32_t nScriptType; + FX_FLOAT fLineIndent; - int32_t nWordStyle; - - FX_FLOAT fCharSpace; - - int32_t nHorzScale; + int32_t nAlignment; +}; +struct CPVT_WordProps { + CPVT_WordProps() + : nFontIndex(-1), + fFontSize(0.0f), + dwWordColor(0), + nScriptType(0), + nWordStyle(0), + fCharSpace(0.0f), + nHorzScale(0) {} + + CPVT_WordProps(int32_t fontIndex, + FX_FLOAT fontSize, + FX_COLORREF wordColor = 0, + int32_t scriptType = 0, + int32_t wordStyle = 0, + FX_FLOAT charSpace = 0, + int32_t horzScale = 100) + : nFontIndex(fontIndex), + fFontSize(fontSize), + dwWordColor(wordColor), + nScriptType(scriptType), + nWordStyle(wordStyle), + fCharSpace(charSpace), + nHorzScale(horzScale) {} + + CPVT_WordProps(const CPVT_WordProps& other) + : nFontIndex(other.nFontIndex), + fFontSize(other.fFontSize), + dwWordColor(other.dwWordColor), + nScriptType(other.nScriptType), + nWordStyle(other.nWordStyle), + fCharSpace(other.fCharSpace), + nHorzScale(other.nHorzScale) {} + + int32_t nFontIndex; + + FX_FLOAT fFontSize; + + FX_COLORREF dwWordColor; + + int32_t nScriptType; + + int32_t nWordStyle; + + FX_FLOAT fCharSpace; + + int32_t nHorzScale; }; struct CPVT_Word { + CPVT_Word() + : Word(0), + nCharset(0), + ptWord(0, 0), + fAscent(0.0f), + fDescent(0.0f), + fWidth(0.0f), + fFontSize(0), + WordProps() {} - CPVT_Word() : Word(0), nCharset(0), ptWord(0, 0), fAscent(0.0f), fDescent(0.0f), fWidth(0.0f), - fFontSize(0), WordProps() - { - } - - FX_WORD Word; + FX_WORD Word; - int32_t nCharset; + int32_t nCharset; - CPVT_WordPlace WordPlace; + CPVT_WordPlace WordPlace; - CPDF_Point ptWord; + CPDF_Point ptWord; - FX_FLOAT fAscent; + FX_FLOAT fAscent; - FX_FLOAT fDescent; + FX_FLOAT fDescent; - FX_FLOAT fWidth; + FX_FLOAT fWidth; - int32_t nFontIndex; + int32_t nFontIndex; - FX_FLOAT fFontSize; + FX_FLOAT fFontSize; - CPVT_WordProps WordProps; + CPVT_WordProps WordProps; }; struct CPVT_Line { + CPVT_Line() + : ptLine(0, 0), fLineWidth(0.0f), fLineAscent(0.0f), fLineDescent(0.0f) {} - CPVT_Line() : ptLine(0, 0), fLineWidth(0.0f), fLineAscent(0.0f), fLineDescent(0.0f) - { - } + CPVT_WordPlace lineplace; - CPVT_WordPlace lineplace; + CPVT_WordPlace lineEnd; - CPVT_WordPlace lineEnd; + CPDF_Point ptLine; - CPDF_Point ptLine; + FX_FLOAT fLineWidth; - FX_FLOAT fLineWidth; + FX_FLOAT fLineAscent; - FX_FLOAT fLineAscent; - - FX_FLOAT fLineDescent; + FX_FLOAT fLineDescent; }; struct CPVT_Section { + CPVT_WordPlace secplace; - CPVT_WordPlace secplace; - - CPDF_Rect rcSection; + CPDF_Rect rcSection; - CPVT_SecProps SecProps; + CPVT_SecProps SecProps; - CPVT_WordProps WordProps; + CPVT_WordProps WordProps; }; -class IPDF_VariableText_Provider -{ -public: - virtual ~IPDF_VariableText_Provider() { } +class IPDF_VariableText_Provider { + public: + virtual ~IPDF_VariableText_Provider() {} - virtual int32_t GetCharWidth(int32_t nFontIndex, FX_WORD word, int32_t nWordStyle) = 0; + virtual int32_t GetCharWidth(int32_t nFontIndex, + FX_WORD word, + int32_t nWordStyle) = 0; - virtual int32_t GetTypeAscent(int32_t nFontIndex) = 0; + virtual int32_t GetTypeAscent(int32_t nFontIndex) = 0; - virtual int32_t GetTypeDescent(int32_t nFontIndex) = 0; + virtual int32_t GetTypeDescent(int32_t nFontIndex) = 0; - virtual int32_t GetWordFontIndex(FX_WORD word, int32_t charset, int32_t nFontIndex) = 0; + virtual int32_t GetWordFontIndex(FX_WORD word, + int32_t charset, + int32_t nFontIndex) = 0; - virtual FX_BOOL IsLatinWord(FX_WORD word) = 0; + virtual FX_BOOL IsLatinWord(FX_WORD word) = 0; - virtual int32_t GetDefaultFontIndex() = 0; + virtual int32_t GetDefaultFontIndex() = 0; }; -class IPDF_VariableText_Iterator -{ -public: - virtual ~IPDF_VariableText_Iterator() { } +class IPDF_VariableText_Iterator { + public: + virtual ~IPDF_VariableText_Iterator() {} - virtual FX_BOOL NextWord() = 0; + virtual FX_BOOL NextWord() = 0; - virtual FX_BOOL PrevWord() = 0; + virtual FX_BOOL PrevWord() = 0; - virtual FX_BOOL NextLine() = 0; + virtual FX_BOOL NextLine() = 0; - virtual FX_BOOL PrevLine() = 0; + virtual FX_BOOL PrevLine() = 0; - virtual FX_BOOL NextSection() = 0; + virtual FX_BOOL NextSection() = 0; - virtual FX_BOOL PrevSection() = 0; + virtual FX_BOOL PrevSection() = 0; - virtual FX_BOOL GetWord(CPVT_Word & word) const = 0; + virtual FX_BOOL GetWord(CPVT_Word& word) const = 0; - virtual FX_BOOL SetWord(const CPVT_Word & word) = 0; + virtual FX_BOOL SetWord(const CPVT_Word& word) = 0; - virtual FX_BOOL GetLine(CPVT_Line & line) const = 0; + virtual FX_BOOL GetLine(CPVT_Line& line) const = 0; - virtual FX_BOOL GetSection(CPVT_Section & section) const = 0; + virtual FX_BOOL GetSection(CPVT_Section& section) const = 0; - virtual FX_BOOL SetSection(const CPVT_Section & section) = 0; + virtual FX_BOOL SetSection(const CPVT_Section& section) = 0; - virtual void SetAt(int32_t nWordIndex) = 0; + virtual void SetAt(int32_t nWordIndex) = 0; - virtual void SetAt(const CPVT_WordPlace & place) = 0; + virtual void SetAt(const CPVT_WordPlace& place) = 0; - virtual const CPVT_WordPlace & GetAt() const = 0; + virtual const CPVT_WordPlace& GetAt() const = 0; }; -class IPDF_VariableText -{ -public: - static IPDF_VariableText* NewVariableText(); +class IPDF_VariableText { + public: + static IPDF_VariableText* NewVariableText(); - static void DelVariableText(IPDF_VariableText* pVT); + static void DelVariableText(IPDF_VariableText* pVT); - virtual IPDF_VariableText_Provider* SetProvider(IPDF_VariableText_Provider * pProvider) = 0; + virtual IPDF_VariableText_Provider* SetProvider( + IPDF_VariableText_Provider* pProvider) = 0; - virtual IPDF_VariableText_Iterator* GetIterator() = 0; + virtual IPDF_VariableText_Iterator* GetIterator() = 0; - virtual void SetPlateRect(const CPDF_Rect & rect) = 0; + virtual void SetPlateRect(const CPDF_Rect& rect) = 0; - virtual void SetAlignment(int32_t nFormat = 0) = 0; + virtual void SetAlignment(int32_t nFormat = 0) = 0; - virtual void SetPasswordChar(FX_WORD wSubWord = '*') = 0; + virtual void SetPasswordChar(FX_WORD wSubWord = '*') = 0; - virtual void SetLimitChar(int32_t nLimitChar = 0) = 0; + virtual void SetLimitChar(int32_t nLimitChar = 0) = 0; - virtual void SetCharArray(int32_t nCharArray = 0) = 0; + virtual void SetCharArray(int32_t nCharArray = 0) = 0; - virtual void SetCharSpace(FX_FLOAT fCharSpace = 0.0f) = 0; + virtual void SetCharSpace(FX_FLOAT fCharSpace = 0.0f) = 0; - virtual void SetHorzScale(int32_t nHorzScale = 100) = 0; + virtual void SetHorzScale(int32_t nHorzScale = 100) = 0; - virtual void SetMultiLine(FX_BOOL bMultiLine = TRUE) = 0; + virtual void SetMultiLine(FX_BOOL bMultiLine = TRUE) = 0; - virtual void SetAutoReturn(FX_BOOL bAuto = TRUE) = 0; + virtual void SetAutoReturn(FX_BOOL bAuto = TRUE) = 0; - virtual void SetAutoFontSize(FX_BOOL bAuto = TRUE) = 0; + virtual void SetAutoFontSize(FX_BOOL bAuto = TRUE) = 0; - virtual void SetFontSize(FX_FLOAT fFontSize) = 0; + virtual void SetFontSize(FX_FLOAT fFontSize) = 0; - virtual void SetLineLeading(FX_FLOAT fLineLeading) = 0; + virtual void SetLineLeading(FX_FLOAT fLineLeading) = 0; - virtual void SetRichText(FX_BOOL bRichText) = 0; + virtual void SetRichText(FX_BOOL bRichText) = 0; - virtual void Initialize() = 0; + virtual void Initialize() = 0; - virtual FX_BOOL IsValid() const = 0; + virtual FX_BOOL IsValid() const = 0; - virtual FX_BOOL IsRichText() const = 0; + virtual FX_BOOL IsRichText() const = 0; - virtual void RearrangeAll() = 0; + virtual void RearrangeAll() = 0; - virtual void RearrangePart(const CPVT_WordRange & PlaceRange) = 0; + virtual void RearrangePart(const CPVT_WordRange& PlaceRange) = 0; - virtual void ResetAll() = 0; + virtual void ResetAll() = 0; - virtual void SetText(const FX_WCHAR* text, int32_t charset = 1, const CPVT_SecProps * pSecProps = NULL, - const CPVT_WordProps * pWordProps = NULL) = 0; + virtual void SetText(const FX_WCHAR* text, + int32_t charset = 1, + const CPVT_SecProps* pSecProps = NULL, + const CPVT_WordProps* pWordProps = NULL) = 0; - virtual CPVT_WordPlace InsertWord(const CPVT_WordPlace & place, FX_WORD word, int32_t charset = 1, - const CPVT_WordProps * pWordProps = NULL) = 0; + virtual CPVT_WordPlace InsertWord( + const CPVT_WordPlace& place, + FX_WORD word, + int32_t charset = 1, + const CPVT_WordProps* pWordProps = NULL) = 0; - virtual CPVT_WordPlace InsertSection(const CPVT_WordPlace & place, const CPVT_SecProps * pSecProps = NULL, - const CPVT_WordProps * pWordProps = NULL) = 0; + virtual CPVT_WordPlace InsertSection( + const CPVT_WordPlace& place, + const CPVT_SecProps* pSecProps = NULL, + const CPVT_WordProps* pWordProps = NULL) = 0; - virtual CPVT_WordPlace InsertText(const CPVT_WordPlace & place, const FX_WCHAR* text, int32_t charset = 1, - const CPVT_SecProps * pSecProps = NULL, const CPVT_WordProps * pWordProps = NULL) = 0; + virtual CPVT_WordPlace InsertText( + const CPVT_WordPlace& place, + const FX_WCHAR* text, + int32_t charset = 1, + const CPVT_SecProps* pSecProps = NULL, + const CPVT_WordProps* pWordProps = NULL) = 0; - virtual CPVT_WordPlace DeleteWords(const CPVT_WordRange & PlaceRange) = 0; + virtual CPVT_WordPlace DeleteWords(const CPVT_WordRange& PlaceRange) = 0; - virtual CPVT_WordPlace DeleteWord(const CPVT_WordPlace & place) = 0; + virtual CPVT_WordPlace DeleteWord(const CPVT_WordPlace& place) = 0; - virtual CPVT_WordPlace BackSpaceWord(const CPVT_WordPlace & place) = 0; + virtual CPVT_WordPlace BackSpaceWord(const CPVT_WordPlace& place) = 0; - virtual const CPDF_Rect & GetPlateRect() const = 0; + virtual const CPDF_Rect& GetPlateRect() const = 0; - virtual CPDF_Rect GetContentRect() const = 0; + virtual CPDF_Rect GetContentRect() const = 0; - virtual int32_t GetTotalWords() const = 0; + virtual int32_t GetTotalWords() const = 0; - virtual FX_FLOAT GetFontSize() const = 0; + virtual FX_FLOAT GetFontSize() const = 0; - virtual int32_t GetAlignment() const = 0; + virtual int32_t GetAlignment() const = 0; - virtual FX_WORD GetPasswordChar() const = 0; + virtual FX_WORD GetPasswordChar() const = 0; - virtual int32_t GetCharArray() const = 0; + virtual int32_t GetCharArray() const = 0; - virtual int32_t GetLimitChar() const = 0; + virtual int32_t GetLimitChar() const = 0; - virtual FX_BOOL IsMultiLine() const = 0; + virtual FX_BOOL IsMultiLine() const = 0; - virtual int32_t GetHorzScale() const = 0; + virtual int32_t GetHorzScale() const = 0; - virtual FX_FLOAT GetCharSpace() const = 0; + virtual FX_FLOAT GetCharSpace() const = 0; - virtual CPVT_WordPlace GetBeginWordPlace() const = 0; + virtual CPVT_WordPlace GetBeginWordPlace() const = 0; - virtual CPVT_WordPlace GetEndWordPlace() const = 0; + virtual CPVT_WordPlace GetEndWordPlace() const = 0; - virtual CPVT_WordPlace GetPrevWordPlace(const CPVT_WordPlace & place) const = 0; + virtual CPVT_WordPlace GetPrevWordPlace( + const CPVT_WordPlace& place) const = 0; - virtual CPVT_WordPlace GetNextWordPlace(const CPVT_WordPlace & place) const = 0; + virtual CPVT_WordPlace GetNextWordPlace( + const CPVT_WordPlace& place) const = 0; - virtual CPVT_WordPlace SearchWordPlace(const CPDF_Point & point) const = 0; + virtual CPVT_WordPlace SearchWordPlace(const CPDF_Point& point) const = 0; - virtual CPVT_WordPlace GetUpWordPlace(const CPVT_WordPlace & place, const CPDF_Point & point) const = 0; + virtual CPVT_WordPlace GetUpWordPlace(const CPVT_WordPlace& place, + const CPDF_Point& point) const = 0; - virtual CPVT_WordPlace GetDownWordPlace(const CPVT_WordPlace & place, const CPDF_Point & point) const = 0; + virtual CPVT_WordPlace GetDownWordPlace(const CPVT_WordPlace& place, + const CPDF_Point& point) const = 0; - virtual CPVT_WordPlace GetLineBeginPlace(const CPVT_WordPlace & place) const = 0; + virtual CPVT_WordPlace GetLineBeginPlace( + const CPVT_WordPlace& place) const = 0; - virtual CPVT_WordPlace GetLineEndPlace(const CPVT_WordPlace & place) const = 0; + virtual CPVT_WordPlace GetLineEndPlace(const CPVT_WordPlace& place) const = 0; - virtual CPVT_WordPlace GetSectionBeginPlace(const CPVT_WordPlace & place) const = 0; + virtual CPVT_WordPlace GetSectionBeginPlace( + const CPVT_WordPlace& place) const = 0; - virtual CPVT_WordPlace GetSectionEndPlace(const CPVT_WordPlace & place) const = 0; + virtual CPVT_WordPlace GetSectionEndPlace( + const CPVT_WordPlace& place) const = 0; - virtual void UpdateWordPlace(CPVT_WordPlace & place) const = 0; + virtual void UpdateWordPlace(CPVT_WordPlace& place) const = 0; - virtual CPVT_WordPlace AjustLineHeader(const CPVT_WordPlace & place, FX_BOOL bPrevOrNext) const = 0; + virtual CPVT_WordPlace AjustLineHeader(const CPVT_WordPlace& place, + FX_BOOL bPrevOrNext) const = 0; - virtual int32_t WordPlaceToWordIndex(const CPVT_WordPlace & place) const = 0; + virtual int32_t WordPlaceToWordIndex(const CPVT_WordPlace& place) const = 0; - virtual CPVT_WordPlace WordIndexToWordPlace(int32_t index) const = 0; + virtual CPVT_WordPlace WordIndexToWordPlace(int32_t index) const = 0; -protected: - ~IPDF_VariableText() { } + protected: + ~IPDF_VariableText() {} }; #endif // CORE_INCLUDE_FPDFDOC_FPDF_VT_H_ |