Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(743)

Side by Side Diff: xfa/fwl/theme/formtp.cpp

Issue 1834323003: Move xfa/include/fwl/{theme,lightwidget} to xfa/fwl (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(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 #include "xfa/include/fwl/theme/formtp.h"
8
9 #include "xfa/fde/tto/fde_textout.h"
10 #include "xfa/fwl/core/cfwl_themebackground.h"
11 #include "xfa/fwl/core/cfwl_themepart.h"
12 #include "xfa/fwl/core/cfwl_themetext.h"
13 #include "xfa/fwl/core/ifwl_form.h"
14 #include "xfa/fwl/core/ifwl_themeprovider.h"
15 #include "xfa/fwl/core/ifwl_widget.h"
16 #include "xfa/fxgraphics/cfx_color.h"
17 #include "xfa/fxgraphics/cfx_path.h"
18
19 #define FWLTHEME_CAPACITY_CXFormBorder 3
20 #define FWLTHEME_CAPACITY_CYFormBorder 3
21 #define FWLTHEME_CAPACITY_CYNarrowCaption 18
22 #define FWLTHEME_CAPACITY_CYCaption 29
23 #define FWLTHEME_CAPACITY_BigIconSize 32
24 #define FWLTHEME_CAPACITY_SmallIconSize 16
25 #define FWLTHEME_CAPACITY_FormTextColor 0xFFFFFFFF
26 #define FWLTHEME_FORMBTN_Margin 5
27 #define FWLTHEME_FORMBTN_Span 2
28 #define FWLTHEME_FORMBTN_Size 21
29
30 CFWL_FormTP::CFWL_FormTP() : m_pActiveBitmap(NULL), m_pDeactivebitmap(NULL) {
31 m_pThemeData = new SBThemeData;
32 SetThemeData(0);
33 m_rtDisLBorder.Reset();
34 m_rtDisRBorder.Reset();
35 m_rtDisBBorder.Reset();
36 m_rtDisCaption.Reset();
37 }
38 CFWL_FormTP::~CFWL_FormTP() {
39 if (m_pThemeData) {
40 delete m_pThemeData;
41 m_pThemeData = NULL;
42 }
43 }
44 FWL_ERR CFWL_FormTP::Initialize() {
45 InitTTO();
46 InitCaption(TRUE);
47 InitCaption(FALSE);
48 return CFWL_WidgetTP::Initialize();
49 }
50 FWL_ERR CFWL_FormTP::Finalize() {
51 FinalizeTTO();
52 if (m_pActiveBitmap) {
53 delete m_pActiveBitmap;
54 m_pActiveBitmap = NULL;
55 }
56 if (m_pDeactivebitmap) {
57 delete m_pDeactivebitmap;
58 m_pDeactivebitmap = NULL;
59 }
60 return CFWL_WidgetTP::Finalize();
61 }
62 FX_BOOL CFWL_FormTP::IsValidWidget(IFWL_Widget* pWidget) {
63 if (!pWidget)
64 return FALSE;
65 uint32_t dwHash = pWidget->GetClassID();
66 return dwHash == FWL_CLASSHASH_Form;
67 }
68 uint32_t CFWL_FormTP::SetThemeID(IFWL_Widget* pWidget,
69 uint32_t dwThemeID,
70 FX_BOOL bChildren) {
71 if (m_pThemeData) {
72 SetThemeData(FWL_GetThemeColor(dwThemeID));
73 }
74 InitCaption(TRUE);
75 InitCaption(FALSE);
76 return CFWL_WidgetTP::SetThemeID(pWidget, dwThemeID, bChildren);
77 }
78 FX_BOOL CFWL_FormTP::DrawBackground(CFWL_ThemeBackground* pParams) {
79 if (!pParams)
80 return FALSE;
81 int32_t iActive = 0;
82 if (pParams->m_dwStates & FWL_PARTSTATE_FRM_Inactive) {
83 iActive = 1;
84 }
85 FWLTHEME_STATE eState = FWLTHEME_STATE_Normal;
86 switch (pParams->m_dwStates & 0x03) {
87 case FWL_PARTSTATE_FRM_Hover: {
88 eState = FWLTHEME_STATE_Hover;
89 break;
90 }
91 case FWL_PARTSTATE_FRM_Pressed: {
92 eState = FWLTHEME_STATE_Pressed;
93 break;
94 }
95 case FWL_PARTSTATE_FRM_Disabled: {
96 eState = FWLTHEME_STATE_Disabale;
97 break;
98 }
99 default: {}
100 }
101 switch (pParams->m_iPart) {
102 case FWL_PART_FRM_Border: {
103 DrawFormBorder(pParams->m_pGraphics, &pParams->m_rtPart, eState,
104 &pParams->m_matrix, iActive);
105 break;
106 }
107 case FWL_PART_FRM_Edge: {
108 DrawEdge(pParams->m_pGraphics, pParams->m_pWidget->GetStyles(),
109 &pParams->m_rtPart, &pParams->m_matrix);
110 break;
111 }
112 case FWL_PART_FRM_Background: {
113 FillBackground(pParams->m_pGraphics, &pParams->m_rtPart,
114 &pParams->m_matrix);
115 break;
116 }
117 case FWL_PART_FRM_Caption: {
118 DrawCaption(pParams->m_pGraphics, &pParams->m_rtPart, eState,
119 &pParams->m_matrix, iActive);
120 break;
121 }
122 case FWL_PART_FRM_NarrowCaption: {
123 DrawNarrowCaption(pParams->m_pGraphics, &pParams->m_rtPart, eState,
124 &pParams->m_matrix, iActive);
125 break;
126 }
127 case FWL_PART_FRM_CloseBox: {
128 DrawCloseBox(pParams->m_pGraphics, &pParams->m_rtPart, eState,
129 &pParams->m_matrix, iActive);
130 break;
131 }
132 case FWL_PART_FRM_MinimizeBox: {
133 DrawMinimizeBox(pParams->m_pGraphics, &pParams->m_rtPart, eState,
134 &pParams->m_matrix, iActive);
135 break;
136 }
137 case FWL_PART_FRM_MaximizeBox: {
138 DrawMaximizeBox(pParams->m_pGraphics, &pParams->m_rtPart, eState,
139 pParams->m_dwData, &pParams->m_matrix, iActive);
140 break;
141 }
142 case FWL_PART_FRM_Icon: {
143 DrawIconImage(pParams->m_pGraphics, pParams->m_pImage, &pParams->m_rtPart,
144 eState, &pParams->m_matrix, iActive);
145 break;
146 }
147 default: {}
148 }
149 return TRUE;
150 }
151 FX_BOOL CFWL_FormTP::DrawText(CFWL_ThemeText* pParams) {
152 if (!m_pTextOut)
153 return FALSE;
154 if (pParams->m_iPart == FWL_PART_FRM_Caption) {
155 m_pTextOut->SetTextColor(0xFFFFFFFF);
156 } else {
157 m_pTextOut->SetTextColor(0xFF000000);
158 }
159 return CFWL_WidgetTP::DrawText(pParams);
160 }
161 void* CFWL_FormTP::GetCapacity(CFWL_ThemePart* pThemePart,
162 uint32_t dwCapacity) {
163 FX_BOOL bDefPro = FALSE;
164 FX_BOOL bDwordVal = FALSE;
165 switch (dwCapacity) {
166 case FWL_WGTCAPACITY_CXBorder: {
167 m_fValue = FWLTHEME_CAPACITY_CXFormBorder;
168 break;
169 }
170 case FWL_WGTCAPACITY_CYBorder: {
171 m_fValue = FWLTHEME_CAPACITY_CYFormBorder;
172 break;
173 }
174 case FWL_WGTCAPACITY_FRM_CYCaption: {
175 m_fValue = FWLTHEME_CAPACITY_CYCaption;
176 break;
177 }
178 case FWL_WGTCAPACITY_FRM_CYNarrowCaption: {
179 m_fValue = FWLTHEME_CAPACITY_CYCaption;
180 break;
181 }
182 case FWL_WGTCAPACITY_TextColor: {
183 bDwordVal = TRUE;
184 m_dwValue = FWLTHEME_CAPACITY_FormTextColor;
185 break;
186 }
187 case FWL_WGTCAPACITY_FRM_BigIcon: {
188 m_fValue = FWLTHEME_CAPACITY_BigIconSize;
189 break;
190 }
191 case FWL_WGTCAPACITY_FRM_SmallIcon: {
192 m_fValue = FWLTHEME_CAPACITY_SmallIconSize;
193 break;
194 }
195 default: { bDefPro = TRUE; }
196 }
197 if (!bDefPro) {
198 if (bDwordVal) {
199 return &m_dwValue;
200 }
201 return &m_fValue;
202 }
203 return CFWL_WidgetTP::GetCapacity(pThemePart, dwCapacity);
204 }
205 FWL_ERR CFWL_FormTP::GetPartRect(CFWL_ThemePart* pThemePart,
206 CFX_RectF& rtPart) {
207 switch (pThemePart->m_iPart) {
208 case FWL_PART_FRM_CloseBox: {
209 CalCloseBox(pThemePart->m_pWidget, rtPart);
210 break;
211 }
212 case FWL_PART_FRM_MaximizeBox: {
213 CalMaxBox(pThemePart->m_pWidget, rtPart);
214 break;
215 }
216 case FWL_PART_FRM_MinimizeBox: {
217 CalMinBox(pThemePart->m_pWidget, rtPart);
218 break;
219 }
220 case FWL_PART_FRM_HeadText: {
221 CalCaption(pThemePart->m_pWidget, rtPart);
222 break;
223 }
224 case FWL_PART_FRM_Icon: {
225 CalIcon(pThemePart->m_pWidget, rtPart);
226 break;
227 }
228 default: {}
229 }
230 return FWL_ERR_Succeeded;
231 }
232 void CFWL_FormTP::CalCloseBox(IFWL_Widget* pWidget, CFX_RectF& rect) {
233 uint32_t dwStyles = pWidget->GetStyles();
234 CFX_RectF rtWidget;
235 pWidget->GetWidgetRect(rtWidget);
236 rtWidget.Offset(-rtWidget.left, -rtWidget.top);
237 if (dwStyles & FWL_WGTSTYLE_CloseBox) {
238 rect.Set(rtWidget.left + FWLTHEME_FORMBTN_Margin + FWLTHEME_FORMBTN_Span,
239 rtWidget.top + FWLTHEME_FORMBTN_Margin, FWLTHEME_FORMBTN_Size,
240 FWLTHEME_FORMBTN_Size);
241 } else {
242 rect.Set(rtWidget.left + FWLTHEME_FORMBTN_Margin + FWLTHEME_FORMBTN_Span,
243 rtWidget.top + FWLTHEME_FORMBTN_Margin, 0, 0);
244 }
245 }
246 void CFWL_FormTP::CalMaxBox(IFWL_Widget* pWidget, CFX_RectF& rect) {
247 uint32_t dwStyles = pWidget->GetStyles();
248 CFX_RectF rtWidget;
249 pWidget->GetWidgetRect(rtWidget);
250 rtWidget.Offset(-rtWidget.left, -rtWidget.top);
251 if (dwStyles & FWL_WGTSTYLE_MaximizeBox) {
252 rect.Set(rtWidget.left + FWLTHEME_FORMBTN_Margin + FWLTHEME_FORMBTN_Size +
253 FWLTHEME_FORMBTN_Span * 2,
254 rtWidget.top + FWLTHEME_FORMBTN_Margin, FWLTHEME_FORMBTN_Size,
255 FWLTHEME_FORMBTN_Size);
256 } else {
257 rect.Set(rtWidget.left + FWLTHEME_FORMBTN_Margin + FWLTHEME_FORMBTN_Size +
258 FWLTHEME_FORMBTN_Span * 2,
259 rtWidget.top + FWLTHEME_FORMBTN_Margin, 0, 0);
260 }
261 }
262 void CFWL_FormTP::CalMinBox(IFWL_Widget* pWidget, CFX_RectF& rect) {
263 uint32_t dwStyles = pWidget->GetStyles();
264 CFX_RectF rtWidget;
265 pWidget->GetWidgetRect(rtWidget);
266 rtWidget.Offset(-rtWidget.left, -rtWidget.top);
267 if (dwStyles & FWL_WGTSTYLE_MinimizeBox) {
268 rect.Set(rtWidget.left + FWLTHEME_FORMBTN_Margin +
269 FWLTHEME_FORMBTN_Size * 2 + FWLTHEME_FORMBTN_Span * 3,
270 rtWidget.top + FWLTHEME_FORMBTN_Margin, FWLTHEME_FORMBTN_Size,
271 FWLTHEME_FORMBTN_Size);
272 } else {
273 rect.Set(rtWidget.left + FWLTHEME_FORMBTN_Margin +
274 FWLTHEME_FORMBTN_Size * 2 + FWLTHEME_FORMBTN_Span * 3,
275 rtWidget.top + FWLTHEME_FORMBTN_Margin, 0, 0);
276 }
277 }
278 void CFWL_FormTP::CalCaption(IFWL_Widget* pWidget, CFX_RectF& rect) {
279 CFX_RectF rtWidget;
280 pWidget->GetWidgetRect(rtWidget);
281 rtWidget.Offset(-rtWidget.left, -rtWidget.top);
282 rect.Set(rtWidget.left + FWLTHEME_FORMBTN_Margin,
283 rtWidget.top + FWLTHEME_FORMBTN_Margin - 2,
284 rtWidget.width - FWLTHEME_FORMBTN_Margin * 2,
285 FWLTHEME_FORMBTN_Size + 2 * FWLTHEME_FORMBTN_Margin + 4);
286 }
287 void CFWL_FormTP::CalIcon(IFWL_Widget* pWidget, CFX_RectF& rect) {}
288 void CFWL_FormTP::DrawFormBorder(CFX_Graphics* pGraphics,
289 const CFX_RectF* pRect,
290 FWLTHEME_STATE eState,
291 CFX_Matrix* pMatrix,
292 int32_t iActive) {
293 CFX_RectF rt;
294 rt.Set(pRect->left, pRect->top, 1, pRect->height);
295 FX_FLOAT fBottom, fRight;
296 fBottom = pRect->bottom();
297 fRight = pRect->right();
298 CFX_Path path;
299 path.Create();
300 CFX_Color clrLine;
301 path.Clear();
302 path.MoveTo(pRect->left, pRect->top);
303 path.LineTo(pRect->left, fBottom - 1);
304 path.LineTo(fRight - 1, fBottom - 1);
305 path.LineTo(fRight - 1, pRect->top);
306 clrLine = m_pThemeData->clrFormBorder[iActive][2];
307 pGraphics->SetStrokeColor(&clrLine);
308 pGraphics->StrokePath(&path, pMatrix);
309 path.Clear();
310 path.MoveTo(pRect->left + 1, pRect->top);
311 path.LineTo(pRect->left + 1, fBottom - 2);
312 path.LineTo(fRight - 2, fBottom - 2);
313 path.LineTo(fRight - 2, pRect->top);
314 clrLine = m_pThemeData->clrFormBorder[iActive][1];
315 pGraphics->SetStrokeColor(&clrLine);
316 pGraphics->StrokePath(&path, pMatrix);
317 path.Clear();
318 path.MoveTo(pRect->left + 2, pRect->top);
319 path.LineTo(pRect->left + 2, fBottom - 3);
320 path.LineTo(fRight - 3, fBottom - 3);
321 path.LineTo(fRight - 3, pRect->top);
322 clrLine = m_pThemeData->clrFormBorder[iActive][0];
323 pGraphics->SetStrokeColor(&clrLine);
324 pGraphics->StrokePath(&path, pMatrix);
325 path.Clear();
326 path.MoveTo(pRect->left + 3, pRect->top);
327 path.LineTo(pRect->left + 3, fBottom - 4);
328 path.LineTo(fRight - 4, fBottom - 4);
329 path.LineTo(fRight - 4, pRect->top);
330 clrLine = m_pThemeData->clrFormBorder[iActive][4];
331 pGraphics->SetStrokeColor(&clrLine);
332 pGraphics->StrokePath(&path, pMatrix);
333 m_rtDisLBorder.Set(pRect->left, pRect->top + 29, 4, pRect->height - 29);
334 m_rtDisRBorder.Set(pRect->right() - 4, pRect->top + 29, 4,
335 pRect->height - 29);
336 m_rtDisBBorder.Set(pRect->left, pRect->bottom() - 4, pRect->width, 4);
337 m_rtDisCaption.Set(pRect->left, pRect->top, pRect->width, 29);
338 }
339 void CFWL_FormTP::DrawCaption(CFX_Graphics* pGraphics,
340 const CFX_RectF* pRect,
341 FWLTHEME_STATE eState,
342 CFX_Matrix* pMatrix,
343 int32_t iActive) {
344 CFX_RectF rt;
345 FX_FLOAT fBottom, fRight;
346 fBottom = pRect->bottom();
347 fRight = pRect->right();
348 rt.Set(pRect->left, pRect->top, pRect->width, 1);
349 FillSoildRect(pGraphics, m_pThemeData->clrHeadEdgeTop[iActive][0], &rt,
350 pMatrix);
351 rt.Offset(0, 1);
352 FillSoildRect(pGraphics, m_pThemeData->clrHeadEdgeTop[iActive][1], &rt,
353 pMatrix);
354 rt.Offset(0, 1);
355 FillSoildRect(pGraphics, m_pThemeData->clrHeadEdgeTop[iActive][2], &rt,
356 pMatrix);
357 rt.Set(pRect->left, pRect->bottom() - 1, pRect->width, 1);
358 FillSoildRect(pGraphics, m_pThemeData->clrHeadEdgeBottom[iActive][2], &rt,
359 pMatrix);
360 rt.Offset(0, -1);
361 FillSoildRect(pGraphics, m_pThemeData->clrHeadEdgeBottom[iActive][1], &rt,
362 pMatrix);
363 rt.Set(pRect->left, pRect->top, 1, pRect->height);
364 FillSoildRect(pGraphics, m_pThemeData->clrHeadEdgeLeft[iActive][2], &rt,
365 pMatrix);
366 rt.Set(pRect->left + 1, pRect->top + 1, 1, fBottom - 1);
367 FillSoildRect(pGraphics, m_pThemeData->clrHeadEdgeLeft[iActive][1], &rt,
368 pMatrix);
369 rt.Set(pRect->left + 2, pRect->top + 2, 1, fBottom - 2);
370 FillSoildRect(pGraphics, m_pThemeData->clrHeadEdgeLeft[iActive][0], &rt,
371 pMatrix);
372 rt.Set(fRight - 1, pRect->top, pRect->width, pRect->height);
373 FillSoildRect(pGraphics, m_pThemeData->clrHeadEdgeRight[iActive][2], &rt,
374 pMatrix);
375 rt.Set(fRight - 2, pRect->top + 1, 1, fBottom - 1);
376 FillSoildRect(pGraphics, m_pThemeData->clrHeadEdgeRight[iActive][1], &rt,
377 pMatrix);
378 rt.Set(fRight - 3, pRect->top + 2, 1, fBottom - 2);
379 FillSoildRect(pGraphics, m_pThemeData->clrHeadEdgeRight[iActive][0], &rt,
380 pMatrix);
381 CFX_RectF rect(*pRect);
382 rect.Set(rect.left + 3, rect.top + 3, rect.width - 6, rect.height - 5);
383 if (iActive == 0) {
384 pGraphics->StretchImage(m_pActiveBitmap, rect, pMatrix);
385 } else {
386 pGraphics->StretchImage(m_pDeactivebitmap, rect, pMatrix);
387 }
388 }
389 void CFWL_FormTP::DrawNarrowCaption(CFX_Graphics* pGraphics,
390 const CFX_RectF* pRect,
391 FWLTHEME_STATE eState,
392 CFX_Matrix* pMatrix,
393 int32_t iActive) {}
394 void CFWL_FormTP::DrawCloseBox(CFX_Graphics* pGraphics,
395 const CFX_RectF* pRect,
396 FWLTHEME_STATE eState,
397 CFX_Matrix* pMatrix,
398 int32_t iActive) {
399 FX_FLOAT fRight = pRect->right();
400 FX_FLOAT fBottom = pRect->bottom();
401 FX_FLOAT fWidth = pRect->width;
402 FX_FLOAT fHeight = pRect->height;
403 pGraphics->SaveGraphState();
404 CFX_RectF rt(*pRect);
405 pGraphics->SetLineWidth(1.0f);
406 CFX_Path path;
407 path.Create();
408 path.AddRectangle(rt.left + 1, rt.top, fWidth - 2, 1);
409 path.AddRectangle(rt.left, rt.top + 1, 1, fHeight - 2);
410 path.AddRectangle(fRight - 1, rt.top + 1, 1, fHeight - 2);
411 path.AddRectangle(rt.left + 1, fBottom - 1, fWidth - 2, 1);
412 CFX_Color crFill;
413 crFill = m_pThemeData->clrBtnEdgeOut[iActive];
414 pGraphics->SetFillColor(&crFill);
415 pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix);
416 path.Clear();
417 path.AddRectangle(rt.left + 1, rt.top + 1, 1, 1);
418 path.AddRectangle(fRight - 2, rt.top + 1, 1, 1);
419 path.AddRectangle(rt.left + 1, fBottom - 2, 1, 1);
420 path.AddRectangle(fRight - 2, fBottom - 2, 1, 1);
421 crFill = m_pThemeData->clrBtnCornerLight[iActive][eState - 1];
422 pGraphics->SetFillColor(&crFill);
423 pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix);
424 path.Clear();
425 path.AddRectangle(rt.left + 2, rt.top + 1, fWidth - 4, 1);
426 path.AddRectangle(rt.left + 1, rt.top + 2, 1, fHeight - 4);
427 crFill = m_pThemeData->clrCloseBtEdgeLight[iActive][eState - 1];
428 pGraphics->SetFillColor(&crFill);
429 pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix);
430 path.Clear();
431 path.AddRectangle(fRight - 2, rt.top + 2, 1, fHeight - 4);
432 path.AddRectangle(rt.left + 2, fBottom - 2, fWidth - 4, 1);
433 crFill = m_pThemeData->clrCloseBtEdgeDark[iActive][eState - 1];
434 pGraphics->SetFillColor(&crFill);
435 pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix);
436 path.Clear();
437 path.AddRectangle(pRect->left + 2, pRect->top + 2, fWidth - 4, fHeight - 4);
438 DrawAxialShading(pGraphics, pRect->left + 2, pRect->top + 2, fRight - 2,
439 fBottom - 2,
440 m_pThemeData->clrCloseBtBKStart[iActive][eState - 1],
441 m_pThemeData->clrCloseBtBKEnd[iActive][eState - 1], &path,
442 FXFILL_WINDING, pMatrix);
443 CFX_RectF rtX(*pRect);
444 rtX.Inflate(-5, -5);
445 path.Clear();
446 FX_FLOAT frtXRight = rtX.right();
447 FX_FLOAT frtXBottom = rtX.bottom();
448 path.AddLine(rtX.left, rtX.top + 1, frtXRight - 1, frtXBottom);
449 path.AddLine(rtX.left, rtX.top, frtXRight, frtXBottom);
450 path.AddLine(rtX.left + 1, rtX.top, frtXRight, frtXBottom - 1);
451 path.AddLine(rtX.left, frtXBottom - 1, frtXRight - 1, rtX.top);
452 path.AddLine(rtX.left, frtXBottom, frtXRight, rtX.top);
453 path.AddLine(rtX.left + 1, frtXBottom, frtXRight, rtX.top + 1);
454 CFX_Color clrLine(0xffffffff);
455 pGraphics->SetLineWidth(1.0f);
456 pGraphics->SetStrokeColor(&clrLine);
457 pGraphics->StrokePath(&path, pMatrix);
458 pGraphics->RestoreGraphState();
459 }
460 void CFWL_FormTP::DrawMinMaxBoxCommon(CFX_Graphics* pGraphics,
461 const CFX_RectF* pRect,
462 FWLTHEME_STATE eState,
463 CFX_Matrix* pMatrix,
464 int32_t iActive) {
465 pGraphics->SaveGraphState();
466 FX_FLOAT fRight = pRect->right();
467 FX_FLOAT fBottom = pRect->bottom();
468 FX_FLOAT fWidth = pRect->width;
469 FX_FLOAT fHeight = pRect->height;
470 CFX_RectF rt(*pRect);
471 pGraphics->SetLineWidth(1.0f);
472 CFX_Path path;
473 path.Create();
474 path.AddRectangle(rt.left + 1, rt.top, fWidth - 2, 1);
475 path.AddRectangle(rt.left, rt.top + 1, 1, fHeight - 2);
476 path.AddRectangle(fRight - 1, rt.top + 1, 1, fHeight - 2);
477 path.AddRectangle(rt.left + 1, fBottom - 1, fWidth - 2, 1);
478 CFX_Color crFill;
479 crFill = m_pThemeData->clrBtnEdgeOut[iActive];
480 pGraphics->SetFillColor(&crFill);
481 pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix);
482 path.Clear();
483 path.AddRectangle(rt.left + 1, rt.top + 1, 1, 1);
484 path.AddRectangle(fRight - 2, rt.top + 1, 1, 1);
485 path.AddRectangle(rt.left + 1, fBottom - 2, 1, 1);
486 path.AddRectangle(fRight - 2, fBottom - 2, 1, 1);
487 crFill = m_pThemeData->clrBtnCornerLight[iActive][eState - 1];
488 pGraphics->SetFillColor(&crFill);
489 pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix);
490 path.Clear();
491 path.AddRectangle(rt.left + 2, rt.top + 1, fWidth - 4, 1);
492 path.AddRectangle(rt.left + 1, rt.top + 2, 1, fHeight - 4);
493 crFill = m_pThemeData->clrNormalBtEdgeLight[iActive][eState - 1];
494 pGraphics->SetFillColor(&crFill);
495 pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix);
496 path.Clear();
497 path.AddRectangle(fRight - 2, rt.top + 2, 1, fHeight - 4);
498 path.AddRectangle(rt.left + 2, fBottom - 2, fWidth - 4, 1);
499 crFill = m_pThemeData->clrNormalBtEdgeDark[iActive][eState - 1];
500 pGraphics->SetFillColor(&crFill);
501 pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix);
502 pGraphics->RestoreGraphState();
503 path.Clear();
504 path.AddRectangle(pRect->left + 2, pRect->top + 2, fWidth - 4, fHeight - 4);
505 DrawAxialShading(pGraphics, pRect->left + 2, pRect->top + 2, fRight - 2,
506 fBottom - 2,
507 m_pThemeData->clrNormalBtBKStart[iActive][eState - 1],
508 m_pThemeData->clrNormalBtBKEnd[iActive][eState - 1], &path,
509 FXFILL_WINDING, pMatrix);
510 }
511 void CFWL_FormTP::DrawMinimizeBox(CFX_Graphics* pGraphics,
512 const CFX_RectF* pRect,
513 FWLTHEME_STATE eState,
514 CFX_Matrix* pMatrix,
515 int32_t iActive) {
516 DrawMinMaxBoxCommon(pGraphics, pRect, eState, pMatrix);
517 CFX_RectF rtMin;
518 rtMin.Set(pRect->left + 5, pRect->top + 13, pRect->width - 14,
519 pRect->height - 18);
520 FillSoildRect(pGraphics, 0xFFFFFFFF, &rtMin, pMatrix);
521 }
522 void CFWL_FormTP::DrawMaximizeBox(CFX_Graphics* pGraphics,
523 const CFX_RectF* pRect,
524 FWLTHEME_STATE eState,
525 FX_BOOL bMax,
526 CFX_Matrix* pMatrix,
527 int32_t iActive) {
528 DrawMinMaxBoxCommon(pGraphics, pRect, eState, pMatrix);
529 FX_FLOAT fWidth = pRect->width;
530 FX_FLOAT fHeight = pRect->height;
531 if (bMax) {
532 CFX_Path path;
533 path.Create();
534 path.AddLine(pRect->left + 7, pRect->top + 6, pRect->left + 14,
535 pRect->top + 6);
536 path.AddLine(pRect->left + 4, pRect->top + 9, pRect->left + 11,
537 pRect->top + 9);
538 pGraphics->SaveGraphState();
539 pGraphics->SetLineWidth(2);
540 CFX_Color crStroke(0xFFFFFFFF);
541 pGraphics->SetStrokeColor(&crStroke);
542 pGraphics->StrokePath(&path, pMatrix);
543 pGraphics->SetLineWidth(1);
544 path.Clear();
545 path.AddLine(pRect->left + 4, pRect->top + 10, pRect->left + 4,
546 pRect->top + 14);
547 path.AddLine(pRect->left + 10, pRect->top + 10, pRect->left + 10,
548 pRect->top + 14);
549 path.AddLine(pRect->left + 13, pRect->top + 7, pRect->left + 13,
550 pRect->top + 11);
551 path.AddLine(pRect->left + 4, pRect->top + 14, pRect->left + 10,
552 pRect->top + 14);
553 path.AddLine(pRect->left + 12, pRect->top + 11, pRect->left + 12,
554 pRect->top + 11);
555 pGraphics->StrokePath(&path, pMatrix);
556 pGraphics->RestoreGraphState();
557 } else {
558 CFX_RectF rtMax(*pRect);
559 rtMax.Inflate(-5, -5);
560 CFX_Path path;
561 path.Create();
562 path.AddRectangle(pRect->left + 5, pRect->top + 5, fWidth - 10,
563 fHeight - 10);
564 path.AddRectangle(pRect->left + 6, pRect->top + 8, fWidth - 12,
565 fHeight - 14);
566 pGraphics->SaveGraphState();
567 CFX_Color crFill(0xFFFFFFFF);
568 pGraphics->SetFillColor(&crFill);
569 pGraphics->FillPath(&path, FXFILL_ALTERNATE, pMatrix);
570 pGraphics->RestoreGraphState();
571 }
572 }
573 void CFWL_FormTP::DrawIconImage(CFX_Graphics* pGraphics,
574 CFX_DIBitmap* pDIBitmap,
575 const CFX_RectF* pRect,
576 FWLTHEME_STATE eState,
577 CFX_Matrix* pMatrix,
578 int32_t iActive) {
579 pGraphics->StretchImage(pDIBitmap, *pRect, pMatrix);
580 }
581 void CFWL_FormTP::SetThemeData(uint32_t dwID) {
582 m_pThemeData->clrTransWhite = ArgbEncode(0x65, 255, 255, 255);
583 m_pThemeData->clrCloseBtBKStart[0][0] = ArgbEncode(0xff, 240, 166, 148);
584 m_pThemeData->clrCloseBtBKEnd[0][0] = ArgbEncode(0xff, 228, 61, 5);
585 m_pThemeData->clrCloseBtBKStart[0][1] = ArgbEncode(0xff, 255, 184, 176);
586 m_pThemeData->clrCloseBtBKEnd[0][1] = ArgbEncode(0xff, 252, 107, 71);
587 m_pThemeData->clrCloseBtBKStart[0][2] = ArgbEncode(0xff, 141, 44, 20);
588 m_pThemeData->clrCloseBtBKEnd[0][2] = ArgbEncode(0xff, 202, 72, 33);
589 m_pThemeData->clrCloseBtEdgeLight[0][0] = ArgbEncode(0xff, 255, 122, 107);
590 m_pThemeData->clrCloseBtEdgeDark[0][0] = ArgbEncode(0xff, 218, 77, 54);
591 m_pThemeData->clrCloseBtEdgeLight[0][1] = ArgbEncode(0xff, 255, 93, 74);
592 m_pThemeData->clrCloseBtEdgeDark[0][1] = ArgbEncode(0xff, 218, 74, 51);
593 m_pThemeData->clrCloseBtEdgeLight[0][2] = ArgbEncode(0xff, 191, 61, 28);
594 m_pThemeData->clrCloseBtEdgeDark[0][2] = ArgbEncode(0xff, 93, 30, 13);
595 if (dwID) {
596 m_pThemeData->clrHeadBK[0][0] = ArgbEncode(0xff, 194, 205, 149);
597 m_pThemeData->clrHeadBK[0][1] = ArgbEncode(0xff, 170, 184, 131);
598 m_pThemeData->clrHeadBK[0][2] = ArgbEncode(0xff, 168, 182, 128);
599 m_pThemeData->clrHeadBK[0][3] = ArgbEncode(0xff, 194, 205, 149);
600 m_pThemeData->clrHeadEdgeLeft[0][0] = ArgbEncode(0xff, 117, 141, 94);
601 m_pThemeData->clrHeadEdgeLeft[0][1] = ArgbEncode(0xff, 139, 161, 105);
602 m_pThemeData->clrHeadEdgeLeft[0][2] = ArgbEncode(0xff, 171, 189, 133);
603 m_pThemeData->clrHeadEdgeRight[0][0] = ArgbEncode(0xff, 155, 175, 125);
604 m_pThemeData->clrHeadEdgeRight[0][1] = ArgbEncode(0xff, 128, 146, 103);
605 m_pThemeData->clrHeadEdgeRight[0][2] = ArgbEncode(0xff, 94, 118, 79);
606 m_pThemeData->clrHeadEdgeTop[0][0] = ArgbEncode(0xff, 139, 161, 105);
607 m_pThemeData->clrHeadEdgeTop[0][1] = ArgbEncode(0xff, 234, 245, 201);
608 m_pThemeData->clrHeadEdgeTop[0][2] = ArgbEncode(0xff, 194, 205, 149);
609 m_pThemeData->clrHeadEdgeBottom[0][0] = ArgbEncode(0xff, 175, 189, 133);
610 m_pThemeData->clrHeadEdgeBottom[0][1] = ArgbEncode(0xff, 153, 168, 121);
611 m_pThemeData->clrHeadEdgeBottom[0][2] = ArgbEncode(0xff, 150, 168, 103);
612 m_pThemeData->clrNormalBtBKStart[0][0] = ArgbEncode(0xff, 182, 195, 162);
613 m_pThemeData->clrNormalBtBKEnd[0][0] = ArgbEncode(0xff, 128, 144, 84);
614 m_pThemeData->clrNormalBtBKStart[0][1] = ArgbEncode(0xff, 234, 241, 208);
615 m_pThemeData->clrNormalBtBKEnd[0][1] = ArgbEncode(0xff, 169, 186, 112);
616 m_pThemeData->clrNormalBtBKStart[0][2] = ArgbEncode(0xff, 199, 199, 190);
617 m_pThemeData->clrNormalBtBKEnd[0][2] = ArgbEncode(0xff, 133, 148, 88);
618 m_pThemeData->clrNormalBtEdgeLight[0][0] = ArgbEncode(0xff, 163, 176, 137);
619 m_pThemeData->clrNormalBtEdgeDark[0][0] = ArgbEncode(0xff, 118, 135, 83);
620 m_pThemeData->clrNormalBtEdgeLight[0][1] = ArgbEncode(0xff, 154, 174, 105);
621 m_pThemeData->clrNormalBtEdgeDark[0][1] = ArgbEncode(0xff, 154, 174, 105);
622 m_pThemeData->clrNormalBtEdgeLight[0][2] = ArgbEncode(0xff, 172, 193, 123);
623 m_pThemeData->clrNormalBtEdgeDark[0][2] = ArgbEncode(0xff, 154, 174, 105);
624 m_pThemeData->clrBtnCornerLight[0][0] = ArgbEncode(0xff, 220, 220, 220);
625 m_pThemeData->clrBtnCornerLight[0][1] = ArgbEncode(0xff, 255, 255, 255);
626 m_pThemeData->clrBtnCornerLight[0][2] = ArgbEncode(0xff, 225, 225, 225);
627 m_pThemeData->clrBtnEdgeOut[0] = ArgbEncode(0xff, 255, 255, 255);
628 m_pThemeData->clrFormBorder[0][0] = ArgbEncode(0xff, 117, 141, 94);
629 m_pThemeData->clrFormBorder[0][1] = ArgbEncode(0xff, 139, 161, 105);
630 m_pThemeData->clrFormBorder[0][2] = ArgbEncode(0xff, 171, 189, 133);
631 m_pThemeData->clrFormBorder[0][3] = ArgbEncode(0xff, 164, 178, 127);
632 m_pThemeData->clrFormBorder[0][4] = ArgbEncode(0xff, 255, 255, 255);
633 m_pThemeData->clrFormBorderLight[0] = ArgbEncode(0xff, 171, 189, 133);
634 } else {
635 m_pThemeData->clrHeadBK[0][0] = ArgbEncode(0xff, 3, 114, 255);
636 m_pThemeData->clrHeadBK[0][1] = ArgbEncode(0xff, 0, 85, 226);
637 m_pThemeData->clrHeadBK[0][2] = ArgbEncode(0xff, 0, 85, 226);
638 m_pThemeData->clrHeadBK[0][3] = ArgbEncode(0xff, 3, 114, 255);
639 m_pThemeData->clrHeadEdgeLeft[0][2] = ArgbEncode(0xff, 0, 32, 200);
640 m_pThemeData->clrHeadEdgeLeft[0][1] = ArgbEncode(0xff, 0, 61, 220);
641 m_pThemeData->clrHeadEdgeLeft[0][0] = ArgbEncode(0xff, 0, 54, 210);
642 m_pThemeData->clrHeadEdgeRight[0][0] = ArgbEncode(0xff, 0, 56, 234);
643 m_pThemeData->clrHeadEdgeRight[0][1] = ArgbEncode(0xff, 0, 50, 193);
644 m_pThemeData->clrHeadEdgeRight[0][2] = ArgbEncode(0xff, 0, 19, 139);
645 m_pThemeData->clrHeadEdgeTop[0][0] = ArgbEncode(0xff, 0, 88, 238);
646 m_pThemeData->clrHeadEdgeTop[0][1] = ArgbEncode(0xff, 63, 151, 255);
647 m_pThemeData->clrHeadEdgeTop[0][2] = ArgbEncode(0xff, 3, 114, 255);
648 m_pThemeData->clrHeadEdgeBottom[0][0] = ArgbEncode(0xff, 0, 96, 252);
649 m_pThemeData->clrHeadEdgeBottom[0][1] = ArgbEncode(0xff, 63, 151, 255);
650 m_pThemeData->clrHeadEdgeBottom[0][2] = ArgbEncode(0xff, 0, 67, 207);
651 m_pThemeData->clrNormalBtBKStart[0][2] = ArgbEncode(0xff, 0, 49, 112);
652 m_pThemeData->clrNormalBtBKEnd[0][2] = ArgbEncode(0xff, 0, 87, 188);
653 m_pThemeData->clrNormalBtBKStart[0][0] = ArgbEncode(0xff, 154, 183, 250);
654 m_pThemeData->clrNormalBtBKEnd[0][0] = ArgbEncode(0xff, 17, 110, 248);
655 m_pThemeData->clrNormalBtBKStart[0][1] = ArgbEncode(0xff, 164, 194, 255);
656 m_pThemeData->clrNormalBtBKEnd[0][1] = ArgbEncode(0xff, 29, 158, 255);
657 m_pThemeData->clrNormalBtEdgeLight[0][0] = ArgbEncode(0xff, 68, 120, 245);
658 m_pThemeData->clrNormalBtEdgeDark[0][0] = ArgbEncode(0xff, 24, 72, 187);
659 m_pThemeData->clrNormalBtEdgeLight[0][1] = ArgbEncode(0xff, 72, 122, 245);
660 m_pThemeData->clrNormalBtEdgeDark[0][1] = ArgbEncode(0xff, 35, 87, 195);
661 m_pThemeData->clrNormalBtEdgeLight[0][2] = ArgbEncode(0xff, 60, 114, 244);
662 m_pThemeData->clrNormalBtEdgeDark[0][2] = ArgbEncode(0xff, 21, 70, 185);
663 m_pThemeData->clrBtnCornerLight[0][0] = ArgbEncode(0xff, 220, 220, 220);
664 m_pThemeData->clrBtnCornerLight[0][1] = ArgbEncode(0xff, 255, 255, 255);
665 m_pThemeData->clrBtnCornerLight[0][2] = ArgbEncode(0xff, 225, 225, 225);
666 m_pThemeData->clrBtnEdgeOut[0] = ArgbEncode(0xff, 255, 255, 255);
667 m_pThemeData->clrFormBorder[0][0] = ArgbEncode(0xff, 0, 72, 241);
668 m_pThemeData->clrFormBorder[0][1] = ArgbEncode(0xff, 0, 61, 220);
669 m_pThemeData->clrFormBorder[0][2] = ArgbEncode(0xff, 0, 30, 160);
670 m_pThemeData->clrFormBorder[0][3] = ArgbEncode(0xff, 0, 19, 140);
671 m_pThemeData->clrFormBorder[0][4] = ArgbEncode(0xff, 255, 255, 255);
672 m_pThemeData->clrFormBorderLight[0] = ArgbEncode(0xff, 22, 106, 239);
673 }
674 m_pThemeData->clrCloseBtBKStart[1][0] = m_pThemeData->clrCloseBtBKStart[0][0];
675 m_pThemeData->clrCloseBtBKEnd[1][0] = m_pThemeData->clrCloseBtBKEnd[0][0];
676 m_pThemeData->clrCloseBtBKStart[1][1] = m_pThemeData->clrCloseBtBKStart[0][1];
677 m_pThemeData->clrCloseBtBKEnd[1][1] = m_pThemeData->clrCloseBtBKEnd[0][1];
678 m_pThemeData->clrCloseBtBKStart[1][2] = m_pThemeData->clrCloseBtBKStart[0][2];
679 m_pThemeData->clrCloseBtBKEnd[1][2] = m_pThemeData->clrCloseBtBKEnd[0][2];
680 m_pThemeData->clrCloseBtEdgeLight[1][0] =
681 m_pThemeData->clrCloseBtEdgeLight[0][0];
682 m_pThemeData->clrCloseBtEdgeDark[1][0] =
683 m_pThemeData->clrCloseBtEdgeDark[0][0];
684 m_pThemeData->clrCloseBtEdgeLight[1][1] =
685 m_pThemeData->clrCloseBtEdgeLight[0][1];
686 m_pThemeData->clrCloseBtEdgeDark[1][1] =
687 m_pThemeData->clrCloseBtEdgeDark[0][1];
688 m_pThemeData->clrCloseBtEdgeLight[1][2] =
689 m_pThemeData->clrCloseBtEdgeLight[0][2];
690 m_pThemeData->clrCloseBtEdgeDark[1][2] =
691 m_pThemeData->clrCloseBtEdgeDark[0][2];
692 m_pThemeData->clrHeadBK[1][0] = m_pThemeData->clrHeadBK[0][0];
693 m_pThemeData->clrHeadBK[1][1] = m_pThemeData->clrHeadBK[0][1];
694 m_pThemeData->clrHeadBK[1][2] = m_pThemeData->clrHeadBK[0][2];
695 m_pThemeData->clrHeadBK[1][3] = m_pThemeData->clrHeadBK[0][3];
696 m_pThemeData->clrHeadEdgeLeft[1][2] = m_pThemeData->clrHeadEdgeLeft[0][2];
697 m_pThemeData->clrHeadEdgeLeft[1][1] = m_pThemeData->clrHeadEdgeLeft[0][1];
698 m_pThemeData->clrHeadEdgeLeft[1][0] = m_pThemeData->clrHeadEdgeLeft[0][0];
699 m_pThemeData->clrHeadEdgeRight[1][0] = m_pThemeData->clrHeadEdgeRight[0][0];
700 m_pThemeData->clrHeadEdgeRight[1][1] = m_pThemeData->clrHeadEdgeRight[0][1];
701 m_pThemeData->clrHeadEdgeRight[1][2] = m_pThemeData->clrHeadEdgeRight[0][2];
702 m_pThemeData->clrHeadEdgeTop[1][0] = m_pThemeData->clrHeadEdgeTop[0][0];
703 m_pThemeData->clrHeadEdgeTop[1][1] = m_pThemeData->clrHeadEdgeTop[0][1];
704 m_pThemeData->clrHeadEdgeTop[1][2] = m_pThemeData->clrHeadEdgeTop[0][2];
705 m_pThemeData->clrHeadEdgeBottom[1][0] = m_pThemeData->clrHeadEdgeBottom[0][0];
706 m_pThemeData->clrHeadEdgeBottom[1][1] = m_pThemeData->clrHeadEdgeBottom[0][1];
707 m_pThemeData->clrHeadEdgeBottom[1][2] = m_pThemeData->clrHeadEdgeBottom[0][2];
708 m_pThemeData->clrNormalBtBKStart[1][2] =
709 m_pThemeData->clrNormalBtBKStart[0][2];
710 m_pThemeData->clrNormalBtBKEnd[1][2] = m_pThemeData->clrNormalBtBKEnd[0][2];
711 m_pThemeData->clrNormalBtBKStart[1][0] =
712 m_pThemeData->clrNormalBtBKStart[0][0];
713 m_pThemeData->clrNormalBtBKEnd[1][0] = m_pThemeData->clrNormalBtBKEnd[1][0];
714 m_pThemeData->clrNormalBtBKStart[1][1] =
715 m_pThemeData->clrNormalBtBKStart[0][1];
716 m_pThemeData->clrNormalBtBKEnd[1][1] = m_pThemeData->clrNormalBtBKEnd[0][1];
717 m_pThemeData->clrNormalBtEdgeLight[1][0] =
718 m_pThemeData->clrNormalBtEdgeLight[0][0];
719 m_pThemeData->clrNormalBtEdgeDark[1][0] =
720 m_pThemeData->clrNormalBtEdgeDark[0][0];
721 m_pThemeData->clrNormalBtEdgeLight[1][1] =
722 m_pThemeData->clrNormalBtEdgeLight[0][1];
723 m_pThemeData->clrNormalBtEdgeDark[1][1] =
724 m_pThemeData->clrNormalBtEdgeDark[0][1];
725 m_pThemeData->clrNormalBtEdgeLight[1][2] =
726 m_pThemeData->clrNormalBtEdgeLight[0][2];
727 m_pThemeData->clrNormalBtEdgeDark[1][2] =
728 m_pThemeData->clrNormalBtEdgeDark[0][2];
729 m_pThemeData->clrBtnCornerLight[1][0] = m_pThemeData->clrBtnCornerLight[0][0];
730 m_pThemeData->clrBtnCornerLight[1][1] = m_pThemeData->clrBtnCornerLight[0][1];
731 m_pThemeData->clrBtnCornerLight[1][2] = m_pThemeData->clrBtnCornerLight[0][2];
732 m_pThemeData->clrBtnEdgeOut[1] = m_pThemeData->clrBtnEdgeOut[0];
733 m_pThemeData->clrFormBorder[1][0] = m_pThemeData->clrFormBorder[0][0];
734 m_pThemeData->clrFormBorder[1][1] = m_pThemeData->clrFormBorder[0][1];
735 m_pThemeData->clrFormBorder[1][2] = m_pThemeData->clrFormBorder[0][2];
736 m_pThemeData->clrFormBorder[1][3] = m_pThemeData->clrFormBorder[0][3];
737 m_pThemeData->clrFormBorder[1][4] = m_pThemeData->clrFormBorder[0][4];
738 m_pThemeData->clrFormBorderLight[1] = m_pThemeData->clrFormBorderLight[0];
739 DeactiveForm();
740 }
741 void CFWL_FormTP::DeactiveForm() {
742 TransModeColor(m_pThemeData->clrTransWhite, m_pThemeData->clrHeadBK[1][0]);
743 TransModeColor(m_pThemeData->clrTransWhite, m_pThemeData->clrHeadBK[1][1]);
744 TransModeColor(m_pThemeData->clrTransWhite, m_pThemeData->clrHeadBK[1][2]);
745 TransModeColor(m_pThemeData->clrTransWhite, m_pThemeData->clrHeadBK[1][3]);
746 TransModeColor(m_pThemeData->clrTransWhite,
747 m_pThemeData->clrHeadEdgeLeft[1][0]);
748 TransModeColor(m_pThemeData->clrTransWhite,
749 m_pThemeData->clrHeadEdgeLeft[1][1]);
750 TransModeColor(m_pThemeData->clrTransWhite,
751 m_pThemeData->clrHeadEdgeLeft[1][2]);
752 TransModeColor(m_pThemeData->clrTransWhite,
753 m_pThemeData->clrHeadEdgeRight[1][0]);
754 TransModeColor(m_pThemeData->clrTransWhite,
755 m_pThemeData->clrHeadEdgeRight[1][1]);
756 TransModeColor(m_pThemeData->clrTransWhite,
757 m_pThemeData->clrHeadEdgeRight[1][2]);
758 TransModeColor(m_pThemeData->clrTransWhite,
759 m_pThemeData->clrHeadEdgeTop[1][0]);
760 TransModeColor(m_pThemeData->clrTransWhite,
761 m_pThemeData->clrHeadEdgeTop[1][1]);
762 TransModeColor(m_pThemeData->clrTransWhite,
763 m_pThemeData->clrHeadEdgeTop[1][2]);
764 TransModeColor(m_pThemeData->clrTransWhite,
765 m_pThemeData->clrHeadEdgeBottom[1][0]);
766 TransModeColor(m_pThemeData->clrTransWhite,
767 m_pThemeData->clrHeadEdgeBottom[1][1]);
768 TransModeColor(m_pThemeData->clrTransWhite,
769 m_pThemeData->clrHeadEdgeBottom[1][2]);
770 TransModeColor(m_pThemeData->clrTransWhite,
771 m_pThemeData->clrNormalBtBKStart[1][0]);
772 TransModeColor(m_pThemeData->clrTransWhite,
773 m_pThemeData->clrNormalBtBKStart[1][1]);
774 TransModeColor(m_pThemeData->clrTransWhite,
775 m_pThemeData->clrNormalBtBKStart[1][2]);
776 TransModeColor(m_pThemeData->clrTransWhite,
777 m_pThemeData->clrNormalBtBKEnd[1][0]);
778 TransModeColor(m_pThemeData->clrTransWhite,
779 m_pThemeData->clrNormalBtBKEnd[1][1]);
780 TransModeColor(m_pThemeData->clrTransWhite,
781 m_pThemeData->clrNormalBtBKEnd[1][2]);
782 TransModeColor(m_pThemeData->clrTransWhite,
783 m_pThemeData->clrNormalBtEdgeLight[1][0]);
784 TransModeColor(m_pThemeData->clrTransWhite,
785 m_pThemeData->clrNormalBtEdgeLight[1][1]);
786 TransModeColor(m_pThemeData->clrTransWhite,
787 m_pThemeData->clrNormalBtEdgeLight[1][2]);
788 TransModeColor(m_pThemeData->clrTransWhite,
789 m_pThemeData->clrNormalBtEdgeDark[1][0]);
790 TransModeColor(m_pThemeData->clrTransWhite,
791 m_pThemeData->clrNormalBtEdgeDark[1][1]);
792 TransModeColor(m_pThemeData->clrTransWhite,
793 m_pThemeData->clrNormalBtEdgeDark[1][2]);
794 TransModeColor(m_pThemeData->clrTransWhite,
795 m_pThemeData->clrBtnCornerLight[1][0]);
796 TransModeColor(m_pThemeData->clrTransWhite,
797 m_pThemeData->clrBtnCornerLight[1][1]);
798 TransModeColor(m_pThemeData->clrTransWhite,
799 m_pThemeData->clrBtnCornerLight[1][2]);
800 TransModeColor(m_pThemeData->clrTransWhite, m_pThemeData->clrBtnEdgeOut[1]);
801 TransModeColor(m_pThemeData->clrTransWhite,
802 m_pThemeData->clrFormBorder[1][0]);
803 TransModeColor(m_pThemeData->clrTransWhite,
804 m_pThemeData->clrFormBorder[1][1]);
805 TransModeColor(m_pThemeData->clrTransWhite,
806 m_pThemeData->clrFormBorder[1][2]);
807 TransModeColor(m_pThemeData->clrTransWhite,
808 m_pThemeData->clrFormBorder[1][3]);
809 TransModeColor(m_pThemeData->clrTransWhite,
810 m_pThemeData->clrFormBorder[1][4]);
811 TransModeColor(m_pThemeData->clrTransWhite,
812 m_pThemeData->clrFormBorderLight[1]);
813 TransModeColor(m_pThemeData->clrTransWhite,
814 m_pThemeData->clrCloseBtBKStart[1][0]);
815 TransModeColor(m_pThemeData->clrTransWhite,
816 m_pThemeData->clrCloseBtBKStart[1][1]);
817 TransModeColor(m_pThemeData->clrTransWhite,
818 m_pThemeData->clrCloseBtBKStart[1][2]);
819 TransModeColor(m_pThemeData->clrTransWhite,
820 m_pThemeData->clrCloseBtBKEnd[1][0]);
821 TransModeColor(m_pThemeData->clrTransWhite,
822 m_pThemeData->clrCloseBtBKEnd[1][1]);
823 TransModeColor(m_pThemeData->clrTransWhite,
824 m_pThemeData->clrCloseBtBKEnd[1][2]);
825 TransModeColor(m_pThemeData->clrTransWhite,
826 m_pThemeData->clrCloseBtEdgeLight[1][0]);
827 TransModeColor(m_pThemeData->clrTransWhite,
828 m_pThemeData->clrCloseBtEdgeLight[1][1]);
829 TransModeColor(m_pThemeData->clrTransWhite,
830 m_pThemeData->clrCloseBtEdgeLight[1][2]);
831 TransModeColor(m_pThemeData->clrTransWhite,
832 m_pThemeData->clrCloseBtEdgeDark[1][0]);
833 TransModeColor(m_pThemeData->clrTransWhite,
834 m_pThemeData->clrCloseBtEdgeDark[1][1]);
835 TransModeColor(m_pThemeData->clrTransWhite,
836 m_pThemeData->clrCloseBtEdgeDark[1][2]);
837 }
838 void CFWL_FormTP::TransModeColor(FX_ARGB clrFore, FX_ARGB& clrBack) {
839 int32_t iAlfaF, iRF, iGF, iBF;
840 int32_t iAlfaB, iRB, iGB, iBB;
841 ArgbDecode(clrFore, iAlfaF, iRF, iGF, iBF);
842 ArgbDecode(clrBack, iAlfaB, iRB, iGB, iBB);
843 clrBack = ArgbEncode(0xff, iRB + (iRF - iRB) * iAlfaF / 255,
844 iGB + (iGF - iGB) * iAlfaF / 255,
845 iBB + (iBF - iBB) * iAlfaF / 255);
846 }
847 void CFWL_FormTP::InitCaption(FX_BOOL bActive) {
848 if (bActive) {
849 CFX_FxgeDevice dev;
850 CFX_Graphics gs;
851 CFX_Path path;
852 path.Create();
853 if (m_pActiveBitmap) {
854 delete m_pActiveBitmap;
855 m_pActiveBitmap = NULL;
856 }
857 m_pActiveBitmap = new CFX_DIBitmap;
858 m_pActiveBitmap->Create(1, FWLTHEME_CAPACITY_CYCaption, FXDIB_Argb);
859 dev.Attach(m_pActiveBitmap);
860 gs.Create(&dev);
861 path.AddRectangle(0, 0, 1, 5);
862 DrawAxialShading(&gs, 0, 0, 0, 5, m_pThemeData->clrHeadBK[0][0],
863 m_pThemeData->clrHeadBK[0][1], &path);
864 path.Clear();
865 path.AddRectangle(0, 5, 1, 15);
866 DrawAxialShading(&gs, 0, 5, 0, 20, m_pThemeData->clrHeadBK[0][1],
867 m_pThemeData->clrHeadBK[0][2], &path);
868 path.Clear();
869 path.AddRectangle(0, 20, 1, FWLTHEME_CAPACITY_CYCaption - 19);
870 DrawAxialShading(&gs, 0, 20, 0, FWLTHEME_CAPACITY_CYCaption,
871 m_pThemeData->clrHeadBK[0][2],
872 m_pThemeData->clrHeadBK[0][3], &path);
873 } else {
874 CFX_FxgeDevice dev;
875 CFX_Graphics gs;
876 CFX_Path path;
877 path.Create();
878 if (m_pDeactivebitmap) {
879 delete m_pDeactivebitmap;
880 m_pDeactivebitmap = NULL;
881 }
882 m_pDeactivebitmap = new CFX_DIBitmap;
883 m_pDeactivebitmap->Create(1, FWLTHEME_CAPACITY_CYCaption, FXDIB_Argb);
884 dev.Attach(m_pDeactivebitmap);
885 gs.Create(&dev);
886 path.AddRectangle(0, 0, 1, 5);
887 DrawAxialShading(&gs, 0, 0, 0, 5, m_pThemeData->clrHeadBK[1][0],
888 m_pThemeData->clrHeadBK[1][1], &path);
889 path.Clear();
890 path.AddRectangle(0, 5, 1, 15);
891 DrawAxialShading(&gs, 0, 5, 0, 20, m_pThemeData->clrHeadBK[1][1],
892 m_pThemeData->clrHeadBK[1][2], &path);
893 path.Clear();
894 path.AddRectangle(0, 20, 1, FWLTHEME_CAPACITY_CYCaption - 19);
895 DrawAxialShading(&gs, 0, 20, 0, FWLTHEME_CAPACITY_CYCaption,
896 m_pThemeData->clrHeadBK[1][2],
897 m_pThemeData->clrHeadBK[1][3], &path);
898 }
899 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698