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 #include "xfa/include/fwl/theme/monthcalendartp.h" | |
8 | |
9 #include "xfa/fde/tto/fde_textout.h" | |
10 #include "xfa/fwl/basewidget/ifwl_monthcalendar.h" | |
11 #include "xfa/fwl/core/cfwl_themebackground.h" | |
12 #include "xfa/fwl/core/cfwl_themetext.h" | |
13 #include "xfa/fwl/core/ifwl_themeprovider.h" | |
14 #include "xfa/fwl/core/ifwl_widget.h" | |
15 #include "xfa/fxgraphics/cfx_color.h" | |
16 #include "xfa/fxgraphics/cfx_path.h" | |
17 | |
18 #define FWL_THEMECAPACITY_MC_HEADER_WIDTH 200 | |
19 #define FWL_THEMECAPACITY_MC_HEADER_HEIGHT 30 | |
20 #define FWL_THEMECAPACITY_MC_HEADER_BTN_WIDTH 18 | |
21 #define FWL_THEMECAPACITY_MC_HEADER_BTN_HEIGHT 16 | |
22 #define FWL_THEMECAPACITY_MC_HEADER_BTN_HMARGIN 5 | |
23 #define FWL_THEMECAPACITY_MC_HEADER_BTN_VMARGIN \ | |
24 (FWL_THEMECAPACITY_MC_HEADER_HEIGHT - \ | |
25 FWL_THEMECAPACITY_MC_HEADER_BTN_HEIGHT) / \ | |
26 2 | |
27 #define FWL_THEMECAPACITY_MC_HEADER_TEXTWIDHT 100 | |
28 #define FWL_THEMECAPACITY_MC_HEADER_TEXTHEIGHT 20 | |
29 #define FWL_THEMECAPACITY_MC_HEADER_TEXT_HMARGIN \ | |
30 (FWL_THEMECAPACITY_MC_HEADER_WIDTH - \ | |
31 FWL_THEMECAPACITY_MC_HEADER_TEXTWIDHT) / \ | |
32 2 | |
33 #define FWL_THEMECAPACITY_MC_HEADER_TEXT_VMARGIN \ | |
34 (FWL_THEMECAPACITY_MC_HEADER_HEIGHT - \ | |
35 FWL_THEMECAPACITY_MC_HEADER_TEXTHEIGHT) / \ | |
36 2 | |
37 #define FWL_THEMECAPACITY_MC_HSEP_WIDTH (FWL_THEMECAPACITY_MC_WEEK_WIDTH - 10) | |
38 #define FWL_THEMECAPACITY_MC_HSEP_HEIGHT 1 | |
39 #define FWL_THEMECAPACITY_MC_VSEP_WIDTH 1 | |
40 #define FWL_THEMECAPACITY_MC_VSEP_HEIGHT FWL_THEMECAPACITY_MC_WEEKNUM_HEIGHT | |
41 #define FWL_THEMECAPACITY_MC_WEEKNUM_WIDTH 26 | |
42 #define FWL_THEMECAPACITY_MC_SEP_DOFFSET -4 | |
43 #define FWL_THEMECAPACITY_MC_SEP_X 3 | |
44 #define FWL_THEMECAPACITY_MC_SEP_Y \ | |
45 (FWL_THEMECAPACITY_MC_HEADER_HEIGHT + FWL_THEMECAPACITY_MC_WEEK_HEIGHT + \ | |
46 FWL_THEMECAPACITY_MC_SEP_DOFFSET) | |
47 #define FWL_THEMECAPACITY_MC_WEEKNUM_HEIGHT \ | |
48 (6 * FWL_THEMECAPACITY_MC_DATES_CELL_HEIGHT) | |
49 #define FWL_THEMECAPACITY_MC_WEEK_WIDTH \ | |
50 (FWL_THEMECAPACITY_MC_DATES_CELL_WIDTH * 7) | |
51 #define FWL_THEMECAPACITY_MC_WEEK_HEIGHT FWL_THEMECAPACITY_MC_DATES_CELL_HEIGHT | |
52 #define FWL_THEMECAPACITY_MC_DATES_CELL_WIDTH \ | |
53 (FWL_THEMECAPACITY_MC_HEADER_WIDTH / 7) | |
54 #define FWL_THEMECAPACITY_MC_DATES_CELL_HEIGHT 16 | |
55 #define FWL_THEMECAPACITY_MC_TODAY_WIDHT FWL_THEMECAPACITY_MC_HEADER_WIDTH | |
56 #define FWL_THEMECAPACITY_MC_TODAY_HEIGHT FWL_THEMECAPACITY_MC_DATES_CELL_HEIGHT | |
57 #define FWL_THEMECAPACITY_MC_TODAY_FLAG_WIDHT \ | |
58 FWL_THEMECAPACITY_MC_DATES_CELL_WIDTH | |
59 #define FWL_MC_WIDTH 200 | |
60 #define FWL_MC_HEIGHT 160 | |
61 | |
62 CFWL_MonthCalendarTP::CFWL_MonthCalendarTP() { | |
63 m_pThemeData = new MCThemeData; | |
64 SetThemeData(0); | |
65 } | |
66 CFWL_MonthCalendarTP::~CFWL_MonthCalendarTP() { | |
67 delete m_pThemeData; | |
68 } | |
69 FX_BOOL CFWL_MonthCalendarTP::IsValidWidget(IFWL_Widget* pWidget) { | |
70 if (!pWidget) | |
71 return FALSE; | |
72 return pWidget->GetClassID() == FWL_CLASSHASH_MonthCalendar; | |
73 } | |
74 uint32_t CFWL_MonthCalendarTP::SetThemeID(IFWL_Widget* pWidget, | |
75 uint32_t dwThemeID, | |
76 FX_BOOL bChildren) { | |
77 if (m_pThemeData) { | |
78 SetThemeData(FWL_GetThemeColor(dwThemeID)); | |
79 } | |
80 return CFWL_WidgetTP::SetThemeID(pWidget, dwThemeID, bChildren); | |
81 } | |
82 FX_BOOL CFWL_MonthCalendarTP::DrawBackground(CFWL_ThemeBackground* pParams) { | |
83 if (!pParams) | |
84 return FALSE; | |
85 switch (pParams->m_iPart) { | |
86 case FWL_PART_MCD_Border: { | |
87 DrawBorder(pParams->m_pGraphics, &pParams->m_rtPart, &pParams->m_matrix); | |
88 break; | |
89 } | |
90 case FWL_PART_MCD_Edge: { | |
91 DrawEdge(pParams->m_pGraphics, pParams->m_pWidget->GetStyles(), | |
92 &pParams->m_rtPart, &pParams->m_matrix); | |
93 break; | |
94 } | |
95 case FWL_PART_MCD_Background: { | |
96 DrawTotalBK(pParams, &pParams->m_matrix); | |
97 break; | |
98 } | |
99 case FWL_PART_MCD_Header: { | |
100 DrawHeadBk(pParams, &pParams->m_matrix); | |
101 break; | |
102 } | |
103 case FWL_PART_MCD_LBtn: { | |
104 #ifdef THEME_XPSimilar | |
105 FWLTHEME_STATE eState = GetState(pParams->m_dwStates); | |
106 DrawArrowBtn(pParams->m_pGraphics, &pParams->m_rtPart, | |
107 FWLTHEME_DIRECTION_Left, eState, &pParams->m_matrix); | |
108 #else | |
109 DrawLButton(pParams, &pParams->m_matrix); | |
110 #endif | |
111 break; | |
112 } | |
113 case FWL_PART_MCD_RBtn: { | |
114 #ifdef THEME_XPSimilar | |
115 FWLTHEME_STATE eState = GetState(pParams->m_dwStates); | |
116 DrawArrowBtn(pParams->m_pGraphics, &pParams->m_rtPart, | |
117 FWLTHEME_DIRECTION_Right, eState, &pParams->m_matrix); | |
118 #else | |
119 DrawRButton(pParams, &pParams->m_matrix); | |
120 #endif | |
121 break; | |
122 } | |
123 case FWL_PART_MCD_HSeparator: { | |
124 DrawHSeperator(pParams, &pParams->m_matrix); | |
125 break; | |
126 } | |
127 case FWL_PART_MCD_DatesIn: { | |
128 DrawDatesInBK(pParams, &pParams->m_matrix); | |
129 break; | |
130 } | |
131 case FWL_PART_MCD_TodayCircle: { | |
132 DrawTodayCircle(pParams, &pParams->m_matrix); | |
133 break; | |
134 } | |
135 case FWL_PART_MCD_DateInCircle: { | |
136 DrawDatesInCircle(pParams, &pParams->m_matrix); | |
137 break; | |
138 } | |
139 case FWL_PART_MCD_WeekNumSep: { | |
140 DrawWeekNumSep(pParams, &pParams->m_matrix); | |
141 break; | |
142 } | |
143 default: {} | |
144 } | |
145 return TRUE; | |
146 } | |
147 FX_BOOL CFWL_MonthCalendarTP::DrawText(CFWL_ThemeText* pParams) { | |
148 if (!m_pTextOut) | |
149 return FALSE; | |
150 if ((pParams->m_iPart == FWL_PART_MCD_DatesIn) && | |
151 !(pParams->m_dwStates & FWL_ITEMSTATE_MCD_Flag) && | |
152 (pParams->m_dwStates & | |
153 (FWL_PARTSTATE_MCD_Hovered | FWL_PARTSTATE_MCD_Selected))) { | |
154 m_pTextOut->SetTextColor(0xFFFFFFFF); | |
155 } else if (pParams->m_iPart == FWL_PART_MCD_Caption) { | |
156 m_pTextOut->SetTextColor(m_pThemeData->clrCaption); | |
157 } else { | |
158 m_pTextOut->SetTextColor(0xFF000000); | |
159 } | |
160 return CFWL_WidgetTP::DrawText(pParams); | |
161 } | |
162 void* CFWL_MonthCalendarTP::GetCapacity(CFWL_ThemePart* pThemePart, | |
163 uint32_t dwCapacity) { | |
164 FX_BOOL bDefPro = FALSE; | |
165 FX_BOOL bDwordVal = FALSE; | |
166 switch (dwCapacity) { | |
167 case FWL_WGTCAPACITY_MC_HEADER_WIDTH: { | |
168 m_fValue = FWL_THEMECAPACITY_MC_HEADER_WIDTH; | |
169 break; | |
170 } | |
171 case FWL_WGTCAPACITY_MC_HEADER_Height: { | |
172 m_fValue = FWL_THEMECAPACITY_MC_HEADER_HEIGHT; | |
173 break; | |
174 } | |
175 case FWL_WGTCAPACITY_MC_HEADER_BTN_WIDTH: { | |
176 m_fValue = FWL_THEMECAPACITY_MC_HEADER_BTN_WIDTH; | |
177 break; | |
178 } | |
179 case FWL_WGTCAPACITY_MC_HEADER_BTN_HEIGHT: { | |
180 m_fValue = FWL_THEMECAPACITY_MC_HEADER_BTN_HEIGHT; | |
181 break; | |
182 } | |
183 case FWL_WGTCAPACITY_MC_HEADER_BTN_HMARGIN: { | |
184 bDwordVal = TRUE; | |
185 m_dwValue = FWL_THEMECAPACITY_MC_HEADER_BTN_HMARGIN; | |
186 break; | |
187 } | |
188 case FWL_WGTCAPACITY_MC_HEADER_BTN_VMARGIN: { | |
189 m_fValue = FWL_THEMECAPACITY_MC_HEADER_BTN_VMARGIN; | |
190 break; | |
191 } | |
192 case FWL_WGTCAPACITY_MC_HEADER_TEXTWIDHT: { | |
193 m_fValue = FWL_THEMECAPACITY_MC_HEADER_TEXTWIDHT; | |
194 break; | |
195 } | |
196 case FWL_WGTCAPACITY_MC_HEADER_TEXTHEIGHT: { | |
197 m_fValue = FWL_THEMECAPACITY_MC_HEADER_TEXTHEIGHT; | |
198 break; | |
199 } | |
200 case FWL_WGTCAPACITY_MC_HEADER_TEXT_HMARGIN: { | |
201 m_fValue = FWL_THEMECAPACITY_MC_HEADER_TEXT_HMARGIN; | |
202 break; | |
203 } | |
204 case FWL_WGTCAPACITY_MC_HEADER_TEXT_VMARGIN: { | |
205 m_fValue = FWL_THEMECAPACITY_MC_HEADER_TEXT_VMARGIN; | |
206 break; | |
207 } | |
208 case FWL_WGTCAPACITY_MC_HSEP_WIDTH: { | |
209 m_fValue = FWL_THEMECAPACITY_MC_HSEP_WIDTH; | |
210 break; | |
211 } | |
212 case FWL_WGTCAPACITY_MC_HSEP_HEIGHT: { | |
213 m_fValue = FWL_THEMECAPACITY_MC_HSEP_HEIGHT; | |
214 break; | |
215 } | |
216 case FWL_WGTCAPACITY_MC_VSEP_WIDTH: { | |
217 m_fValue = FWL_THEMECAPACITY_MC_VSEP_WIDTH; | |
218 break; | |
219 } | |
220 case FWL_WGTCAPACITY_MC_VSEP_HEIGHT: { | |
221 m_fValue = FWL_THEMECAPACITY_MC_VSEP_HEIGHT; | |
222 break; | |
223 } | |
224 case FWL_WGTCAPACITY_MC_WEEKNUM_WIDTH: { | |
225 m_fValue = FWL_THEMECAPACITY_MC_WEEKNUM_WIDTH; | |
226 break; | |
227 } | |
228 case FWL_WGTCAPACITY_MC_WEEKNUM_HEIGHT: { | |
229 m_fValue = FWL_THEMECAPACITY_MC_WEEKNUM_HEIGHT; | |
230 break; | |
231 } | |
232 case FWL_WGTCAPACITY_MC_WEEK_WIDTH: { | |
233 m_fValue = FWL_THEMECAPACITY_MC_WEEK_WIDTH; | |
234 break; | |
235 } | |
236 case FWL_WGTCAPACITY_MC_WEEK_HEIGHT: { | |
237 m_fValue = FWL_THEMECAPACITY_MC_WEEK_HEIGHT; | |
238 break; | |
239 } | |
240 case FWL_WGTCAPACITY_MC_SEP_DOFFSET: { | |
241 m_fValue = FWL_THEMECAPACITY_MC_SEP_DOFFSET; | |
242 break; | |
243 } | |
244 case FWL_WGTCAPACITY_MC_SEP_X: { | |
245 m_fValue = FWL_THEMECAPACITY_MC_SEP_X; | |
246 break; | |
247 } | |
248 case FWL_WGTCAPACITY_MC_SEP_Y: { | |
249 m_fValue = FWL_THEMECAPACITY_MC_SEP_Y; | |
250 break; | |
251 } | |
252 case FWL_WGTCAPACITY_MC_DATES_CELL_WIDTH: { | |
253 m_fValue = FWL_THEMECAPACITY_MC_DATES_CELL_WIDTH; | |
254 break; | |
255 } | |
256 case FWL_WGTCAPACITY_MC_DATES_CELL_HEIGHT: { | |
257 m_fValue = FWL_THEMECAPACITY_MC_DATES_CELL_HEIGHT; | |
258 break; | |
259 } | |
260 case FWL_WGTCAPACITY_MC_TODAY_WIDHT: { | |
261 m_fValue = FWL_THEMECAPACITY_MC_TODAY_WIDHT; | |
262 break; | |
263 } | |
264 case FWL_WGTCAPACITY_MC_TODAY_HEIGHT: { | |
265 m_fValue = FWL_THEMECAPACITY_MC_TODAY_HEIGHT; | |
266 break; | |
267 } | |
268 case FWL_WGTCAPACITY_MC_TODAY_FLAG_WIDHT: { | |
269 m_fValue = FWL_THEMECAPACITY_MC_TODAY_FLAG_WIDHT; | |
270 break; | |
271 } | |
272 case FWL_WGTCAPACITY_MC_WIDTH: { | |
273 m_fValue = FWL_MC_WIDTH; | |
274 break; | |
275 } | |
276 case FWL_WGTCAPACITY_MC_HEIGHT: { | |
277 m_fValue = FWL_MC_HEIGHT; | |
278 break; | |
279 } | |
280 case FWL_MCCAPACITY_Sun: { | |
281 wsResource = L"Sun"; | |
282 return &wsResource; | |
283 } | |
284 case FWL_MCCAPACITY_Mon: { | |
285 wsResource = L"Mon"; | |
286 return &wsResource; | |
287 } | |
288 case FWL_MCCAPACITY_Tue: { | |
289 wsResource = L"Tue"; | |
290 return &wsResource; | |
291 } | |
292 case FWL_MCCAPACITY_Wed: { | |
293 wsResource = L"Wed"; | |
294 return &wsResource; | |
295 } | |
296 case FWL_MCCAPACITY_Thu: { | |
297 wsResource = L"Thu"; | |
298 return &wsResource; | |
299 } | |
300 case FWL_MCCAPACITY_Fri: { | |
301 wsResource = L"Fri"; | |
302 return &wsResource; | |
303 } | |
304 case FWL_MCCAPACITY_Sat: { | |
305 wsResource = L"Sat"; | |
306 return &wsResource; | |
307 } | |
308 case FWL_MCCAPACITY_January: { | |
309 wsResource = L"January"; | |
310 return &wsResource; | |
311 } | |
312 case FWL_MCCAPACITY_February: { | |
313 wsResource = L"February"; | |
314 return &wsResource; | |
315 } | |
316 case FWL_MCCAPACITY_March: { | |
317 wsResource = L"March"; | |
318 return &wsResource; | |
319 } | |
320 case FWL_MCCAPACITY_April: { | |
321 wsResource = L"April"; | |
322 return &wsResource; | |
323 } | |
324 case FWL_MCCAPACITY_May: { | |
325 wsResource = L"May"; | |
326 return &wsResource; | |
327 } | |
328 case FWL_MCCAPACITY_June: { | |
329 wsResource = L"June"; | |
330 return &wsResource; | |
331 } | |
332 case FWL_MCCAPACITY_July: { | |
333 wsResource = L"July"; | |
334 return &wsResource; | |
335 } | |
336 case FWL_MCCAPACITY_August: { | |
337 wsResource = L"August"; | |
338 return &wsResource; | |
339 } | |
340 case FWL_MCCAPACITY_September: { | |
341 wsResource = L"September"; | |
342 return &wsResource; | |
343 } | |
344 case FWL_MCCAPACITY_October: { | |
345 wsResource = L"October"; | |
346 return &wsResource; | |
347 } | |
348 case FWL_MCCAPACITY_November: { | |
349 wsResource = L"November"; | |
350 return &wsResource; | |
351 } | |
352 case FWL_MCCAPACITY_December: { | |
353 wsResource = L"December"; | |
354 return &wsResource; | |
355 } | |
356 case FWL_MCCAPACITY_Today: { | |
357 wsResource = L"Today"; | |
358 return &wsResource; | |
359 } | |
360 default: { bDefPro = TRUE; } | |
361 } | |
362 if (!bDefPro) { | |
363 if (bDwordVal) { | |
364 return &m_dwValue; | |
365 } | |
366 return &m_fValue; | |
367 } | |
368 return CFWL_WidgetTP::GetCapacity(pThemePart, dwCapacity); | |
369 } | |
370 FWL_ERR CFWL_MonthCalendarTP::Initialize() { | |
371 InitTTO(); | |
372 return CFWL_WidgetTP::Initialize(); | |
373 } | |
374 FWL_ERR CFWL_MonthCalendarTP::Finalize() { | |
375 FinalizeTTO(); | |
376 return CFWL_WidgetTP::Finalize(); | |
377 } | |
378 FX_BOOL CFWL_MonthCalendarTP::DrawTotalBK(CFWL_ThemeBackground* pParams, | |
379 CFX_Matrix* pMatrix) { | |
380 CFX_Path path; | |
381 path.Create(); | |
382 CFX_RectF rtTotal(pParams->m_rtPart); | |
383 path.AddRectangle(rtTotal.left, rtTotal.top, rtTotal.width, rtTotal.height); | |
384 pParams->m_pGraphics->SaveGraphState(); | |
385 CFX_Color clrBK(m_pThemeData->clrBK); | |
386 pParams->m_pGraphics->SetFillColor(&clrBK); | |
387 pParams->m_pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix); | |
388 pParams->m_pGraphics->RestoreGraphState(); | |
389 return TRUE; | |
390 } | |
391 FX_BOOL CFWL_MonthCalendarTP::DrawHeadBk(CFWL_ThemeBackground* pParams, | |
392 CFX_Matrix* pMatrix) { | |
393 CFX_Path path; | |
394 path.Create(); | |
395 CFX_RectF rtHead = pParams->m_rtPart; | |
396 path.AddRectangle(rtHead.left, rtHead.top, rtHead.width, rtHead.height); | |
397 pParams->m_pGraphics->SaveGraphState(); | |
398 CFX_Color clrHeadBK(m_pThemeData->clrBK); | |
399 pParams->m_pGraphics->SetFillColor(&clrHeadBK); | |
400 pParams->m_pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix); | |
401 pParams->m_pGraphics->RestoreGraphState(); | |
402 return TRUE; | |
403 } | |
404 FX_BOOL CFWL_MonthCalendarTP::DrawLButton(CFWL_ThemeBackground* pParams, | |
405 CFX_Matrix* pMatrix) { | |
406 CFX_Path path; | |
407 path.Create(); | |
408 CFX_RectF rtLBtn; | |
409 rtLBtn = pParams->m_rtPart; | |
410 path.AddRectangle(rtLBtn.left, rtLBtn.top, rtLBtn.width, rtLBtn.height); | |
411 pParams->m_pGraphics->SaveGraphState(); | |
412 CFX_Color clrLBtnEdge(ArgbEncode(0xff, 205, 219, 243)); | |
413 pParams->m_pGraphics->SetStrokeColor(&clrLBtnEdge); | |
414 pParams->m_pGraphics->StrokePath(&path, pMatrix); | |
415 if ((pParams->m_dwStates & FWL_PARTSTATE_MCD_Pressed) == | |
416 FWL_PARTSTATE_MCD_Pressed) { | |
417 CFX_Color clrLBtnFill(ArgbEncode(0xff, 174, 198, 242)); | |
418 pParams->m_pGraphics->SetFillColor(&clrLBtnFill); | |
419 pParams->m_pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix); | |
420 } else { | |
421 CFX_Color clrLBtnFill(ArgbEncode(0xff, 227, 235, 249)); | |
422 pParams->m_pGraphics->SetFillColor(&clrLBtnFill); | |
423 pParams->m_pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix); | |
424 } | |
425 path.Clear(); | |
426 path.MoveTo(rtLBtn.left + rtLBtn.Width() / 3 * 2, | |
427 rtLBtn.top + rtLBtn.height / 4); | |
428 path.LineTo(rtLBtn.left + rtLBtn.Width() / 3, rtLBtn.top + rtLBtn.height / 2); | |
429 path.LineTo(rtLBtn.left + rtLBtn.Width() / 3 * 2, | |
430 rtLBtn.bottom() - rtLBtn.height / 4); | |
431 CFX_Color clrFlag(ArgbEncode(0xff, 50, 104, 205)); | |
432 pParams->m_pGraphics->SetStrokeColor(&clrFlag); | |
433 pParams->m_pGraphics->StrokePath(&path, pMatrix); | |
434 pParams->m_pGraphics->RestoreGraphState(); | |
435 return TRUE; | |
436 } | |
437 FX_BOOL CFWL_MonthCalendarTP::DrawRButton(CFWL_ThemeBackground* pParams, | |
438 CFX_Matrix* pMatrix) { | |
439 CFX_Path path; | |
440 path.Create(); | |
441 CFX_RectF rtRBtn; | |
442 rtRBtn = pParams->m_rtPart; | |
443 path.AddRectangle(rtRBtn.left, rtRBtn.top, rtRBtn.width, rtRBtn.height); | |
444 pParams->m_pGraphics->SaveGraphState(); | |
445 CFX_Color clrRBtnEdge(ArgbEncode(0xff, 205, 219, 243)); | |
446 pParams->m_pGraphics->SetStrokeColor(&clrRBtnEdge); | |
447 pParams->m_pGraphics->StrokePath(&path, pMatrix); | |
448 if ((pParams->m_dwStates & FWL_PARTSTATE_MCD_Pressed) == | |
449 FWL_PARTSTATE_MCD_Pressed) { | |
450 CFX_Color clrRBtnFill(ArgbEncode(0xff, 174, 198, 242)); | |
451 pParams->m_pGraphics->SetFillColor(&clrRBtnFill); | |
452 pParams->m_pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix); | |
453 } else { | |
454 CFX_Color clrRBtnFill(ArgbEncode(0xff, 227, 235, 249)); | |
455 pParams->m_pGraphics->SetFillColor(&clrRBtnFill); | |
456 pParams->m_pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix); | |
457 } | |
458 path.Clear(); | |
459 path.MoveTo(rtRBtn.left + rtRBtn.Width() / 3, rtRBtn.top + rtRBtn.height / 4); | |
460 path.LineTo(rtRBtn.left + rtRBtn.Width() / 3 * 2, | |
461 rtRBtn.top + rtRBtn.height / 2); | |
462 path.LineTo(rtRBtn.left + rtRBtn.Width() / 3, | |
463 rtRBtn.bottom() - rtRBtn.height / 4); | |
464 CFX_Color clrFlag(ArgbEncode(0xff, 50, 104, 205)); | |
465 pParams->m_pGraphics->SetStrokeColor(&clrFlag); | |
466 pParams->m_pGraphics->StrokePath(&path, pMatrix); | |
467 pParams->m_pGraphics->RestoreGraphState(); | |
468 return TRUE; | |
469 } | |
470 FX_BOOL CFWL_MonthCalendarTP::DrawHSeperator(CFWL_ThemeBackground* pParams, | |
471 CFX_Matrix* pMatrix) { | |
472 CFX_Path path; | |
473 path.Create(); | |
474 CFX_RectF rtHSep; | |
475 rtHSep = pParams->m_rtPart; | |
476 path.MoveTo(rtHSep.left, rtHSep.top + rtHSep.height / 2); | |
477 path.LineTo(rtHSep.right(), rtHSep.top + rtHSep.height / 2); | |
478 pParams->m_pGraphics->SaveGraphState(); | |
479 CFX_Color clrHSep(m_pThemeData->clrSeperator); | |
480 pParams->m_pGraphics->SetStrokeColor(&clrHSep); | |
481 pParams->m_pGraphics->StrokePath(&path, pMatrix); | |
482 pParams->m_pGraphics->RestoreGraphState(); | |
483 return TRUE; | |
484 } | |
485 FX_BOOL CFWL_MonthCalendarTP::DrawWeekNumSep(CFWL_ThemeBackground* pParams, | |
486 CFX_Matrix* pMatrix) { | |
487 CFX_Path path; | |
488 path.Create(); | |
489 CFX_RectF rtWeekSep; | |
490 rtWeekSep = pParams->m_rtPart; | |
491 path.MoveTo(rtWeekSep.left, rtWeekSep.top); | |
492 path.LineTo(rtWeekSep.left, rtWeekSep.bottom()); | |
493 pParams->m_pGraphics->SaveGraphState(); | |
494 CFX_Color clrHSep(m_pThemeData->clrSeperator); | |
495 pParams->m_pGraphics->SetStrokeColor(&clrHSep); | |
496 pParams->m_pGraphics->StrokePath(&path, pMatrix); | |
497 pParams->m_pGraphics->RestoreGraphState(); | |
498 return TRUE; | |
499 } | |
500 FX_BOOL CFWL_MonthCalendarTP::DrawDatesInBK(CFWL_ThemeBackground* pParams, | |
501 CFX_Matrix* pMatrix) { | |
502 pParams->m_pGraphics->SaveGraphState(); | |
503 if (pParams->m_dwStates & FWL_PARTSTATE_MCD_Selected) { | |
504 CFX_Path path; | |
505 path.Create(); | |
506 CFX_RectF rtSelDay; | |
507 rtSelDay = pParams->m_rtPart; | |
508 path.AddRectangle(rtSelDay.left, rtSelDay.top, rtSelDay.width, | |
509 rtSelDay.height); | |
510 CFX_Color clrSelDayBK; | |
511 clrSelDayBK = m_pThemeData->clrDatesSelectedBK; | |
512 pParams->m_pGraphics->SetFillColor(&clrSelDayBK); | |
513 pParams->m_pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix); | |
514 } else if (pParams->m_dwStates & FWL_PARTSTATE_MCD_Hovered) { | |
515 CFX_Path path; | |
516 path.Create(); | |
517 CFX_RectF rtSelDay; | |
518 rtSelDay = pParams->m_rtPart; | |
519 path.AddRectangle(rtSelDay.left, rtSelDay.top, rtSelDay.width, | |
520 rtSelDay.height); | |
521 CFX_Color clrSelDayBK; | |
522 clrSelDayBK = m_pThemeData->clrDatesHoverBK; | |
523 pParams->m_pGraphics->SetFillColor(&clrSelDayBK); | |
524 pParams->m_pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix); | |
525 } | |
526 pParams->m_pGraphics->RestoreGraphState(); | |
527 return FALSE; | |
528 } | |
529 FX_BOOL CFWL_MonthCalendarTP::DrawDatesInCircle(CFWL_ThemeBackground* pParams, | |
530 CFX_Matrix* pMatrix) { | |
531 CFX_Path path; | |
532 path.Create(); | |
533 CFX_RectF rtSelDay; | |
534 rtSelDay = pParams->m_rtPart; | |
535 path.AddRectangle(rtSelDay.left, rtSelDay.top, rtSelDay.width, | |
536 rtSelDay.height); | |
537 pParams->m_pGraphics->SaveGraphState(); | |
538 CFX_Color clrSelDayBK; | |
539 clrSelDayBK = m_pThemeData->clrDatesCircle; | |
540 pParams->m_pGraphics->SetStrokeColor(&clrSelDayBK); | |
541 pParams->m_pGraphics->StrokePath(&path, pMatrix); | |
542 pParams->m_pGraphics->RestoreGraphState(); | |
543 return TRUE; | |
544 } | |
545 FX_BOOL CFWL_MonthCalendarTP::DrawTodayCircle(CFWL_ThemeBackground* pParams, | |
546 CFX_Matrix* pMatrix) { | |
547 CFX_Path path; | |
548 path.Create(); | |
549 CFX_RectF rtTodayCircle; | |
550 rtTodayCircle = pParams->m_rtPart; | |
551 path.AddRectangle(rtTodayCircle.left, rtTodayCircle.top, rtTodayCircle.width, | |
552 rtTodayCircle.height); | |
553 pParams->m_pGraphics->SaveGraphState(); | |
554 CFX_Color clrTodayCircle; | |
555 clrTodayCircle = m_pThemeData->clrDatesCircle; | |
556 pParams->m_pGraphics->SetStrokeColor(&clrTodayCircle); | |
557 pParams->m_pGraphics->StrokePath(&path, pMatrix); | |
558 pParams->m_pGraphics->RestoreGraphState(); | |
559 return TRUE; | |
560 } | |
561 FWLTHEME_STATE CFWL_MonthCalendarTP::GetState(uint32_t dwFWLStates) { | |
562 if (dwFWLStates & FWL_PARTSTATE_MCD_Hovered) { | |
563 return FWLTHEME_STATE_Hover; | |
564 } else if (dwFWLStates & FWL_PARTSTATE_MCD_Pressed) { | |
565 return FWLTHEME_STATE_Pressed; | |
566 } | |
567 return FWLTHEME_STATE_Normal; | |
568 } | |
569 void CFWL_MonthCalendarTP::SetThemeData(uint32_t dwThemeID) { | |
570 if (dwThemeID == 0) { | |
571 m_pThemeData->clrCaption = ArgbEncode(0xff, 0, 153, 255); | |
572 m_pThemeData->clrSeperator = ArgbEncode(0xff, 141, 161, 239); | |
573 m_pThemeData->clrDatesHoverBK = ArgbEncode(0xff, 193, 211, 251); | |
574 m_pThemeData->clrDatesSelectedBK = ArgbEncode(0xff, 173, 188, 239); | |
575 m_pThemeData->clrDatesCircle = ArgbEncode(0xff, 103, 144, 209); | |
576 m_pThemeData->clrToday = ArgbEncode(0xff, 0, 0, 0); | |
577 m_pThemeData->clrBK = ArgbEncode(0xff, 255, 255, 255); | |
578 } else { | |
579 m_pThemeData->clrCaption = ArgbEncode(0xff, 128, 128, 0); | |
580 m_pThemeData->clrSeperator = ArgbEncode(0xff, 128, 128, 64); | |
581 m_pThemeData->clrDatesHoverBK = ArgbEncode(0xff, 217, 220, 191); | |
582 m_pThemeData->clrDatesSelectedBK = ArgbEncode(0xff, 204, 208, 183); | |
583 m_pThemeData->clrDatesCircle = ArgbEncode(0xff, 128, 128, 0); | |
584 m_pThemeData->clrToday = ArgbEncode(0xff, 0, 0, 0); | |
585 m_pThemeData->clrBK = ArgbEncode(0xff, 255, 255, 255); | |
586 } | |
587 } | |
OLD | NEW |