• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 The PDFium Authors
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 XFA_FXFA_CXFA_FFWIDGETHANDLER_H_
8 #define XFA_FXFA_CXFA_FFWIDGETHANDLER_H_
9 
10 #include "core/fxcrt/fx_coordinates.h"
11 #include "core/fxcrt/mask.h"
12 #include "fxjs/gc/heap.h"
13 #include "v8/include/cppgc/garbage-collected.h"
14 #include "v8/include/cppgc/member.h"
15 #include "v8/include/cppgc/visitor.h"
16 #include "xfa/fwl/cfwl_message.h"
17 #include "xfa/fwl/fwl_widgetdef.h"
18 #include "xfa/fxfa/cxfa_eventparam.h"
19 #include "xfa/fxfa/parser/cxfa_document.h"
20 
21 class CFGAS_GEGraphics;
22 class CXFA_FFDocView;
23 class CXFA_FFWidget;
24 
25 namespace pdfium {
26 enum class FWL_WidgetHit;
27 }  // namespace pdfium
28 
29 class CXFA_FFWidgetHandler final
30     : public cppgc::GarbageCollected<CXFA_FFWidgetHandler> {
31  public:
32   CONSTRUCT_VIA_MAKE_GARBAGE_COLLECTED;
33   ~CXFA_FFWidgetHandler();
34 
35   void Trace(cppgc::Visitor* visitor) const;
36 
37   bool OnMouseEnter(CXFA_FFWidget* hWidget);
38   bool OnMouseExit(CXFA_FFWidget* hWidget);
39   bool OnLButtonDown(CXFA_FFWidget* hWidget,
40                      Mask<XFA_FWL_KeyFlag> dwFlags,
41                      const CFX_PointF& point);
42   bool OnLButtonUp(CXFA_FFWidget* hWidget,
43                    Mask<XFA_FWL_KeyFlag> dwFlags,
44                    const CFX_PointF& point);
45   bool OnLButtonDblClk(CXFA_FFWidget* hWidget,
46                        Mask<XFA_FWL_KeyFlag> dwFlags,
47                        const CFX_PointF& point);
48   bool OnMouseMove(CXFA_FFWidget* hWidget,
49                    Mask<XFA_FWL_KeyFlag> dwFlags,
50                    const CFX_PointF& point);
51   bool OnMouseWheel(CXFA_FFWidget* hWidget,
52                     Mask<XFA_FWL_KeyFlag> dwFlags,
53                     const CFX_PointF& point,
54                     const CFX_Vector& delta);
55   bool OnRButtonDown(CXFA_FFWidget* hWidget,
56                      Mask<XFA_FWL_KeyFlag> dwFlags,
57                      const CFX_PointF& point);
58   bool OnRButtonUp(CXFA_FFWidget* hWidget,
59                    Mask<XFA_FWL_KeyFlag> dwFlags,
60                    const CFX_PointF& point);
61   bool OnRButtonDblClk(CXFA_FFWidget* hWidget,
62                        Mask<XFA_FWL_KeyFlag> dwFlags,
63                        const CFX_PointF& point);
64 
65   WideString GetText(CXFA_FFWidget* widget);
66   WideString GetSelectedText(CXFA_FFWidget* widget);
67   void PasteText(CXFA_FFWidget* widget, const WideString& text);
68   bool SelectAllText(CXFA_FFWidget* widget);
69 
70   bool CanUndo(CXFA_FFWidget* widget);
71   bool CanRedo(CXFA_FFWidget* widget);
72   bool Undo(CXFA_FFWidget* widget);
73   bool Redo(CXFA_FFWidget* widget);
74 
75   bool OnKeyDown(CXFA_FFWidget* hWidget,
76                  XFA_FWL_VKEYCODE dwKeyCode,
77                  Mask<XFA_FWL_KeyFlag> dwFlags);
78   bool OnChar(CXFA_FFWidget* hWidget,
79               uint32_t dwChar,
80               Mask<XFA_FWL_KeyFlag> dwFlags);
81   pdfium::FWL_WidgetHit HitTest(CXFA_FFWidget* pWidget,
82                                 const CFX_PointF& point);
83   void RenderWidget(CXFA_FFWidget* hWidget,
84                     CFGAS_GEGraphics* pGS,
85                     const CFX_Matrix& matrix,
86                     bool bHighlight);
87   bool HasEvent(CXFA_Node* pNode, XFA_EVENTTYPE eEventType);
88   XFA_EventError ProcessEvent(CXFA_Node* pNode, CXFA_EventParam* pParam);
89 
90  private:
91   explicit CXFA_FFWidgetHandler(CXFA_FFDocView* pDocView);
92 
93   cppgc::Member<CXFA_FFDocView> m_pDocView;
94 };
95 
96 #endif  //  XFA_FXFA_CXFA_FFWIDGETHANDLER_H_
97