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 {
33 CPDFSDK_DateTime(const CFX_ByteString& dtStr);
34 CPDFSDK_DateTime(const CPDFSDK_DateTime& datetime);
35 CPDFSDK_DateTime(const FX_SYSTEMTIME& st);
37 CPDFSDK_DateTime& operator=(const CPDFSDK_DateTime& datetime);
38 CPDFSDK_DateTime& operator=(const FX_SYSTEMTIME& st);
39 FX_BOOL operator==(CPDFSDK_DateTime& datetime);
40 FX_BOOL operator!=(CPDFSDK_DateTime& datetime);
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);
47 CPDFSDK_DateTime& FromPDFDateTimeString(const CFX_ByteString& dtStr);
48 CFX_ByteString ToCommonDateTimeString();
49 CFX_ByteString ToPDFDateTimeString();
50 void ToSystemTime(FX_SYSTEMTIME& st);
51 CPDFSDK_DateTime ToGMT();
52 CPDFSDK_DateTime& AddDays(short days);
53 CPDFSDK_DateTime& AddSeconds(int seconds);
71 CPDFSDK_Annot(CPDF_Annot* pAnnot, CPDFSDK_PageView* pPageView);
72 virtual ~CPDFSDK_Annot();
75 virtual FX_FLOAT GetMinWidth() const;
76 virtual FX_FLOAT GetMinHeight() const;
77 // define layout order to 5.
78 virtual int GetLayoutOrder() const { return 5; }
81 CPDF_Annot* GetPDFAnnot();
83 void SetPage(CPDFSDK_PageView* pPageView);
84 CPDFSDK_PageView* GetPageView();
89 void SetTabOrder(int iTabOrder);
93 void SetSelected(FX_BOOL bSelected);
95 CFX_ByteString GetType() const;
96 virtual CFX_ByteString GetSubType() const;
98 CPDF_Page* GetPDFPage();
101 CPDF_Dictionary* GetAnnotDict() const;
103 void SetRect(const CPDF_Rect& rect);
104 CPDF_Rect GetRect() const;
106 void SetContents(const CFX_WideString& sContents);
107 CFX_WideString GetContents() const;
109 void SetAnnotName(const CFX_WideString& sName);
110 CFX_WideString GetAnnotName() const;
112 void SetModifiedDate(const FX_SYSTEMTIME& st);
113 FX_SYSTEMTIME GetModifiedDate() const;
115 void SetFlags(int nFlags);
116 int GetFlags() const;
118 void SetAppState(const CFX_ByteString& str);
119 CFX_ByteString GetAppState() const;
121 void SetStructParent(int key);
122 int GetStructParent() const;
125 void SetBorderWidth(int nWidth);
126 int GetBorderWidth() const;
134 void SetBorderStyle(int nStyle);
135 int GetBorderStyle() const;
137 void SetBorderDash(const CFX_IntArray& array);
138 void GetBorderDash(CFX_IntArray& array) const;
140 // The background of the annotation's icon when closed
141 // The title bar of the annotation's pop-up window
142 // The border of a link annotation
144 void SetColor(FX_COLORREF color);
146 FX_BOOL GetColor(FX_COLORREF& color) const;
148 FX_BOOL IsVisible() const;
151 CPDF_Action GetAction() const;
152 void SetAction(const CPDF_Action& a);
155 CPDF_AAction GetAAction() const;
156 void SetAAction(const CPDF_AAction& aa);
157 void RemoveAAction();
159 virtual CPDF_Action GetAAction(CPDF_AAction::AActionType eAAT);
162 FX_BOOL IsAppearanceValid();
163 FX_BOOL IsAppearanceValid(CPDF_Annot::AppearanceMode mode);
164 void DrawAppearance(CFX_RenderDevice* pDevice,
165 const CPDF_Matrix* pUser2Device,
166 CPDF_Annot::AppearanceMode mode,
167 const CPDF_RenderOptions* pOptions);
168 void DrawBorder(CFX_RenderDevice* pDevice,
169 const CPDF_Matrix* pUser2Device,
170 const CPDF_RenderOptions* pOptions);
172 void ClearCachedAP();
174 void WriteAppearance(const CFX_ByteString& sAPType,
175 const CPDF_Rect& rcBBox,
176 const CPDF_Matrix& matrix,
177 const CFX_ByteString& sContents,
178 const CFX_ByteString& sAPState = "");
181 virtual void Annot_OnDraw(CFX_RenderDevice* pDevice,
182 CPDF_Matrix* pUser2Device,
183 CPDF_RenderOptions* pOptions);
187 FX_BOOL CreateFormFiller();
190 CPDF_Annot* m_pAnnot;
191 CPDFSDK_PageView* m_pPageView;
196 #endif // FPDFSDK_INCLUDE_FSDK_BASEANNOT_H_