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. 4 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 7 #ifndef _FSDK_BASEANNOT_H_ 8 #define _FSDK_BASEANNOT_H_ 9 10 #if _FX_OS_ == _FX_ANDROID_ 11 #include "time.h" 12 #else 13 #include <ctime> 14 #endif 15 16 class CPDFSDK_PageView; 17 #define CFX_IntArray CFX_ArrayTemplate<int> 18 19 class CPDFSDK_DateTime : public CFX_Object 20 { 21 public: 22 CPDFSDK_DateTime(); 23 CPDFSDK_DateTime(const CFX_ByteString& dtStr); 24 CPDFSDK_DateTime(const CPDFSDK_DateTime& datetime); 25 CPDFSDK_DateTime(const FX_SYSTEMTIME& st); 26 27 28 CPDFSDK_DateTime& operator = (const CPDFSDK_DateTime& datetime); 29 CPDFSDK_DateTime& operator = (const FX_SYSTEMTIME& st); 30 FX_BOOL operator == (CPDFSDK_DateTime& datetime); 31 FX_BOOL operator != (CPDFSDK_DateTime& datetime); 32 FX_BOOL operator > (CPDFSDK_DateTime& datetime); 33 FX_BOOL operator >= (CPDFSDK_DateTime& datetime); 34 FX_BOOL operator < (CPDFSDK_DateTime& datetime); 35 FX_BOOL operator <= (CPDFSDK_DateTime& datetime); 36 operator time_t(); 37 38 CPDFSDK_DateTime& FromPDFDateTimeString(const CFX_ByteString& dtStr); 39 CFX_ByteString ToCommonDateTimeString(); 40 CFX_ByteString ToPDFDateTimeString(); 41 void ToSystemTime(FX_SYSTEMTIME& st); 42 CPDFSDK_DateTime ToGMT(); 43 CPDFSDK_DateTime& AddDays(short days); 44 CPDFSDK_DateTime& AddSeconds(int seconds); 45 46 void ResetDateTime(); 47 48 struct FX_DATETIME 49 { 50 FX_SHORT year; 51 FX_BYTE month; 52 FX_BYTE day; 53 FX_BYTE hour; 54 FX_BYTE minute; 55 FX_BYTE second; 56 FX_CHAR tzHour; 57 FX_BYTE tzMinute; 58 }dt; 59 }; 60 61 class CPDFSDK_Annot 62 { 63 public: 64 CPDFSDK_Annot(CPDF_Annot* pAnnot, CPDFSDK_PageView* pPageView); 65 virtual ~CPDFSDK_Annot(); 66 public: 67 virtual FX_FLOAT GetMinWidth() const; 68 virtual FX_FLOAT GetMinHeight() const; 69 //define layout order to 5. GetLayoutOrder()70 virtual int GetLayoutOrder() const { return 5; } 71 72 public: 73 CPDF_Annot* GetPDFAnnot(); 74 75 void SetPage(CPDFSDK_PageView* pPageView); 76 CPDFSDK_PageView* GetPageView(); 77 FX_DWORD GetFlags(); 78 79 // Tab Order 80 int GetTabOrder(); 81 void SetTabOrder(int iTabOrder); 82 83 // Selection 84 FX_BOOL IsSelected(); 85 void SetSelected(FX_BOOL bSelected); 86 87 CFX_ByteString GetType() const; 88 virtual CFX_ByteString GetSubType() const; 89 90 CPDF_Page* GetPDFPage(); 91 92 public: 93 CPDF_Dictionary* GetAnnotDict() const; 94 95 void SetRect(const CPDF_Rect& rect); 96 CPDF_Rect GetRect() const; 97 98 void SetContents(const CFX_WideString& sContents); 99 CFX_WideString GetContents() const; 100 101 void SetAnnotName(const CFX_WideString& sName); 102 CFX_WideString GetAnnotName() const; 103 104 void SetModifiedDate(const FX_SYSTEMTIME& st); 105 FX_SYSTEMTIME GetModifiedDate() const; 106 107 void SetFlags(int nFlags); 108 int GetFlags() const; 109 110 void SetAppState(const CFX_ByteString& str); 111 CFX_ByteString GetAppState() const; 112 113 void SetStructParent(int key); 114 int GetStructParent() const; 115 116 //border 117 void SetBorderWidth(int nWidth); 118 int GetBorderWidth() const; 119 120 //BBS_SOLID 121 //BBS_DASH 122 //BBS_BEVELED 123 //BBS_INSET 124 //BBS_UNDERLINE 125 126 void SetBorderStyle(int nStyle); 127 int GetBorderStyle() const; 128 129 void SetBorderDash(const CFX_IntArray& array); 130 void GetBorderDash(CFX_IntArray& array) const; 131 132 //The background of the annotation's icon when closed 133 //The title bar of the annotation's pop-up window 134 //The border of a link annotation 135 136 void SetColor(FX_COLORREF color); 137 void RemoveColor(); 138 FX_BOOL GetColor(FX_COLORREF& color) const; 139 140 FX_BOOL IsVisible() const; 141 //action 142 143 CPDF_Action GetAction() const; 144 void SetAction(const CPDF_Action& a); 145 void RemoveAction(); 146 147 CPDF_AAction GetAAction() const; 148 void SetAAction(const CPDF_AAction& aa); 149 void RemoveAAction(); 150 151 virtual CPDF_Action GetAAction(CPDF_AAction::AActionType eAAT); 152 153 public: 154 FX_BOOL IsAppearanceValid(); 155 FX_BOOL IsAppearanceValid(CPDF_Annot::AppearanceMode mode); 156 void DrawAppearance(CFX_RenderDevice* pDevice, const CPDF_Matrix* pUser2Device, 157 CPDF_Annot::AppearanceMode mode, const CPDF_RenderOptions* pOptions); 158 void DrawBorder(CFX_RenderDevice* pDevice, const CPDF_Matrix* pUser2Device, 159 const CPDF_RenderOptions* pOptions); 160 161 void ClearCachedAP(); 162 163 virtual void ResetAppearance(); 164 void WriteAppearance(const CFX_ByteString& sAPType, const CPDF_Rect& rcBBox, 165 const CPDF_Matrix& matrix, const CFX_ByteString& sContents, 166 const CFX_ByteString& sAPState = ""); 167 168 public: 169 virtual void Annot_OnDraw(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,CPDF_RenderOptions* pOptions); 170 public: 171 172 173 private: 174 FX_BOOL CreateFormFiller(); 175 protected: 176 CPDF_Annot* m_pAnnot; 177 CPDFSDK_PageView* m_pPageView; 178 FX_BOOL m_bSelected; 179 int m_nTabOrder; 180 181 }; 182 183 184 185 #endif 186 187