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 _FXFA_FORMFILLER_PUSHBUTTON_IMP_H
8#define _FXFA_FORMFILLER_PUSHBUTTON_IMP_H
9#define XFA_FWL_PSBSTYLEEXT_HiliteNone (0L << 0)
10#define XFA_FWL_PSBSTYLEEXT_HiliteInverted (1L << 0)
11#define XFA_FWL_PSBSTYLEEXT_HilitePush (2L << 0)
12#define XFA_FWL_PSBSTYLEEXT_HiliteOutLine (4L << 0)
13class CXFA_FFPushButton : public CXFA_FFField {
14 public:
15  CXFA_FFPushButton(CXFA_FFPageView* pPageView, CXFA_WidgetAcc* pDataAcc);
16  virtual ~CXFA_FFPushButton();
17  virtual void RenderWidget(CFX_Graphics* pGS,
18                            CFX_Matrix* pMatrix = NULL,
19                            FX_DWORD dwStatus = 0,
20                            int32_t iRotate = 0);
21  virtual FX_BOOL LoadWidget();
22  virtual void UnloadWidget();
23  virtual FX_BOOL PerformLayout();
24  virtual void UpdateWidgetProperty();
25  virtual int32_t OnProcessMessage(CFWL_Message* pMessage);
26  virtual FWL_ERR OnProcessEvent(CFWL_Event* pEvent);
27  virtual FWL_ERR OnDrawWidget(CFX_Graphics* pGraphics,
28                               const CFX_Matrix* pMatrix = NULL);
29
30 protected:
31  void LoadHighlightCaption();
32  void LayoutHighlightCaption();
33  void RenderHighlightCaption(CFX_Graphics* pGS, CFX_Matrix* pMatrix = NULL);
34  FX_FLOAT GetLineWidth();
35  FX_ARGB GetLineColor();
36  FX_ARGB GetFillColor();
37  CXFA_TextLayout* m_pRolloverTextLayout;
38  CXFA_TextLayout* m_pDownTextLayout;
39  CXFA_TextProvider* m_pDownProvider;
40  CXFA_TextProvider* m_pRollProvider;
41  IFWL_WidgetDelegate* m_pOldDelegate;
42};
43#endif
44