1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
7 #ifndef FPDFSDK_INCLUDE_FSDK_BASEANNOT_H_
8 #define FPDFSDK_INCLUDE_FSDK_BASEANNOT_H_
10 #if _FX_OS_ == _FX_ANDROID_
16 #include "../../core/include/fpdfdoc/fpdf_doc.h"
17 #include "../../core/include/fxcrt/fx_basic.h"
18 #include "fx_systemhandler.h"
20 class CPDFSDK_PageView;
25 class CPDF_RenderOptions;
26 class CFX_RenderDevice;
28 #define CFX_IntArray CFX_ArrayTemplate<int>
30 class CPDFSDK_DateTime
34 CPDFSDK_DateTime(const CFX_ByteString& dtStr);
35 CPDFSDK_DateTime(const CPDFSDK_DateTime& datetime);
36 CPDFSDK_DateTime(const FX_SYSTEMTIME& st);
39 CPDFSDK_DateTime& operator = (const CPDFSDK_DateTime& datetime);
40 CPDFSDK_DateTime& operator = (const FX_SYSTEMTIME& st);
41 FX_BOOL operator == (CPDFSDK_DateTime& datetime);
42 FX_BOOL operator != (CPDFSDK_DateTime& datetime);
43 FX_BOOL operator > (CPDFSDK_DateTime& datetime);
44 FX_BOOL operator >= (CPDFSDK_DateTime& datetime);
45 FX_BOOL operator < (CPDFSDK_DateTime& datetime);
46 FX_BOOL operator <= (CPDFSDK_DateTime& datetime);
49 CPDFSDK_DateTime& FromPDFDateTimeString(const CFX_ByteString& dtStr);
50 CFX_ByteString ToCommonDateTimeString();
51 CFX_ByteString ToPDFDateTimeString();
52 void ToSystemTime(FX_SYSTEMTIME& st);
53 CPDFSDK_DateTime ToGMT();
54 CPDFSDK_DateTime& AddDays(short days);
55 CPDFSDK_DateTime& AddSeconds(int seconds);
75 CPDFSDK_Annot(CPDFSDK_PageView* pPageView);
76 virtual ~CPDFSDK_Annot() {};
78 virtual FX_BOOL IsXFAField() { return FALSE; }
80 virtual FX_FLOAT GetMinWidth() const;
81 virtual FX_FLOAT GetMinHeight() const;
82 //define layout order to 5.
83 virtual int GetLayoutOrder() const { return 5; }
85 virtual CPDF_Annot* GetPDFAnnot() { return NULL; }
86 virtual XFA_HWIDGET GetXFAWidget() { return NULL; }
88 virtual CFX_ByteString GetType() const { return ""; }
89 virtual CFX_ByteString GetSubType() const { return ""; }
91 virtual void SetRect(const CPDF_Rect& rect) {}
92 virtual CPDF_Rect GetRect() const { return CPDF_Rect(); }
94 virtual void Annot_OnDraw(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,CPDF_RenderOptions* pOptions) {}
97 CPDF_Page* GetPDFPage();
98 CPDFXFA_Page* GetPDFXFAPage();
100 void SetPage(CPDFSDK_PageView* pPageView) { m_pPageView = pPageView; }
101 CPDFSDK_PageView* GetPageView() { return m_pPageView; }
105 void SetTabOrder(int iTabOrder);
108 FX_BOOL IsSelected();
109 void SetSelected(FX_BOOL bSelected);
112 CPDF_Annot* m_pAnnot;
113 CPDFSDK_PageView* m_pPageView;
119 class CPDFSDK_BAAnnot : public CPDFSDK_Annot
122 CPDFSDK_BAAnnot(CPDF_Annot* pAnnot, CPDFSDK_PageView* pPageView);
123 virtual ~CPDFSDK_BAAnnot();
126 virtual FX_BOOL IsXFAField();
128 virtual CFX_ByteString GetType() const;
129 virtual CFX_ByteString GetSubType() const;
131 virtual void SetRect(const CPDF_Rect& rect);
132 virtual CPDF_Rect GetRect() const;
134 virtual CPDF_Annot* GetPDFAnnot();
136 virtual void Annot_OnDraw(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,CPDF_RenderOptions* pOptions);
138 CPDF_Dictionary* GetAnnotDict() const;
140 void SetContents(const CFX_WideString& sContents);
141 CFX_WideString GetContents() const;
143 void SetAnnotName(const CFX_WideString& sName);
144 CFX_WideString GetAnnotName() const;
146 void SetModifiedDate(const FX_SYSTEMTIME& st);
147 FX_SYSTEMTIME GetModifiedDate() const;
149 void SetFlags(int nFlags);
150 int GetFlags() const;
152 void SetAppState(const CFX_ByteString& str);
153 CFX_ByteString GetAppState() const;
155 void SetStructParent(int key);
156 int GetStructParent() const;
159 void SetBorderWidth(int nWidth);
160 int GetBorderWidth() const;
168 void SetBorderStyle(int nStyle);
169 int GetBorderStyle() const;
171 void SetBorderDash(const CFX_IntArray& array);
172 void GetBorderDash(CFX_IntArray& array) const;
174 //The background of the annotation's icon when closed
175 //The title bar of the annotation's pop-up window
176 //The border of a link annotation
178 void SetColor(FX_COLORREF color);
180 FX_BOOL GetColor(FX_COLORREF& color) const;
182 FX_BOOL IsVisible() const;
185 CPDF_Action GetAction() const;
186 void SetAction(const CPDF_Action& a);
189 CPDF_AAction GetAAction() const;
190 void SetAAction(const CPDF_AAction& aa);
191 void RemoveAAction();
193 virtual CPDF_Action GetAAction(CPDF_AAction::AActionType eAAT);
196 virtual FX_BOOL IsAppearanceValid();
197 virtual FX_BOOL IsAppearanceValid(CPDF_Annot::AppearanceMode mode);
198 virtual void DrawAppearance(CFX_RenderDevice* pDevice, const CPDF_Matrix* pUser2Device,
199 CPDF_Annot::AppearanceMode mode, const CPDF_RenderOptions* pOptions);
200 void DrawBorder(CFX_RenderDevice* pDevice, const CPDF_Matrix* pUser2Device,
201 const CPDF_RenderOptions* pOptions);
203 void ClearCachedAP();
205 virtual void ResetAppearance();
206 void WriteAppearance(const CFX_ByteString& sAPType, const CPDF_Rect& rcBBox,
207 const CPDF_Matrix& matrix, const CFX_ByteString& sContents,
208 const CFX_ByteString& sAPState = "");
211 FX_BOOL CreateFormFiller();
213 CPDF_Annot* m_pAnnot;
216 #endif // FPDFSDK_INCLUDE_FSDK_BASEANNOT_H_