1ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Copyright 2014 PDFium Authors. All rights reserved.
2ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Use of this source code is governed by a BSD-style license that can be
3ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// found in the LICENSE file.
4ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
5ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
7ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#ifndef _FWL_THEME_H
8ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define _FWL_THEME_H
9ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass IFWL_Widget;
10ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CFWL_ThemePart;
11ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CFWL_ThemeBackground;
12ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CFWL_ThemeText;
13ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CFWL_ThemeElement;
14ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass IFWL_ThemeProvider;
15ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FWL_WGTCAPACITY_CXBorder 1
16ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FWL_WGTCAPACITY_CYBorder 2
17ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FWL_WGTCAPACITY_ScrollBarWidth 3
18ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FWL_WGTCAPACITY_EdgeFlat 4
19ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FWL_WGTCAPACITY_EdgeRaised 5
20ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FWL_WGTCAPACITY_EdgeSunken 6
21ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FWL_WGTCAPACITY_Font 7
22ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FWL_WGTCAPACITY_FontSize 8
23ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FWL_WGTCAPACITY_TextColor 9
24ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FWL_WGTCAPACITY_TextSelColor 10
25ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FWL_WGTCAPACITY_LineHeight 11
26ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FWL_WGTCAPACITY_UIMargin 12
27ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FWL_WGTCAPACITY_SpaceAboveBelow 13
28ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FWL_WGTCAPACITY_MAX 65535
29ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CFWL_ThemePart {
30ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann public:
31ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CFWL_ThemePart()
32ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      : m_pWidget(NULL), m_iPart(0), m_dwStates(0), m_dwData(0), m_pData(NULL) {
33ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    m_rtPart.Reset();
34ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    m_matrix.SetIdentity();
35ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  }
36ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CFX_Matrix m_matrix;
37ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CFX_RectF m_rtPart;
38ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  IFWL_Widget* m_pWidget;
39ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  int32_t m_iPart;
40ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  FX_DWORD m_dwStates;
41ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  FX_DWORD m_dwData;
42ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void* m_pData;
43ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann};
44ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CFWL_ThemeBackground : public CFWL_ThemePart {
45ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann public:
46ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CFWL_ThemeBackground() : m_pGraphics(NULL), m_pImage(NULL), m_pPath(NULL) {}
47ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CFX_Graphics* m_pGraphics;
48ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CFX_DIBitmap* m_pImage;
49ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CFX_Path* m_pPath;
50ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann};
51ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CFWL_ThemeText : public CFWL_ThemePart {
52ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann public:
53ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CFWL_ThemeText() : m_pGraphics(NULL) {}
54ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CFX_WideString m_wsText;
55ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  FX_DWORD m_dwTTOStyles;
56ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  int32_t m_iTTOAlign;
57ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CFX_Graphics* m_pGraphics;
58ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann};
59ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass IFWL_ThemeProvider {
60ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann public:
61ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual ~IFWL_ThemeProvider() {}
62ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual FX_BOOL IsValidWidget(IFWL_Widget* pWidget) = 0;
63ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual FX_DWORD GetThemeID(IFWL_Widget* pWidget) = 0;
64ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual FX_DWORD SetThemeID(IFWL_Widget* pWidget,
65ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                              FX_DWORD dwThemeID,
66ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                              FX_BOOL bChildren = TRUE) = 0;
67ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual FWL_ERR GetThemeMatrix(IFWL_Widget* pWidget, CFX_Matrix& matrix) = 0;
68ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual FWL_ERR SetThemeMatrix(IFWL_Widget* pWidget,
69ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                                 const CFX_Matrix& matrix) = 0;
70ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual FX_BOOL DrawBackground(CFWL_ThemeBackground* pParams) = 0;
71ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual FX_BOOL DrawText(CFWL_ThemeText* pParams) = 0;
72ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual void* GetCapacity(CFWL_ThemePart* pThemePart,
73ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                            FX_DWORD dwCapacity) = 0;
74ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual FX_BOOL IsCustomizedLayout(IFWL_Widget* pWidget) = 0;
75ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual FWL_ERR GetPartRect(CFWL_ThemePart* pThemePart,
76ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                              CFX_RectF& rtPart) = 0;
77ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual FX_BOOL IsInPart(CFWL_ThemePart* pThemePart,
78ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                           FX_FLOAT fx,
79ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                           FX_FLOAT fy) = 0;
80ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual FX_BOOL CalcTextRect(CFWL_ThemeText* pParams, CFX_RectF& rect) = 0;
81ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann};
82ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif
83