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_THEME_CFWL_CHECKBOXTP_H_ 8 #define XFA_FWL_THEME_CFWL_CHECKBOXTP_H_ 9 10 #include <memory> 11 12 #include "xfa/fwl/theme/cfwl_utils.h" 13 #include "xfa/fwl/theme/cfwl_widgettp.h" 14 15 class CFWL_CheckBoxTP : public CFWL_WidgetTP { 16 public: 17 CFWL_CheckBoxTP(); 18 ~CFWL_CheckBoxTP() override; 19 20 // CFWL_WidgeTP 21 void Initialize() override; 22 void Finalize() override; 23 void DrawText(CFWL_ThemeText* pParams) override; 24 void DrawBackground(CFWL_ThemeBackground* pParams) override; 25 26 protected: 27 struct CKBThemeData { 28 FX_ARGB clrBoxBk[13][2]; 29 FX_ARGB clrSignBorderNormal; 30 FX_ARGB clrSignBorderDisable; 31 FX_ARGB clrSignCheck; 32 FX_ARGB clrSignNeutral; 33 FX_ARGB clrSignNeutralNormal; 34 FX_ARGB clrSignNeutralHover; 35 FX_ARGB clrSignNeutralPressed; 36 }; 37 38 void DrawCheckSign(CFWL_Widget* pWidget, 39 CFX_Graphics* pGraphics, 40 const CFX_RectF& pRtBox, 41 int32_t iState, 42 CFX_Matrix* pMatrix); 43 void DrawSignCheck(CFX_Graphics* pGraphics, 44 const CFX_RectF* pRtSign, 45 FX_ARGB argbFill, 46 CFX_Matrix* pMatrix); 47 void DrawSignCircle(CFX_Graphics* pGraphics, 48 const CFX_RectF* pRtSign, 49 FX_ARGB argbFill, 50 CFX_Matrix* pMatrix); 51 void DrawSignCross(CFX_Graphics* pGraphics, 52 const CFX_RectF* pRtSign, 53 FX_ARGB argbFill, 54 CFX_Matrix* pMatrix); 55 void DrawSignDiamond(CFX_Graphics* pGraphics, 56 const CFX_RectF* pRtSign, 57 FX_ARGB argbFill, 58 CFX_Matrix* pMatrix); 59 void DrawSignSquare(CFX_Graphics* pGraphics, 60 const CFX_RectF* pRtSign, 61 FX_ARGB argbFill, 62 CFX_Matrix* pMatrix); 63 void DrawSignStar(CFX_Graphics* pGraphics, 64 const CFX_RectF* pRtSign, 65 FX_ARGB argbFill, 66 CFX_Matrix* pMatrix); 67 68 void InitCheckPath(FX_FLOAT fCheckLen); 69 70 std::unique_ptr<CKBThemeData> m_pThemeData; 71 std::unique_ptr<CFX_Path> m_pCheckPath; 72 73 private: 74 void SetThemeData(); 75 }; 76 77 #endif // XFA_FWL_THEME_CFWL_CHECKBOXTP_H_ 78