OLD | NEW |
| (Empty) |
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_INCLUDE_FWL_THEME_WIDGETTP_H_ | |
8 #define XFA_INCLUDE_FWL_THEME_WIDGETTP_H_ | |
9 | |
10 #include <memory> | |
11 #include <vector> | |
12 | |
13 #include "core/fxcrt/include/fx_coordinates.h" | |
14 #include "core/fxcrt/include/fx_system.h" | |
15 #include "xfa/fwl/core/fwl_error.h" | |
16 #include "xfa/fxgraphics/include/cfx_graphics.h" | |
17 #include "xfa/include/fwl/theme/utils.h" | |
18 | |
19 class IFWL_Widget; | |
20 class IFDE_TextOut; | |
21 class IFX_Font; | |
22 class IFX_FontMgr; | |
23 class CFWL_ArrowData; | |
24 class CFWL_ThemeBackground; | |
25 class CFWL_ThemePart; | |
26 class CFWL_ThemeText; | |
27 | |
28 #if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_ | |
29 class IFX_FontSourceEnum; | |
30 #endif | |
31 | |
32 class CFWL_WidgetTP { | |
33 public: | |
34 virtual FX_BOOL IsValidWidget(IFWL_Widget* pWidget); | |
35 virtual uint32_t GetThemeID(IFWL_Widget* pWidget); | |
36 virtual uint32_t SetThemeID(IFWL_Widget* pWidget, | |
37 uint32_t dwThemeID, | |
38 FX_BOOL bChildren = TRUE); | |
39 virtual FWL_ERR GetThemeMatrix(IFWL_Widget* pWidget, CFX_Matrix& matrix); | |
40 virtual FWL_ERR SetThemeMatrix(IFWL_Widget* pWidget, | |
41 const CFX_Matrix& matrix); | |
42 virtual FX_BOOL DrawBackground(CFWL_ThemeBackground* pParams); | |
43 virtual FX_BOOL DrawText(CFWL_ThemeText* pParams); | |
44 virtual void* GetCapacity(CFWL_ThemePart* pThemePart, uint32_t dwCapacity); | |
45 virtual FX_BOOL IsCustomizedLayout(IFWL_Widget* pWidget); | |
46 virtual FWL_ERR GetPartRect(CFWL_ThemePart* pThemePart, CFX_RectF& rtPart); | |
47 virtual FX_BOOL IsInPart(CFWL_ThemePart* pThemePart, | |
48 FX_FLOAT fx, | |
49 FX_FLOAT fy); | |
50 virtual FX_BOOL CalcTextRect(CFWL_ThemeText* pParams, CFX_RectF& rect); | |
51 virtual FWL_ERR Initialize(); | |
52 virtual FWL_ERR Finalize(); | |
53 virtual ~CFWL_WidgetTP(); | |
54 FWL_ERR SetFont(IFWL_Widget* pWidget, | |
55 const FX_WCHAR* strFont, | |
56 FX_FLOAT fFontSize, | |
57 FX_ARGB rgbFont); | |
58 FWL_ERR SetFont(IFWL_Widget* pWidget, | |
59 IFX_Font* pFont, | |
60 FX_FLOAT fFontSize, | |
61 FX_ARGB rgbFont); | |
62 IFX_Font* GetFont(IFWL_Widget* pWidget); | |
63 | |
64 protected: | |
65 CFWL_WidgetTP(); | |
66 FX_ERR InitTTO(); | |
67 FX_ERR FinalizeTTO(); | |
68 void DrawEdge(CFX_Graphics* pGraphics, | |
69 uint32_t dwStyles, | |
70 const CFX_RectF* pRect, | |
71 CFX_Matrix* pMatrix = NULL); | |
72 void Draw3DRect(CFX_Graphics* pGraphics, | |
73 FWLTHEME_EDGE eType, | |
74 FX_FLOAT fWidth, | |
75 const CFX_RectF* pRect, | |
76 FX_ARGB cr1, | |
77 FX_ARGB cr2, | |
78 FX_ARGB cr3, | |
79 FX_ARGB cr4, | |
80 CFX_Matrix* pMatrix = NULL); | |
81 void Draw3DCircle(CFX_Graphics* pGraphics, | |
82 FWLTHEME_EDGE eType, | |
83 FX_FLOAT fWidth, | |
84 const CFX_RectF* pRect, | |
85 FX_ARGB cr1, | |
86 FX_ARGB cr2, | |
87 FX_ARGB cr3, | |
88 FX_ARGB cr4, | |
89 CFX_Matrix* pMatrix = NULL); | |
90 void DrawBorder(CFX_Graphics* pGraphics, | |
91 const CFX_RectF* pRect, | |
92 CFX_Matrix* pMatrix = NULL); | |
93 void FillBackground(CFX_Graphics* pGraphics, | |
94 const CFX_RectF* pRect, | |
95 CFX_Matrix* pMatrix = NULL); | |
96 void FillSoildRect(CFX_Graphics* pGraphics, | |
97 FX_ARGB fillColor, | |
98 const CFX_RectF* pRect, | |
99 CFX_Matrix* pMatrix = NULL); | |
100 void DrawAxialShading(CFX_Graphics* pGraphics, | |
101 FX_FLOAT fx1, | |
102 FX_FLOAT fy1, | |
103 FX_FLOAT fx2, | |
104 FX_FLOAT fy2, | |
105 FX_ARGB beginColor, | |
106 FX_ARGB endColor, | |
107 CFX_Path* path, | |
108 int32_t fillMode = FXFILL_WINDING, | |
109 CFX_Matrix* pMatrix = NULL); | |
110 void DrawAnnulusRect(CFX_Graphics* pGraphics, | |
111 FX_ARGB fillColor, | |
112 const CFX_RectF* pRect, | |
113 FX_FLOAT fRingWidth = 1, | |
114 CFX_Matrix* pMatrix = NULL); | |
115 void DrawAnnulusCircle(CFX_Graphics* pGraphics, | |
116 FX_ARGB fillColor, | |
117 const CFX_RectF* pRect, | |
118 FX_FLOAT fWidth = 1, | |
119 CFX_Matrix* pMatrix = NULL); | |
120 void DrawFocus(CFX_Graphics* pGraphics, | |
121 const CFX_RectF* pRect, | |
122 CFX_Matrix* pMatrix = NULL); | |
123 void DrawArrow(CFX_Graphics* pGraphics, | |
124 const CFX_RectF* pRect, | |
125 FWLTHEME_DIRECTION eDict, | |
126 FX_ARGB argbFill, | |
127 FX_BOOL bPressed, | |
128 CFX_Matrix* pMatrix = NULL); | |
129 void DrawArrow(CFX_Graphics* pGraphics, | |
130 const CFX_RectF* pRect, | |
131 FWLTHEME_DIRECTION eDict, | |
132 FX_ARGB argSign, | |
133 CFX_Matrix* pMatrix = NULL); | |
134 void DrawBtn(CFX_Graphics* pGraphics, | |
135 const CFX_RectF* pRect, | |
136 FWLTHEME_STATE eState, | |
137 CFX_Matrix* pMatrix = NULL); | |
138 void DrawArrowBtn(CFX_Graphics* pGraphics, | |
139 const CFX_RectF* pRect, | |
140 FWLTHEME_DIRECTION eDict, | |
141 FWLTHEME_STATE eState, | |
142 CFX_Matrix* pMatrix = NULL); | |
143 FWLCOLOR BlendColor(FWLCOLOR srcColor, FWLCOLOR renderColor, uint8_t scale); | |
144 uint32_t m_dwRefCount; | |
145 IFDE_TextOut* m_pTextOut; | |
146 IFX_Font* m_pFDEFont; | |
147 FX_FLOAT m_fValue; | |
148 uint32_t m_dwValue; | |
149 CFX_RectF m_rtMargin; | |
150 uint32_t m_dwThemeID; | |
151 CFX_Matrix _ctm; | |
152 }; | |
153 FX_BOOL FWLTHEME_Init(); | |
154 void FWLTHEME_Release(); | |
155 uint32_t FWL_GetThemeLayout(uint32_t dwThemeID); | |
156 uint32_t FWL_GetThemeColor(uint32_t dwThemeID); | |
157 uint32_t FWL_MakeThemeID(uint32_t dwLayout, uint32_t dwColor); | |
158 | |
159 class CFWL_ArrowData { | |
160 public: | |
161 static CFWL_ArrowData* GetInstance(); | |
162 static FX_BOOL IsInstance(); | |
163 static void DestroyInstance(); | |
164 virtual ~CFWL_ArrowData(); | |
165 void SetColorData(uint32_t dwID); | |
166 | |
167 class CColorData { | |
168 public: | |
169 FX_ARGB clrBorder[4]; | |
170 FX_ARGB clrStart[4]; | |
171 FX_ARGB clrEnd[4]; | |
172 FX_ARGB clrSign[4]; | |
173 } * m_pColorData; | |
174 | |
175 protected: | |
176 CFWL_ArrowData(); | |
177 static CFWL_ArrowData* m_pInstance; | |
178 }; | |
179 | |
180 class CFWL_FontData { | |
181 public: | |
182 CFWL_FontData(); | |
183 virtual ~CFWL_FontData(); | |
184 FX_BOOL Equal(const CFX_WideStringC& wsFontFamily, | |
185 uint32_t dwFontStyles, | |
186 uint16_t wCodePage); | |
187 FX_BOOL LoadFont(const CFX_WideStringC& wsFontFamily, | |
188 uint32_t dwFontStyles, | |
189 uint16_t wCodePage); | |
190 IFX_Font* GetFont() const { return m_pFont; } | |
191 | |
192 protected: | |
193 CFX_WideString m_wsFamily; | |
194 uint32_t m_dwStyles; | |
195 uint32_t m_dwCodePage; | |
196 IFX_Font* m_pFont; | |
197 IFX_FontMgr* m_pFontMgr; | |
198 #if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_ | |
199 IFX_FontSourceEnum* m_pFontSource; | |
200 #endif | |
201 }; | |
202 | |
203 class CFWL_FontManager { | |
204 public: | |
205 static CFWL_FontManager* GetInstance(); | |
206 static void DestroyInstance(); | |
207 | |
208 IFX_Font* FindFont(const CFX_WideStringC& wsFontFamily, | |
209 uint32_t dwFontStyles, | |
210 uint16_t dwCodePage); | |
211 | |
212 protected: | |
213 CFWL_FontManager(); | |
214 virtual ~CFWL_FontManager(); | |
215 | |
216 static CFWL_FontManager* s_FontManager; | |
217 std::vector<std::unique_ptr<CFWL_FontData>> m_FontsArray; | |
218 }; | |
219 | |
220 #endif // XFA_INCLUDE_FWL_THEME_WIDGETTP_H_ | |
OLD | NEW |