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 { 20 int nStart; 21 int nEnd; 22 CFX_WideString sValue; 23 }; 24 25 class CFFL_TextField : public CFFL_FormFiller, public IPWL_FocusHandler, public IPWL_Edit_Notify 26 { 27 public: 28 CFFL_TextField(CPDFDoc_Environment* pApp, CPDFSDK_Annot* pAnnot); 29 virtual ~CFFL_TextField(); 30 31 virtual PWL_CREATEPARAM GetCreateParam(); 32 virtual CPWL_Wnd* NewPDFWindow(const PWL_CREATEPARAM& cp, CPDFSDK_PageView* pPageView); 33 34 35 virtual FX_BOOL OnChar(CPDFSDK_Annot* pAnnot, FX_UINT nChar, FX_UINT nFlags); 36 37 virtual FX_BOOL IsDataChanged(CPDFSDK_PageView* pPageView); 38 virtual void SaveData(CPDFSDK_PageView* pPageView); 39 40 virtual void GetActionData(CPDFSDK_PageView* pPageView, CPDF_AAction::AActionType type, 41 PDFSDK_FieldAction& fa); 42 virtual void SetActionData(CPDFSDK_PageView* pPageView, CPDF_AAction::AActionType type, 43 const PDFSDK_FieldAction& fa); 44 virtual FX_BOOL IsActionDataChanged(CPDF_AAction::AActionType type, const PDFSDK_FieldAction& faOld, 45 const PDFSDK_FieldAction& faNew); 46 virtual void SaveState(CPDFSDK_PageView* pPageView); 47 virtual void RestoreState(CPDFSDK_PageView* pPageView); 48 49 virtual CPWL_Wnd* ResetPDFWindow(CPDFSDK_PageView* pPageView, FX_BOOL bRestoreValue); 50 51 public: 52 virtual void OnSetFocus(CPWL_Wnd* pWnd); 53 virtual void OnKillFocus(CPWL_Wnd* pWnd); 54 55 public: 56 virtual void OnAddUndo(CPWL_Edit* pEdit); 57 58 public: 59 virtual FX_BOOL CanCopy(CPDFSDK_Document* pDocument); 60 virtual FX_BOOL CanCut(CPDFSDK_Document* pDocument); 61 virtual FX_BOOL CanPaste(CPDFSDK_Document* pDocument); 62 63 virtual void DoCopy(CPDFSDK_Document* pDocument); 64 virtual void DoCut(CPDFSDK_Document* pDocument); 65 virtual void DoPaste(CPDFSDK_Document* pDocument); 66 67 private: 68 CBA_FontMap* m_pFontMap; 69 FFL_TextFieldState m_State; 70 71 }; 72 73 #endif // FPDFSDK_INCLUDE_FORMFILLER_FFL_TEXTFIELD_H_ 74