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 _FWL_THEME_LIGHT_H
8 #define _FWL_THEME_LIGHT_H
9 
10 #include "xfa/include/fwl/core/fwl_theme.h"
11 
12 class CFWL_WidgetTP;
13 class IFWL_Widget;
14 
15 class CFWL_Theme : public IFWL_ThemeProvider {
16  public:
17   CFWL_Theme();
18   ~CFWL_Theme() override;
19 
20   // IFWL_ThemeProvider:
21   FX_BOOL IsValidWidget(IFWL_Widget* pWidget) override;
22   FX_DWORD GetThemeID(IFWL_Widget* pWidget) override;
23   FX_DWORD SetThemeID(IFWL_Widget* pWidget,
24                       FX_DWORD dwThemeID,
25                       FX_BOOL bChildren = TRUE) override;
26   FWL_ERR GetThemeMatrix(IFWL_Widget* pWidget, CFX_Matrix& matrix) override;
27   FWL_ERR SetThemeMatrix(IFWL_Widget* pWidget,
28                          const CFX_Matrix& matrix) override;
29   FX_BOOL DrawBackground(CFWL_ThemeBackground* pParams) override;
30   FX_BOOL DrawText(CFWL_ThemeText* pParams) override;
31   void* GetCapacity(CFWL_ThemePart* pThemePart, FX_DWORD dwCapacity) override;
32   FX_BOOL IsCustomizedLayout(IFWL_Widget* pWidget) override;
33   FWL_ERR GetPartRect(CFWL_ThemePart* pThemePart, CFX_RectF& rtPart) override;
34   FX_BOOL IsInPart(CFWL_ThemePart* pThemePart,
35                    FX_FLOAT fx,
36                    FX_FLOAT fy) override;
37   FX_BOOL CalcTextRect(CFWL_ThemeText* pParams, CFX_RectF& rect) override;
38 
39   FWL_ERR Initialize();
40   FWL_ERR Finalize();
41   FWL_ERR SetFont(IFWL_Widget* pWidget,
42                   const FX_WCHAR* strFont,
43                   FX_FLOAT fFontSize,
44                   FX_ARGB rgbFont);
45   CFWL_WidgetTP* GetTheme(IFWL_Widget* pWidget);
46 
47  protected:
48   CFX_PtrArray m_arrThemes;
49 };
50 #endif
51