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_FORMFILLER_FFL_TEXTFIELD_H_ 8 #define FPDFSDK_INCLUDE_FORMFILLER_FFL_TEXTFIELD_H_ 9 10 #include "FFL_FormFiller.h" 11 12 #define BF_ALIGN_LEFT 0 13 #define BF_ALIGN_MIDDLE 1 14 #define BF_ALIGN_RIGHT 2 15 16 class CBA_FontMap; 17 18 struct FFL_TextFieldState { 19 int nStart; 20 int nEnd; 21 CFX_WideString sValue; 22 }; 23 24 class CFFL_TextField : public CFFL_FormFiller, 25 public IPWL_FocusHandler, 26 public IPWL_Edit_Notify { 27 public: 28 CFFL_TextField(CPDFDoc_Environment* pApp, CPDFSDK_Annot* pAnnot); 29 ~CFFL_TextField() override; 30 31 // CFFL_FormFiller: 32 PWL_CREATEPARAM GetCreateParam() override; 33 CPWL_Wnd* NewPDFWindow(const PWL_CREATEPARAM& cp, 34 CPDFSDK_PageView* pPageView) override; 35 FX_BOOL OnChar(CPDFSDK_Annot* pAnnot, FX_UINT nChar, FX_UINT nFlags) override; 36 FX_BOOL IsDataChanged(CPDFSDK_PageView* pPageView) override; 37 void SaveData(CPDFSDK_PageView* pPageView) override; 38 void GetActionData(CPDFSDK_PageView* pPageView, 39 CPDF_AAction::AActionType type, 40 PDFSDK_FieldAction& fa) override; 41 void SetActionData(CPDFSDK_PageView* pPageView, 42 CPDF_AAction::AActionType type, 43 const PDFSDK_FieldAction& fa) override; 44 FX_BOOL IsActionDataChanged(CPDF_AAction::AActionType type, 45 const PDFSDK_FieldAction& faOld, 46 const PDFSDK_FieldAction& faNew) override; 47 void SaveState(CPDFSDK_PageView* pPageView) override; 48 void RestoreState(CPDFSDK_PageView* pPageView) override; 49 CPWL_Wnd* ResetPDFWindow(CPDFSDK_PageView* pPageView, 50 FX_BOOL bRestoreValue) override; 51 52 // IPWL_FocusHandler: 53 void OnSetFocus(CPWL_Wnd* pWnd) override; 54 void OnKillFocus(CPWL_Wnd* pWnd) override; 55 56 // IPWL_Edit_Notify: 57 void OnAddUndo(CPWL_Edit* pEdit) override; 58 59 #ifdef PDF_ENABLE_XFA 60 // CFFL_FormFiller: 61 FX_BOOL IsFieldFull(CPDFSDK_PageView* pPageView) override; 62 #endif // PDF_ENABLE_XFA 63 64 private: 65 CBA_FontMap* m_pFontMap; 66 FFL_TextFieldState m_State; 67 }; 68 69 #endif // FPDFSDK_INCLUDE_FORMFILLER_FFL_TEXTFIELD_H_ 70