diff options
Diffstat (limited to 'core/include/fpdfdoc/fpdf_doc.h')
-rw-r--r-- | core/include/fpdfdoc/fpdf_doc.h | 2082 |
1 files changed, 822 insertions, 1260 deletions
diff --git a/core/include/fpdfdoc/fpdf_doc.h b/core/include/fpdfdoc/fpdf_doc.h index 57d1790377..22fdf546da 100644 --- a/core/include/fpdfdoc/fpdf_doc.h +++ b/core/include/fpdfdoc/fpdf_doc.h @@ -42,1664 +42,1226 @@ 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; - } - - operator CPDF_Action*() const - { - return m_pAction; - } - - FX_DWORD GetFieldsCount() const; +class CPDF_ActionFields { + public: + CPDF_ActionFields(const CPDF_Action* pAction) { + m_pAction = (CPDF_Action*)pAction; + } - void GetAllFields(CFX_PtrArray& fieldObjects) const; - - CPDF_Object* GetField(FX_DWORD iIndex) const; - - CPDF_Action* m_pAction; -}; + operator CPDF_Action*() const { return 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 GetFieldsCount() const; - FX_DWORD GetSubActionsCount() const; + void GetAllFields(CFX_PtrArray& fieldObjects) const; - CPDF_Action GetSubAction(FX_DWORD iIndex) const; + CPDF_Object* GetField(FX_DWORD iIndex) const; -protected: - CPDF_Dictionary* m_pDict; + CPDF_Action* m_pAction; }; -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 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 + }; - int CountJSActions() const; + CPDF_Action() : m_pDict(nullptr) {} + explicit CPDF_Action(CPDF_Dictionary* pDict) : m_pDict(pDict) {} - CPDF_Action GetJSAction(int index, CFX_ByteString& csName) const; + operator bool() const { return m_pDict != NULL; } - CPDF_Action GetJSAction(const CFX_ByteString& csName) const; + CPDF_Dictionary* GetDict() const { return m_pDict; } - int FindJSAction(const CFX_ByteString& csName) const; + CFX_ByteString GetTypeName() const { return m_pDict->GetString("S"); } + ActionType GetType() const; - CPDF_Document* GetDocument() const - { - return m_pDocument; - } + CPDF_Dest GetDest(CPDF_Document* pDoc) const; -protected: + CFX_WideString GetFilePath() const; - CPDF_Document* m_pDocument; -}; -class CPDF_FileSpec -{ -public: + FX_BOOL GetNewWindow() const { return m_pDict->GetBoolean("NewWindow"); } - CPDF_FileSpec(); + CPDF_LWinParam GetWinParam() const; - CPDF_FileSpec(CPDF_Object *pObj) - { - m_pObj = pObj; - } + CFX_ByteString GetURI(CPDF_Document* pDoc) const; - operator CPDF_Object*() const - { - return m_pObj; - } + FX_BOOL GetMouseMap() const { return m_pDict->GetBoolean("IsMap"); } - FX_BOOL IsURL() const; + CPDF_ActionFields GetWidgets() const { return this; } - FX_BOOL GetFileName(CFX_WideString &wsFileName) const; + FX_BOOL GetHideStatus() const { return m_pDict->GetBoolean("H", TRUE); } - CPDF_Stream* GetFileStream() const; + CFX_ByteString GetNamedAction() const { return m_pDict->GetString("N"); } - void SetFileName(const CFX_WideStringC& wsFileName, FX_BOOL bURL = FALSE); -protected: + FX_DWORD GetFlags() const { return m_pDict->GetInteger("Flags"); } - CPDF_Object *m_pObj; -}; -class CPDF_LinkList -{ -public: + CFX_WideString GetJavaScript() const; - CPDF_LinkList(CPDF_Document* pDoc) - { - m_pDocument = pDoc; - } + CPDF_Dictionary* GetAnnot() const; - ~CPDF_LinkList(); + int32_t GetOperationType() const; - CPDF_Link GetLinkAtPoint(CPDF_Page* pPage, FX_FLOAT pdf_x, FX_FLOAT pdf_y); + CPDF_Stream* GetSoundStream() const { return m_pDict->GetStream("Sound"); } - int CountLinks(CPDF_Page* pPage); + FX_FLOAT GetVolume() const { return m_pDict->GetNumber("Volume"); } - CPDF_Link GetLink(CPDF_Page* pPage, int index); + FX_BOOL IsSynchronous() const { return m_pDict->GetBoolean("Synchronous"); } - CPDF_Document* GetDocument() const - { - return m_pDocument; - } -protected: + FX_BOOL IsRepeat() const { return m_pDict->GetBoolean("Repeat"); } - CPDF_Document* m_pDocument; + FX_BOOL IsMixPlay() const { return m_pDict->GetBoolean("Mix"); } - CFX_MapPtrToPtr m_PageMap; + FX_DWORD GetSubActionsCount() const; - CFX_PtrArray* GetPageLinks(CPDF_Page* pPage); + CPDF_Action GetSubAction(FX_DWORD iIndex) const; - 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(); + int CountJSActions() const; - void DrawBorder(CFX_RenderDevice* pDevice, - const CFX_AffineMatrix* pUser2Device, - const CPDF_RenderOptions* pOptions); + CPDF_Action GetJSAction(int index, CFX_ByteString& csName) const; - CPDF_Form* GetAPForm(const CPDF_Page* pPage, AppearanceMode mode); + CPDF_Action GetJSAction(const CFX_ByteString& csName) const; - private: - CPDF_Dictionary* const m_pAnnotDict; + int FindJSAction(const CFX_ByteString& csName) const; - CPDF_AnnotList* const m_pList; + CPDF_Document* GetDocument() const { return m_pDocument; } - const CFX_ByteString m_sSubtype; - - CFX_MapPtrToPtr m_APMap; + protected: + CPDF_Document* m_pDocument; }; +class CPDF_FileSpec { + public: + CPDF_FileSpec(); -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_FileSpec(CPDF_Object* pObj) { m_pObj = pObj; } - CPDF_Document* GetDocument() const - { - return m_pDocument; - } -protected: + operator CPDF_Object*() const { return m_pObj; } - CFX_PtrArray m_AnnotList; + FX_BOOL IsURL() const; - CPDF_Dictionary* m_pPageDict; + FX_BOOL GetFileName(CFX_WideString& wsFileName) const; - CPDF_Document* m_pDocument; + CPDF_Stream* GetFileStream() const; - CFX_PtrArray m_Borders; + void SetFileName(const CFX_WideStringC& wsFileName, FX_BOOL bURL = FALSE); - 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); +class CPDF_LinkList { + public: + CPDF_LinkList(CPDF_Document* pDoc) { m_pDocument = pDoc; } - CFX_ByteString GetColorString(FX_BOOL bStrokingOperation = FALSE); + ~CPDF_LinkList(); - void GetColor(int& iColorType, FX_FLOAT fc[4], FX_BOOL bStrokingOperation = FALSE); + CPDF_Link GetLinkAtPoint(CPDF_Page* pPage, FX_FLOAT pdf_x, FX_FLOAT pdf_y); - void GetColor(FX_ARGB& color, int& iColorType, FX_BOOL bStrokingOperation = FALSE); + int CountLinks(CPDF_Page* pPage); + CPDF_Link GetLink(CPDF_Page* pPage, int index); + CPDF_Document* GetDocument() const { return m_pDocument; } + protected: + CPDF_Document* m_pDocument; - FX_BOOL HasTextMatrix(); + CFX_MapPtrToPtr m_PageMap; - CFX_ByteString GetTextMatrixString(); + CFX_PtrArray* GetPageLinks(CPDF_Page* pPage); - CFX_AffineMatrix GetTextMatrix(); - -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); +class CPDF_Link { + public: + CPDF_Link() : m_pDict(nullptr) {} + explicit CPDF_Link(CPDF_Dictionary* pDict) : m_pDict(pDict) {} - static CPDF_Font* AddStandardFont(const CPDF_Document* pDocument, CFX_ByteString csFontName); + CPDF_Dictionary* GetDict() const { return m_pDict; } - static CFX_ByteString GetNativeFont(uint8_t iCharSet, void* pLogFont = NULL); + CFX_FloatRect GetRect(); + CPDF_Dest GetDest(CPDF_Document* pDoc); + CPDF_Action GetAction(); - static CFX_ByteString GetNativeFont(void* pLogFont = NULL); - - 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(); + Type GetType() { return m_Type; } + FX_DWORD GetFlags() { return m_Flags; } - CFX_WideString GetRichTextString(); + CPDF_InterForm* GetInterForm() const { return m_pForm; } + CPDF_Dictionary* GetFieldDict() const { return m_pDict; } + void SetFieldDict(CPDF_Dictionary* pDict) { m_pDict = pDict; } - CFX_WideString GetValue(); + FX_BOOL ResetField(FX_BOOL bNotify = FALSE); - CFX_WideString GetDefaultValue(); + int CountControls() { return m_ControlList.GetSize(); } - FX_BOOL SetValue(const CFX_WideString& value, FX_BOOL bNotify = FALSE); + 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(); - int GetMaxLen(); + CFX_WideString GetMappingName(); + FX_DWORD GetFieldFlags(); + CFX_ByteString GetDefaultStyle(); + CFX_WideString GetRichTextString(); - int CountSelectedItems(); + CFX_WideString GetValue(); - int GetSelectedIndex(int index); + CFX_WideString GetDefaultValue(); - FX_BOOL ClearSelection(FX_BOOL bNotify = FALSE); + FX_BOOL SetValue(const CFX_WideString& value, FX_BOOL bNotify = FALSE); - FX_BOOL IsItemSelected(int index); + int GetMaxLen(); - FX_BOOL SetItemSelection(int index, FX_BOOL bSelected, FX_BOOL bNotify = FALSE); + int CountSelectedItems(); - FX_BOOL IsItemDefaultSelected(int index); + int GetSelectedIndex(int index); - int GetDefaultSelectedItem(); + FX_BOOL ClearSelection(FX_BOOL bNotify = FALSE); + FX_BOOL IsItemSelected(int index); + FX_BOOL SetItemSelection(int index, + FX_BOOL bSelected, + FX_BOOL bNotify = FALSE); + FX_BOOL IsItemDefaultSelected(int index); - int CountOptions(); + int GetDefaultSelectedItem(); - CFX_WideString GetOptionLabel(int index); + int CountOptions(); - CFX_WideString GetOptionValue(int index); + CFX_WideString GetOptionLabel(int index); - int FindOption(CFX_WideString csOptLabel); + CFX_WideString GetOptionValue(int index); - int FindOptionValue(const CFX_WideString& csOptValue, int iStartIndex = 0); + 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); + int GetTopVisibleIndex(); - FX_BOOL CheckControl(int iControlIndex, FX_BOOL bChecked, FX_BOOL bNotify = FALSE); + int CountSelectedOptions(); + int GetSelectedOptionIndex(int index); + FX_BOOL IsOptionSelected(int iOptIndex); + FX_BOOL SelectOption(int iOptIndex, + FX_BOOL bSelected, + FX_BOOL bNotify = FALSE); - int GetTopVisibleIndex(); + FX_BOOL ClearSelectedOptions(FX_BOOL bNotify = FALSE); + FX_BOOL ClearOptions(FX_BOOL bNotify = FALSE); + int InsertOption(CFX_WideString csOptLabel, + int index = -1, + 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; - FX_BOOL ClearOptions(FX_BOOL bNotify = FALSE);
+ CPDF_InterForm* m_pForm; - int InsertOption(CFX_WideString csOptLabel, int index = -1, FX_BOOL bNotify = FALSE);
+ CPDF_Dictionary* m_pDict; - FX_FLOAT GetFontSize() - { - return m_FontSize; - } + CFX_PtrArray m_ControlList; + friend class CPDF_InterForm; + friend class CPDF_FormControl; - CPDF_Font* GetFont() - { - return m_pFont; - } + CFX_WideString GetValue(FX_BOOL bDefault); -protected: + FX_BOOL SetValue(const CFX_WideString& value, + FX_BOOL bDefault, + FX_BOOL bNotify); - CPDF_FormField(CPDF_InterForm* pForm, CPDF_Dictionary* pDict); + void SyncFieldFlags(); - ~CPDF_FormField(); + int FindListSel(CPDF_String* str); - CPDF_FormField::Type m_Type; + CFX_WideString GetOptionText(int index, int sub_index); - FX_DWORD m_Flags; + void LoadDA(); - CPDF_InterForm* m_pForm; + void UpdateAP(CPDF_FormControl* pControl); - CPDF_Dictionary* m_pDict; + CFX_WideString GetCheckValue(FX_BOOL bDefault); - CFX_PtrArray m_ControlList; - friend class CPDF_InterForm; - friend class CPDF_FormControl; + FX_BOOL SetCheckValue(const CFX_WideString& value, + FX_BOOL bDefault, + FX_BOOL bNotify); + 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_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; } - CPDF_IconFit(CPDF_Dictionary* pDict = NULL) - { - m_pDict = pDict; - } + operator CPDF_Dictionary*() const { return m_pDict; } - operator CPDF_Dictionary*() const - { - return m_pDict; - } + enum ScaleMethod { Always = 0, Bigger, Smaller, Never }; + ScaleMethod GetScaleMethod(); + FX_BOOL IsProportionalScale(); + void GetIconPosition(FX_FLOAT& fLeft, FX_FLOAT& fBottom); - enum ScaleMethod { - Always = 0, - Bigger, - Smaller, - Never - }; + FX_BOOL GetFittingBounds(); - ScaleMethod GetScaleMethod(); - - - - - FX_BOOL IsProportionalScale(); - - - - - 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"); - } - - inline void GetOriginalBorderColor(int& iColorType, FX_FLOAT fc[4]) - { - GetOriginalColor(iColorType, fc, "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(); } + CPDF_InterForm* GetInterForm() const { return m_pForm; } + CPDF_FormField* GetField() const { return m_pField; } + CPDF_Dictionary* GetWidget() const { return m_pWidgetDict; } - inline FX_ARGB GetBackgroundColor(int& iColorType) - { - return GetColor(iColorType, "BG"); - } + CFX_FloatRect GetRect(); - inline FX_FLOAT GetOriginalBackgroundColor(int index) - { - return GetOriginalColor(index, "BG"); - } + void DrawControl(CFX_RenderDevice* pDevice, + CFX_AffineMatrix* pMatrix, + CPDF_Page* pPage, + CPDF_Annot::AppearanceMode mode, + const CPDF_RenderOptions* pOptions = NULL); - inline void GetOriginalBackgroundColor(int& iColorType, FX_FLOAT fc[4]) - { - GetOriginalColor(iColorType, fc, "BG"); - } + CFX_ByteString GetCheckedAPState(); + CFX_WideString GetExportValue(); + FX_BOOL IsChecked(); + FX_BOOL IsDefaultChecked(); - inline CFX_WideString GetNormalCaption() - { - return GetCaption("CA"); - } + enum HighlightingMode { None = 0, Invert, Outline, Push, Toggle }; + HighlightingMode GetHighlightingMode(); + FX_BOOL HasMKEntry(CFX_ByteString csEntry); + int GetRotation(); - inline CFX_WideString GetRolloverCaption() - { - return GetCaption("RC"); - } + inline FX_ARGB GetBorderColor(int& iColorType) { + return GetColor(iColorType, "BC"); + } + 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 CFX_WideString GetDownCaption() - { - return GetCaption("AC"); - } + inline FX_FLOAT GetOriginalBackgroundColor(int index) { + return GetOriginalColor(index, "BG"); + } + 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 CPDF_Stream* GetNormalIcon() - { - return GetIcon("I"); - } + inline CFX_WideString GetDownCaption() { return GetCaption("AC"); } + inline CPDF_Stream* GetNormalIcon() { return GetIcon("I"); } + inline CPDF_Stream* GetRolloverIcon() { return GetIcon("RI"); } + inline CPDF_Stream* GetDownIcon() { return GetIcon("IX"); } - inline CPDF_Stream* GetRolloverIcon() - { - return GetIcon("RI"); - } + CPDF_IconFit GetIconFit(); + int GetTextPosition(); + CPDF_Action GetAction(); + CPDF_AAction GetAdditionalAction(); - inline CPDF_Stream* GetDownIcon() - { - return GetIcon("IX"); - } + CPDF_DefaultAppearance GetDefaultAppearance(); + CPDF_Font* GetDefaultControlFont(); + int GetControlAlignment(); + protected: + CPDF_FormControl(CPDF_FormField* pField, CPDF_Dictionary* pWidgetDict); - CPDF_IconFit GetIconFit(); + CFX_ByteString GetOnStateName(); + void SetOnStateName(const CFX_ByteString& csOn); + void CheckControl(FX_BOOL bChecked); + FX_ARGB GetColor(int& iColorType, CFX_ByteString csEntry); - int GetTextPosition(); + FX_FLOAT GetOriginalColor(int index, CFX_ByteString csEntry); + void GetOriginalColor(int& iColorType, + FX_FLOAT fc[4], + CFX_ByteString csEntry); + CFX_WideString GetCaption(CFX_ByteString csEntry); + CPDF_Stream* GetIcon(CFX_ByteString csEntry); - CPDF_Action GetAction(); + CPDF_ApSettings GetMK(FX_BOOL bCreate); + 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() {} - 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); + virtual int BeforeValueChange(const CPDF_FormField* pField, + CFX_WideString& csValue) { + return 0; + } - 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; -}; -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; - } + 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(); - - - ~CPDF_Metadata(); +class CPDF_Metadata { + public: + CPDF_Metadata(); - void LoadDoc(CPDF_Document *pDoc); + ~CPDF_Metadata(); + 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: +class CPDF_ViewerPreferences { + public: + CPDF_ViewerPreferences(CPDF_Document* pDoc); - CPDF_ViewerPreferences(CPDF_Document *pDoc); + ~CPDF_ViewerPreferences(); + FX_BOOL IsDirectionR2L() const; - ~CPDF_ViewerPreferences(); + FX_BOOL PrintScaling() const; + int32_t NumCopies() const; - FX_BOOL IsDirectionR2L() const; + CPDF_Array* PrintPageRange() const; - FX_BOOL PrintScaling() const; + CFX_ByteString Duplex() const; - int32_t NumCopies() const; - - CPDF_Array* PrintPageRange() 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_ |