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_FXFA_CXFA_FFPUSHBUTTON_H_ 8#define XFA_FXFA_CXFA_FFPUSHBUTTON_H_ 9 10#include <memory> 11 12#include "xfa/fxfa/cxfa_fffield.h" 13 14#define XFA_FWL_PSBSTYLEEXT_HiliteInverted (1L << 0) 15#define XFA_FWL_PSBSTYLEEXT_HilitePush (1L << 1) 16#define XFA_FWL_PSBSTYLEEXT_HiliteOutLine (1L << 2) 17 18class CXFA_TextProvider; 19 20class CXFA_FFPushButton : public CXFA_FFField { 21 public: 22 explicit CXFA_FFPushButton(CXFA_Node* pNode); 23 ~CXFA_FFPushButton() override; 24 25 // CXFA_FFField 26 void RenderWidget(CXFA_Graphics* pGS, 27 const CFX_Matrix& matrix, 28 uint32_t dwStatus) override; 29 bool LoadWidget() override; 30 void UnloadWidget() override; 31 bool PerformLayout() override; 32 void UpdateWidgetProperty() override; 33 void OnProcessMessage(CFWL_Message* pMessage) override; 34 void OnProcessEvent(CFWL_Event* pEvent) override; 35 void OnDrawWidget(CXFA_Graphics* pGraphics, 36 const CFX_Matrix& matrix) override; 37 FormFieldType GetFormFieldType() override; 38 39 private: 40 void LoadHighlightCaption(); 41 void LayoutHighlightCaption(); 42 void RenderHighlightCaption(CXFA_Graphics* pGS, CFX_Matrix* pMatrix); 43 float GetLineWidth(); 44 FX_ARGB GetLineColor(); 45 FX_ARGB GetFillColor(); 46 47 std::unique_ptr<CXFA_TextLayout> m_pRolloverTextLayout; 48 std::unique_ptr<CXFA_TextLayout> m_pDownTextLayout; 49 std::unique_ptr<CXFA_TextProvider> m_pRollProvider; 50 std::unique_ptr<CXFA_TextProvider> m_pDownProvider; 51 IFWL_WidgetDelegate* m_pOldDelegate; 52}; 53 54#endif // XFA_FXFA_CXFA_FFPUSHBUTTON_H_ 55