1*3ac0a46fSAndroid Build Coastguard Worker // Copyright 2014 The PDFium Authors 2*3ac0a46fSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*3ac0a46fSAndroid Build Coastguard Worker // found in the LICENSE file. 4*3ac0a46fSAndroid Build Coastguard Worker 5*3ac0a46fSAndroid Build Coastguard Worker // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6*3ac0a46fSAndroid Build Coastguard Worker 7*3ac0a46fSAndroid Build Coastguard Worker #ifndef XFA_FWL_THEME_CFWL_WIDGETTP_H_ 8*3ac0a46fSAndroid Build Coastguard Worker #define XFA_FWL_THEME_CFWL_WIDGETTP_H_ 9*3ac0a46fSAndroid Build Coastguard Worker 10*3ac0a46fSAndroid Build Coastguard Worker #include <memory> 11*3ac0a46fSAndroid Build Coastguard Worker 12*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/fx_coordinates.h" 13*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/fx_system.h" 14*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/retain_ptr.h" 15*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxge/dib/fx_dib.h" 16*3ac0a46fSAndroid Build Coastguard Worker #include "v8/include/cppgc/garbage-collected.h" 17*3ac0a46fSAndroid Build Coastguard Worker #include "xfa/fwl/theme/cfwl_utils.h" 18*3ac0a46fSAndroid Build Coastguard Worker 19*3ac0a46fSAndroid Build Coastguard Worker class CFDE_TextOut; 20*3ac0a46fSAndroid Build Coastguard Worker class CFGAS_GEGraphics; 21*3ac0a46fSAndroid Build Coastguard Worker class CFWL_ThemeBackground; 22*3ac0a46fSAndroid Build Coastguard Worker class CFWL_ThemeText; 23*3ac0a46fSAndroid Build Coastguard Worker class IFWL_ThemeProvider; 24*3ac0a46fSAndroid Build Coastguard Worker 25*3ac0a46fSAndroid Build Coastguard Worker class CFWL_WidgetTP : public cppgc::GarbageCollected<CFWL_WidgetTP> { 26*3ac0a46fSAndroid Build Coastguard Worker public: 27*3ac0a46fSAndroid Build Coastguard Worker virtual ~CFWL_WidgetTP(); 28*3ac0a46fSAndroid Build Coastguard Worker 29*3ac0a46fSAndroid Build Coastguard Worker virtual void DrawBackground(const CFWL_ThemeBackground& pParams); 30*3ac0a46fSAndroid Build Coastguard Worker virtual void DrawText(const CFWL_ThemeText& pParams); 31*3ac0a46fSAndroid Build Coastguard Worker 32*3ac0a46fSAndroid Build Coastguard Worker // Non-virtual, nothing to trace in subclasses at present. 33*3ac0a46fSAndroid Build Coastguard Worker void Trace(cppgc::Visitor* visitor) const; 34*3ac0a46fSAndroid Build Coastguard Worker 35*3ac0a46fSAndroid Build Coastguard Worker protected: 36*3ac0a46fSAndroid Build Coastguard Worker struct CColorData { 37*3ac0a46fSAndroid Build Coastguard Worker FX_ARGB clrBorder[4]; // Indexed by enum FWLTHEME_STATE - 1. 38*3ac0a46fSAndroid Build Coastguard Worker FX_ARGB clrStart[4]; // Indexed by enum FWLTHEME_STATE - 1. 39*3ac0a46fSAndroid Build Coastguard Worker FX_ARGB clrEnd[4]; // Indexed by enum FWLTHEME_STATE - 1. 40*3ac0a46fSAndroid Build Coastguard Worker FX_ARGB clrSign[4]; // Indexed by enum FWLTHEME_STATE - 1. 41*3ac0a46fSAndroid Build Coastguard Worker }; 42*3ac0a46fSAndroid Build Coastguard Worker 43*3ac0a46fSAndroid Build Coastguard Worker CFWL_WidgetTP(); 44*3ac0a46fSAndroid Build Coastguard Worker 45*3ac0a46fSAndroid Build Coastguard Worker void InitializeArrowColorData(); 46*3ac0a46fSAndroid Build Coastguard Worker void EnsureTTOInitialized(IFWL_ThemeProvider* pProvider); 47*3ac0a46fSAndroid Build Coastguard Worker 48*3ac0a46fSAndroid Build Coastguard Worker void DrawBorder(CFGAS_GEGraphics* pGraphics, 49*3ac0a46fSAndroid Build Coastguard Worker const CFX_RectF& rect, 50*3ac0a46fSAndroid Build Coastguard Worker const CFX_Matrix& matrix); 51*3ac0a46fSAndroid Build Coastguard Worker void FillBackground(CFGAS_GEGraphics* pGraphics, 52*3ac0a46fSAndroid Build Coastguard Worker const CFX_RectF& rect, 53*3ac0a46fSAndroid Build Coastguard Worker const CFX_Matrix& matrix); 54*3ac0a46fSAndroid Build Coastguard Worker void FillSolidRect(CFGAS_GEGraphics* pGraphics, 55*3ac0a46fSAndroid Build Coastguard Worker FX_ARGB fillColor, 56*3ac0a46fSAndroid Build Coastguard Worker const CFX_RectF& rect, 57*3ac0a46fSAndroid Build Coastguard Worker const CFX_Matrix& matrix); 58*3ac0a46fSAndroid Build Coastguard Worker void DrawFocus(CFGAS_GEGraphics* pGraphics, 59*3ac0a46fSAndroid Build Coastguard Worker const CFX_RectF& rect, 60*3ac0a46fSAndroid Build Coastguard Worker const CFX_Matrix& matrix); 61*3ac0a46fSAndroid Build Coastguard Worker void DrawArrow(CFGAS_GEGraphics* pGraphics, 62*3ac0a46fSAndroid Build Coastguard Worker const CFX_RectF& rect, 63*3ac0a46fSAndroid Build Coastguard Worker FWLTHEME_DIRECTION eDict, 64*3ac0a46fSAndroid Build Coastguard Worker FX_ARGB argSign, 65*3ac0a46fSAndroid Build Coastguard Worker const CFX_Matrix& matrix); 66*3ac0a46fSAndroid Build Coastguard Worker void DrawBtn(CFGAS_GEGraphics* pGraphics, 67*3ac0a46fSAndroid Build Coastguard Worker const CFX_RectF& rect, 68*3ac0a46fSAndroid Build Coastguard Worker FWLTHEME_STATE eState, 69*3ac0a46fSAndroid Build Coastguard Worker const CFX_Matrix& matrix); 70*3ac0a46fSAndroid Build Coastguard Worker void DrawArrowBtn(CFGAS_GEGraphics* pGraphics, 71*3ac0a46fSAndroid Build Coastguard Worker const CFX_RectF& rect, 72*3ac0a46fSAndroid Build Coastguard Worker FWLTHEME_DIRECTION eDict, 73*3ac0a46fSAndroid Build Coastguard Worker FWLTHEME_STATE eState, 74*3ac0a46fSAndroid Build Coastguard Worker const CFX_Matrix& matrix); 75*3ac0a46fSAndroid Build Coastguard Worker 76*3ac0a46fSAndroid Build Coastguard Worker std::unique_ptr<CFDE_TextOut> m_pTextOut; 77*3ac0a46fSAndroid Build Coastguard Worker std::unique_ptr<CColorData> m_pColorData; 78*3ac0a46fSAndroid Build Coastguard Worker }; 79*3ac0a46fSAndroid Build Coastguard Worker 80*3ac0a46fSAndroid Build Coastguard Worker #endif // XFA_FWL_THEME_CFWL_WIDGETTP_H_ 81