clang-format all pdfium code.
[pdfium.git] / fpdfsdk / include / formfiller / FFL_TextField.h
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   virtual ~CFFL_TextField();
30
31   virtual PWL_CREATEPARAM GetCreateParam();
32   virtual CPWL_Wnd* NewPDFWindow(const PWL_CREATEPARAM& cp,
33                                  CPDFSDK_PageView* pPageView);
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,
41                              CPDF_AAction::AActionType type,
42                              PDFSDK_FieldAction& fa);
43   virtual void SetActionData(CPDFSDK_PageView* pPageView,
44                              CPDF_AAction::AActionType type,
45                              const PDFSDK_FieldAction& fa);
46   virtual FX_BOOL IsActionDataChanged(CPDF_AAction::AActionType type,
47                                       const PDFSDK_FieldAction& faOld,
48                                       const PDFSDK_FieldAction& faNew);
49   virtual void SaveState(CPDFSDK_PageView* pPageView);
50   virtual void RestoreState(CPDFSDK_PageView* pPageView);
51
52   virtual CPWL_Wnd* ResetPDFWindow(CPDFSDK_PageView* pPageView,
53                                    FX_BOOL bRestoreValue);
54
55  public:
56   virtual void OnSetFocus(CPWL_Wnd* pWnd);
57   virtual void OnKillFocus(CPWL_Wnd* pWnd);
58
59  public:
60   virtual void OnAddUndo(CPWL_Edit* pEdit);
61
62  public:
63   virtual FX_BOOL CanCopy(CPDFSDK_Document* pDocument);
64   virtual FX_BOOL CanCut(CPDFSDK_Document* pDocument);
65   virtual FX_BOOL CanPaste(CPDFSDK_Document* pDocument);
66
67  private:
68   CBA_FontMap* m_pFontMap;
69   FFL_TextFieldState m_State;
70 };
71
72 #endif  // FPDFSDK_INCLUDE_FORMFILLER_FFL_TEXTFIELD_H_