| OLD | NEW | 
|---|
|  | (Empty) | 
| 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 FPDFSDK_INCLUDE_FSDK_BASEFORM_H_ |  | 
| 8 #define FPDFSDK_INCLUDE_FSDK_BASEFORM_H_ |  | 
| 9 |  | 
| 10 #include <map> |  | 
| 11 #include <set> |  | 
| 12 #include <vector> |  | 
| 13 |  | 
| 14 #include "core/fpdfdoc/include/ipdf_formnotify.h" |  | 
| 15 #include "core/fxcrt/include/fx_basic.h" |  | 
| 16 #include "core/fxge/include/fx_dib.h" |  | 
| 17 #include "fpdfsdk/include/cpdfsdk_annot.h" |  | 
| 18 #include "fpdfsdk/include/cpdfsdk_baannot.h" |  | 
| 19 |  | 
| 20 #if _FX_OS_ == _FX_ANDROID_ |  | 
| 21 #include "time.h" |  | 
| 22 #else |  | 
| 23 #include <ctime> |  | 
| 24 #endif |  | 
| 25 |  | 
| 26 class CPDFSDK_Annot; |  | 
| 27 class CPDFSDK_Document; |  | 
| 28 class CPDFSDK_InterForm; |  | 
| 29 class CPDFSDK_PageView; |  | 
| 30 class CPDF_Action; |  | 
| 31 class CPDF_FormControl; |  | 
| 32 class CPDF_FormField; |  | 
| 33 class CPDF_InterForm; |  | 
| 34 struct CPWL_Color; |  | 
| 35 |  | 
| 36 #ifdef PDF_ENABLE_XFA |  | 
| 37 class CXFA_FFWidgetHandler; |  | 
| 38 |  | 
| 39 typedef enum _PDFSDK_XFAAActionType { |  | 
| 40   PDFSDK_XFA_Click = 0, |  | 
| 41   PDFSDK_XFA_Full, |  | 
| 42   PDFSDK_XFA_PreOpen, |  | 
| 43   PDFSDK_XFA_PostOpen |  | 
| 44 } PDFSDK_XFAAActionType; |  | 
| 45 #endif  // PDF_ENABLE_XFA |  | 
| 46 |  | 
| 47 struct PDFSDK_FieldAction { |  | 
| 48   PDFSDK_FieldAction(); |  | 
| 49   PDFSDK_FieldAction(const PDFSDK_FieldAction& other) = delete; |  | 
| 50 |  | 
| 51   FX_BOOL bModifier;         // in |  | 
| 52   FX_BOOL bShift;            // in |  | 
| 53   int nCommitKey;            // in |  | 
| 54   CFX_WideString sChange;    // in[out] |  | 
| 55   CFX_WideString sChangeEx;  // in |  | 
| 56   FX_BOOL bKeyDown;          // in |  | 
| 57   int nSelEnd;               // in[out] |  | 
| 58   int nSelStart;             // in[out] |  | 
| 59   CFX_WideString sValue;     // in[out] |  | 
| 60   FX_BOOL bWillCommit;       // in |  | 
| 61   FX_BOOL bFieldFull;        // in |  | 
| 62   FX_BOOL bRC;               // in[out] |  | 
| 63 }; |  | 
| 64 |  | 
| 65 class CPDFSDK_Widget : public CPDFSDK_BAAnnot { |  | 
| 66  public: |  | 
| 67   class Observer { |  | 
| 68    public: |  | 
| 69     explicit Observer(CPDFSDK_Widget** pWatchedPtr); |  | 
| 70     ~Observer(); |  | 
| 71 |  | 
| 72     void OnWidgetDestroyed(); |  | 
| 73 |  | 
| 74    private: |  | 
| 75     CPDFSDK_Widget** m_pWatchedPtr; |  | 
| 76   }; |  | 
| 77 |  | 
| 78 #ifdef PDF_ENABLE_XFA |  | 
| 79   CXFA_FFWidget* GetMixXFAWidget() const; |  | 
| 80   CXFA_FFWidget* GetGroupMixXFAWidget(); |  | 
| 81   CXFA_FFWidgetHandler* GetXFAWidgetHandler() const; |  | 
| 82 |  | 
| 83   FX_BOOL HasXFAAAction(PDFSDK_XFAAActionType eXFAAAT); |  | 
| 84   FX_BOOL OnXFAAAction(PDFSDK_XFAAActionType eXFAAAT, |  | 
| 85                        PDFSDK_FieldAction& data, |  | 
| 86                        CPDFSDK_PageView* pPageView); |  | 
| 87 |  | 
| 88   void Synchronize(FX_BOOL bSynchronizeElse); |  | 
| 89   void SynchronizeXFAValue(); |  | 
| 90   void SynchronizeXFAItems(); |  | 
| 91 |  | 
| 92   static void SynchronizeXFAValue(CXFA_FFDocView* pXFADocView, |  | 
| 93                                   CXFA_FFWidget* hWidget, |  | 
| 94                                   CPDF_FormField* pFormField, |  | 
| 95                                   CPDF_FormControl* pFormControl); |  | 
| 96   static void SynchronizeXFAItems(CXFA_FFDocView* pXFADocView, |  | 
| 97                                   CXFA_FFWidget* hWidget, |  | 
| 98                                   CPDF_FormField* pFormField, |  | 
| 99                                   CPDF_FormControl* pFormControl); |  | 
| 100 #endif  // PDF_ENABLE_XFA |  | 
| 101 |  | 
| 102   CPDFSDK_Widget(CPDF_Annot* pAnnot, |  | 
| 103                  CPDFSDK_PageView* pPageView, |  | 
| 104                  CPDFSDK_InterForm* pInterForm); |  | 
| 105   ~CPDFSDK_Widget() override; |  | 
| 106 |  | 
| 107   void AddObserver(Observer* observer); |  | 
| 108   void RemoveObserver(Observer* observer); |  | 
| 109 |  | 
| 110   // CPDFSDK_Annot |  | 
| 111   CFX_ByteString GetSubType() const override; |  | 
| 112   CPDF_Action GetAAction(CPDF_AAction::AActionType eAAT) override; |  | 
| 113   FX_BOOL IsAppearanceValid() override; |  | 
| 114 |  | 
| 115   int GetLayoutOrder() const override; |  | 
| 116 |  | 
| 117   int GetFieldType() const; |  | 
| 118 |  | 
| 119   // Possible values from PDF 32000-1:2008, table 221. |  | 
| 120   // FIELDFLAG_READONLY |  | 
| 121   // FIELDFLAG_REQUIRED |  | 
| 122   // FIELDFLAG_NOEXPORT |  | 
| 123   int GetFieldFlags() const; |  | 
| 124   int GetRotate() const; |  | 
| 125 |  | 
| 126   FX_BOOL GetFillColor(FX_COLORREF& color) const; |  | 
| 127   FX_BOOL GetBorderColor(FX_COLORREF& color) const; |  | 
| 128   FX_BOOL GetTextColor(FX_COLORREF& color) const; |  | 
| 129   FX_FLOAT GetFontSize() const; |  | 
| 130 |  | 
| 131   int GetSelectedIndex(int nIndex) const; |  | 
| 132 #ifndef PDF_ENABLE_XFA |  | 
| 133   CFX_WideString GetValue() const; |  | 
| 134 #else |  | 
| 135   CFX_WideString GetValue(FX_BOOL bDisplay = TRUE) const; |  | 
| 136 #endif  // PDF_ENABLE_XFA |  | 
| 137   CFX_WideString GetDefaultValue() const; |  | 
| 138   CFX_WideString GetOptionLabel(int nIndex) const; |  | 
| 139   int CountOptions() const; |  | 
| 140   FX_BOOL IsOptionSelected(int nIndex) const; |  | 
| 141   int GetTopVisibleIndex() const; |  | 
| 142   bool IsChecked() const; |  | 
| 143   /* |  | 
| 144   BF_ALIGN_LEFT |  | 
| 145   BF_ALIGN_MIDDL |  | 
| 146   BF_ALIGN_RIGHT |  | 
| 147   */ |  | 
| 148   int GetAlignment() const; |  | 
| 149   int GetMaxLen() const; |  | 
| 150 #ifdef PDF_ENABLE_XFA |  | 
| 151   CFX_WideString GetName() const; |  | 
| 152 #endif  // PDF_ENABLE_XFA |  | 
| 153   CFX_WideString GetAlternateName() const; |  | 
| 154 |  | 
| 155   // Set Properties. |  | 
| 156   void SetCheck(bool bChecked, bool bNotify); |  | 
| 157   void SetValue(const CFX_WideString& sValue, FX_BOOL bNotify); |  | 
| 158   void SetDefaultValue(const CFX_WideString& sValue); |  | 
| 159   void SetOptionSelection(int index, FX_BOOL bSelected, FX_BOOL bNotify); |  | 
| 160   void ClearSelection(FX_BOOL bNotify); |  | 
| 161   void SetTopVisibleIndex(int index); |  | 
| 162 |  | 
| 163 #ifdef PDF_ENABLE_XFA |  | 
| 164   void ResetAppearance(FX_BOOL bValueChanged); |  | 
| 165 #endif  // PDF_ENABLE_XFA |  | 
| 166   void ResetAppearance(const FX_WCHAR* sValue, FX_BOOL bValueChanged); |  | 
| 167   void ResetFieldAppearance(FX_BOOL bValueChanged); |  | 
| 168   void UpdateField(); |  | 
| 169   CFX_WideString OnFormat(FX_BOOL& bFormated); |  | 
| 170 |  | 
| 171   // Message. |  | 
| 172   FX_BOOL OnAAction(CPDF_AAction::AActionType type, |  | 
| 173                     PDFSDK_FieldAction& data, |  | 
| 174                     CPDFSDK_PageView* pPageView); |  | 
| 175 |  | 
| 176   CPDFSDK_InterForm* GetInterForm() const { return m_pInterForm; } |  | 
| 177   CPDF_FormField* GetFormField() const; |  | 
| 178   CPDF_FormControl* GetFormControl() const; |  | 
| 179   static CPDF_FormControl* GetFormControl(CPDF_InterForm* pInterForm, |  | 
| 180                                           const CPDF_Dictionary* pAnnotDict); |  | 
| 181 |  | 
| 182   void DrawShadow(CFX_RenderDevice* pDevice, CPDFSDK_PageView* pPageView); |  | 
| 183 |  | 
| 184   void SetAppModified(); |  | 
| 185   void ClearAppModified(); |  | 
| 186   FX_BOOL IsAppModified() const; |  | 
| 187 |  | 
| 188   int32_t GetAppearanceAge() const; |  | 
| 189   int32_t GetValueAge() const; |  | 
| 190 |  | 
| 191   FX_BOOL IsWidgetAppearanceValid(CPDF_Annot::AppearanceMode mode); |  | 
| 192   void DrawAppearance(CFX_RenderDevice* pDevice, |  | 
| 193                       const CFX_Matrix* pUser2Device, |  | 
| 194                       CPDF_Annot::AppearanceMode mode, |  | 
| 195                       const CPDF_RenderOptions* pOptions) override; |  | 
| 196 |  | 
| 197   FX_BOOL HitTest(FX_FLOAT pageX, FX_FLOAT pageY); |  | 
| 198 |  | 
| 199  private: |  | 
| 200   void ResetAppearance_PushButton(); |  | 
| 201   void ResetAppearance_CheckBox(); |  | 
| 202   void ResetAppearance_RadioButton(); |  | 
| 203   void ResetAppearance_ComboBox(const FX_WCHAR* sValue); |  | 
| 204   void ResetAppearance_ListBox(); |  | 
| 205   void ResetAppearance_TextField(const FX_WCHAR* sValue); |  | 
| 206 |  | 
| 207   CFX_FloatRect GetClientRect() const; |  | 
| 208   CFX_FloatRect GetRotatedRect() const; |  | 
| 209 |  | 
| 210   CFX_ByteString GetBackgroundAppStream() const; |  | 
| 211   CFX_ByteString GetBorderAppStream() const; |  | 
| 212   CFX_Matrix GetMatrix() const; |  | 
| 213 |  | 
| 214   CPWL_Color GetTextPWLColor() const; |  | 
| 215   CPWL_Color GetBorderPWLColor() const; |  | 
| 216   CPWL_Color GetFillPWLColor() const; |  | 
| 217 |  | 
| 218   void AddImageToAppearance(const CFX_ByteString& sAPType, CPDF_Stream* pImage); |  | 
| 219   void RemoveAppearance(const CFX_ByteString& sAPType); |  | 
| 220 |  | 
| 221   CPDFSDK_InterForm* const m_pInterForm; |  | 
| 222   FX_BOOL m_bAppModified; |  | 
| 223   int32_t m_nAppAge; |  | 
| 224   int32_t m_nValueAge; |  | 
| 225   std::set<Observer*> m_Observers; |  | 
| 226 |  | 
| 227 #ifdef PDF_ENABLE_XFA |  | 
| 228   mutable CXFA_FFWidget* m_hMixXFAWidget; |  | 
| 229   mutable CXFA_FFWidgetHandler* m_pWidgetHandler; |  | 
| 230 #endif  // PDF_ENABLE_XFA |  | 
| 231 }; |  | 
| 232 |  | 
| 233 #ifdef PDF_ENABLE_XFA |  | 
| 234 class CPDFSDK_XFAWidget : public CPDFSDK_Annot { |  | 
| 235  public: |  | 
| 236   CPDFSDK_XFAWidget(CXFA_FFWidget* pAnnot, |  | 
| 237                     CPDFSDK_PageView* pPageView, |  | 
| 238                     CPDFSDK_InterForm* pInterForm); |  | 
| 239   ~CPDFSDK_XFAWidget() override {} |  | 
| 240 |  | 
| 241   FX_BOOL IsXFAField() override; |  | 
| 242   CXFA_FFWidget* GetXFAWidget() const override; |  | 
| 243   CFX_ByteString GetType() const override; |  | 
| 244   CFX_ByteString GetSubType() const override; |  | 
| 245   CFX_FloatRect GetRect() const override; |  | 
| 246 |  | 
| 247   CPDFSDK_InterForm* GetInterForm() { return m_pInterForm; } |  | 
| 248 |  | 
| 249  private: |  | 
| 250   CPDFSDK_InterForm* m_pInterForm; |  | 
| 251   CXFA_FFWidget* m_hXFAWidget; |  | 
| 252 }; |  | 
| 253 #endif  // PDF_ENABLE_XFA |  | 
| 254 |  | 
| 255 class CPDFSDK_InterForm : public IPDF_FormNotify { |  | 
| 256  public: |  | 
| 257   explicit CPDFSDK_InterForm(CPDFSDK_Document* pDocument); |  | 
| 258   ~CPDFSDK_InterForm() override; |  | 
| 259 |  | 
| 260   CPDF_InterForm* GetInterForm() const { return m_pInterForm.get(); } |  | 
| 261   CPDFSDK_Document* GetDocument() const { return m_pDocument; } |  | 
| 262 |  | 
| 263   FX_BOOL HighlightWidgets(); |  | 
| 264 |  | 
| 265   CPDFSDK_Widget* GetSibling(CPDFSDK_Widget* pWidget, FX_BOOL bNext) const; |  | 
| 266   CPDFSDK_Widget* GetWidget(CPDF_FormControl* pControl, |  | 
| 267                             bool createIfNeeded) const; |  | 
| 268   void GetWidgets(const CFX_WideString& sFieldName, |  | 
| 269                   std::vector<CPDFSDK_Widget*>* widgets) const; |  | 
| 270   void GetWidgets(CPDF_FormField* pField, |  | 
| 271                   std::vector<CPDFSDK_Widget*>* widgets) const; |  | 
| 272 |  | 
| 273   void AddMap(CPDF_FormControl* pControl, CPDFSDK_Widget* pWidget); |  | 
| 274   void RemoveMap(CPDF_FormControl* pControl); |  | 
| 275 |  | 
| 276   void EnableCalculate(FX_BOOL bEnabled); |  | 
| 277   FX_BOOL IsCalculateEnabled() const; |  | 
| 278 |  | 
| 279 #ifdef PDF_ENABLE_XFA |  | 
| 280   void AddXFAMap(CXFA_FFWidget* hWidget, CPDFSDK_XFAWidget* pWidget); |  | 
| 281   void RemoveXFAMap(CXFA_FFWidget* hWidget); |  | 
| 282   CPDFSDK_XFAWidget* GetXFAWidget(CXFA_FFWidget* hWidget); |  | 
| 283   void XfaEnableCalculate(FX_BOOL bEnabled); |  | 
| 284   FX_BOOL IsXfaCalculateEnabled() const; |  | 
| 285   FX_BOOL IsXfaValidationsEnabled(); |  | 
| 286   void XfaSetValidationsEnabled(FX_BOOL bEnabled); |  | 
| 287 #endif  // PDF_ENABLE_XFA |  | 
| 288 |  | 
| 289   FX_BOOL OnKeyStrokeCommit(CPDF_FormField* pFormField, |  | 
| 290                             const CFX_WideString& csValue); |  | 
| 291   FX_BOOL OnValidate(CPDF_FormField* pFormField, const CFX_WideString& csValue); |  | 
| 292   void OnCalculate(CPDF_FormField* pFormField = nullptr); |  | 
| 293   CFX_WideString OnFormat(CPDF_FormField* pFormField, FX_BOOL& bFormated); |  | 
| 294 |  | 
| 295   void ResetFieldAppearance(CPDF_FormField* pFormField, |  | 
| 296                             const FX_WCHAR* sValue, |  | 
| 297                             FX_BOOL bValueChanged); |  | 
| 298   void UpdateField(CPDF_FormField* pFormField); |  | 
| 299 |  | 
| 300   FX_BOOL DoAction_Hide(const CPDF_Action& action); |  | 
| 301   FX_BOOL DoAction_SubmitForm(const CPDF_Action& action); |  | 
| 302   FX_BOOL DoAction_ResetForm(const CPDF_Action& action); |  | 
| 303   FX_BOOL DoAction_ImportData(const CPDF_Action& action); |  | 
| 304 |  | 
| 305   std::vector<CPDF_FormField*> GetFieldFromObjects( |  | 
| 306       const std::vector<CPDF_Object*>& objects) const; |  | 
| 307   FX_BOOL IsValidField(CPDF_Dictionary* pFieldDict); |  | 
| 308   FX_BOOL SubmitFields(const CFX_WideString& csDestination, |  | 
| 309                        const std::vector<CPDF_FormField*>& fields, |  | 
| 310                        bool bIncludeOrExclude, |  | 
| 311                        bool bUrlEncoded); |  | 
| 312   FX_BOOL SubmitForm(const CFX_WideString& sDestination, FX_BOOL bUrlEncoded); |  | 
| 313   FX_BOOL ExportFormToFDFTextBuf(CFX_ByteTextBuf& textBuf); |  | 
| 314   FX_BOOL ExportFieldsToFDFTextBuf(const std::vector<CPDF_FormField*>& fields, |  | 
| 315                                    bool bIncludeOrExclude, |  | 
| 316                                    CFX_ByteTextBuf& textBuf); |  | 
| 317   CFX_WideString GetTemporaryFileName(const CFX_WideString& sFileExt); |  | 
| 318 |  | 
| 319 #ifdef PDF_ENABLE_XFA |  | 
| 320   void SynchronizeField(CPDF_FormField* pFormField, FX_BOOL bSynchronizeElse); |  | 
| 321 #endif  // PDF_ENABLE_XFA |  | 
| 322 |  | 
| 323  private: |  | 
| 324   // IPDF_FormNotify: |  | 
| 325   int BeforeValueChange(CPDF_FormField* pField, |  | 
| 326                         const CFX_WideString& csValue) override; |  | 
| 327   void AfterValueChange(CPDF_FormField* pField) override; |  | 
| 328   int BeforeSelectionChange(CPDF_FormField* pField, |  | 
| 329                             const CFX_WideString& csValue) override; |  | 
| 330   void AfterSelectionChange(CPDF_FormField* pField) override; |  | 
| 331   void AfterCheckedStatusChange(CPDF_FormField* pField) override; |  | 
| 332   int BeforeFormReset(CPDF_InterForm* pForm) override; |  | 
| 333   void AfterFormReset(CPDF_InterForm* pForm) override; |  | 
| 334   int BeforeFormImportData(CPDF_InterForm* pForm) override; |  | 
| 335   void AfterFormImportData(CPDF_InterForm* pForm) override; |  | 
| 336 |  | 
| 337   FX_BOOL FDFToURLEncodedData(CFX_WideString csFDFFile, |  | 
| 338                               CFX_WideString csTxtFile); |  | 
| 339   FX_BOOL FDFToURLEncodedData(uint8_t*& pBuf, FX_STRSIZE& nBufSize); |  | 
| 340   int GetPageIndexByAnnotDict(CPDF_Document* pDocument, |  | 
| 341                               CPDF_Dictionary* pAnnotDict) const; |  | 
| 342 |  | 
| 343   using CPDFSDK_WidgetMap = std::map<CPDF_FormControl*, CPDFSDK_Widget*>; |  | 
| 344 |  | 
| 345   CPDFSDK_Document* m_pDocument; |  | 
| 346   std::unique_ptr<CPDF_InterForm> m_pInterForm; |  | 
| 347   CPDFSDK_WidgetMap m_Map; |  | 
| 348 #ifdef PDF_ENABLE_XFA |  | 
| 349   std::map<CXFA_FFWidget*, CPDFSDK_XFAWidget*> m_XFAMap; |  | 
| 350   FX_BOOL m_bXfaCalculate; |  | 
| 351   FX_BOOL m_bXfaValidationsEnabled; |  | 
| 352 #endif  // PDF_ENABLE_XFA |  | 
| 353   FX_BOOL m_bCalculate; |  | 
| 354   FX_BOOL m_bBusy; |  | 
| 355 |  | 
| 356  public: |  | 
| 357   FX_BOOL IsNeedHighLight(int nFieldType); |  | 
| 358   void RemoveAllHighLight(); |  | 
| 359   void SetHighlightAlpha(uint8_t alpha) { m_iHighlightAlpha = alpha; } |  | 
| 360   uint8_t GetHighlightAlpha() { return m_iHighlightAlpha; } |  | 
| 361   void SetHighlightColor(FX_COLORREF clr, int nFieldType); |  | 
| 362   FX_COLORREF GetHighlightColor(int nFieldType); |  | 
| 363 |  | 
| 364  private: |  | 
| 365 #ifndef PDF_ENABLE_XFA |  | 
| 366   static const int kNumFieldTypes = 6; |  | 
| 367 #else   // PDF_ENABLE_XFA |  | 
| 368   static const int kNumFieldTypes = 7; |  | 
| 369 #endif  // PDF_ENABLE_XFA |  | 
| 370 |  | 
| 371   FX_COLORREF m_aHighlightColor[kNumFieldTypes]; |  | 
| 372   uint8_t m_iHighlightAlpha; |  | 
| 373   FX_BOOL m_bNeedHightlight[kNumFieldTypes]; |  | 
| 374 }; |  | 
| 375 |  | 
| 376 class CBA_AnnotIterator { |  | 
| 377  public: |  | 
| 378   enum TabOrder { STRUCTURE = 0, ROW, COLUMN }; |  | 
| 379 |  | 
| 380   CBA_AnnotIterator(CPDFSDK_PageView* pPageView, |  | 
| 381                     const CFX_ByteString& sType, |  | 
| 382                     const CFX_ByteString& sSubType); |  | 
| 383   ~CBA_AnnotIterator(); |  | 
| 384 |  | 
| 385   CPDFSDK_Annot* GetFirstAnnot(); |  | 
| 386   CPDFSDK_Annot* GetLastAnnot(); |  | 
| 387   CPDFSDK_Annot* GetNextAnnot(CPDFSDK_Annot* pAnnot); |  | 
| 388   CPDFSDK_Annot* GetPrevAnnot(CPDFSDK_Annot* pAnnot); |  | 
| 389 |  | 
| 390  private: |  | 
| 391   void GenerateResults(); |  | 
| 392   static CFX_FloatRect GetAnnotRect(const CPDFSDK_Annot* pAnnot); |  | 
| 393 |  | 
| 394   // Function signature compatible with std::sort(). |  | 
| 395   static bool CompareByLeftAscending(const CPDFSDK_Annot* p1, |  | 
| 396                                      const CPDFSDK_Annot* p2); |  | 
| 397   static bool CompareByTopDescending(const CPDFSDK_Annot* p1, |  | 
| 398                                      const CPDFSDK_Annot* p2); |  | 
| 399 |  | 
| 400   TabOrder m_eTabOrder; |  | 
| 401   CPDFSDK_PageView* m_pPageView; |  | 
| 402   CFX_ByteString m_sType; |  | 
| 403   CFX_ByteString m_sSubType; |  | 
| 404   std::vector<CPDFSDK_Annot*> m_Annots; |  | 
| 405 }; |  | 
| 406 |  | 
| 407 #endif  // FPDFSDK_INCLUDE_FSDK_BASEFORM_H_ |  | 
| OLD | NEW | 
|---|