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 XFA_FWL_CFWL_PUSHBUTTON_H_ 8 #define XFA_FWL_CFWL_PUSHBUTTON_H_ 9 10 #include <memory> 11 12 #include "xfa/fwl/cfwl_widget.h" 13 #include "xfa/fwl/cfwl_widgetproperties.h" 14 15 #define FWL_STATE_PSB_Hovered (1 << FWL_WGTSTATE_MAX) 16 #define FWL_STATE_PSB_Pressed (1 << (FWL_WGTSTATE_MAX + 1)) 17 18 class CFWL_MessageMouse; 19 class CFX_DIBitmap; 20 class CFWL_Widget; 21 22 class CFWL_PushButton : public CFWL_Widget { 23 public: 24 explicit CFWL_PushButton(const CFWL_App*); 25 ~CFWL_PushButton() override; 26 27 // CFWL_Widget 28 FWL_Type GetClassID() const override; 29 void SetStates(uint32_t dwStates) override; 30 void Update() override; 31 void DrawWidget(CXFA_Graphics* pGraphics, const CFX_Matrix& matrix) override; 32 void OnProcessMessage(CFWL_Message* pMessage) override; 33 void OnDrawWidget(CXFA_Graphics* pGraphics, 34 const CFX_Matrix& matrix) override; 35 36 private: 37 void DrawBkground(CXFA_Graphics* pGraphics, 38 IFWL_ThemeProvider* pTheme, 39 const CFX_Matrix* pMatrix); 40 uint32_t GetPartStates(); 41 void UpdateTextOutStyles(); 42 void OnFocusChanged(CFWL_Message* pMsg, bool bSet); 43 void OnLButtonDown(CFWL_MessageMouse* pMsg); 44 void OnLButtonUp(CFWL_MessageMouse* pMsg); 45 void OnMouseMove(CFWL_MessageMouse* pMsg); 46 void OnMouseLeave(CFWL_MessageMouse* pMsg); 47 void OnKeyDown(CFWL_MessageKey* pMsg); 48 49 CFX_RectF m_rtClient; 50 CFX_RectF m_rtCaption; 51 bool m_bBtnDown; 52 }; 53 54 #endif // XFA_FWL_CFWL_PUSHBUTTON_H_ 55