OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include "xfa/fxfa/app/xfa_fwltheme.h" | 7 #include "xfa/fxfa/app/xfa_fwltheme.h" |
8 | 8 |
9 #include "xfa/fde/tto/fde_textout.h" | 9 #include "xfa/fde/tto/fde_textout.h" |
10 #include "xfa/fgas/crt/fgas_codepage.h" | 10 #include "xfa/fgas/crt/fgas_codepage.h" |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
78 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ | 78 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ |
79 m_pCalendarFont = m_pApp->GetFDEFontMgr()->GetDefFontByCodePage( | 79 m_pCalendarFont = m_pApp->GetFDEFontMgr()->GetDefFontByCodePage( |
80 FX_CODEPAGE_MSWin_WesternEuropean, 0, nullptr); | 80 FX_CODEPAGE_MSWin_WesternEuropean, 0, nullptr); |
81 #else | 81 #else |
82 m_pCalendarFont = m_pApp->GetFDEFontMgr()->GetFontByCodePage( | 82 m_pCalendarFont = m_pApp->GetFDEFontMgr()->GetFontByCodePage( |
83 FX_CODEPAGE_MSWin_WesternEuropean, 0, nullptr); | 83 FX_CODEPAGE_MSWin_WesternEuropean, 0, nullptr); |
84 #endif | 84 #endif |
85 } | 85 } |
86 | 86 |
87 ASSERT(m_pCalendarFont); | 87 ASSERT(m_pCalendarFont); |
88 FWLTHEME_Init(); | |
89 return FWL_Error::Succeeded; | 88 return FWL_Error::Succeeded; |
90 } | 89 } |
91 | 90 |
92 FWL_Error CXFA_FWLTheme::Finalize() { | 91 FWL_Error CXFA_FWLTheme::Finalize() { |
93 m_pTextOut.reset(); | 92 m_pTextOut.reset(); |
94 if (m_pCalendarFont) { | 93 if (m_pCalendarFont) { |
95 m_pCalendarFont->Release(); | 94 m_pCalendarFont->Release(); |
96 m_pCalendarFont = nullptr; | 95 m_pCalendarFont = nullptr; |
97 } | 96 } |
98 FWLTHEME_Release(); | 97 FWLTHEME_Release(); |
99 return FWL_Error::Succeeded; | 98 return FWL_Error::Succeeded; |
100 } | 99 } |
101 | 100 |
102 bool CXFA_FWLTheme::IsValidWidget(IFWL_Widget* pWidget) { | |
103 return TRUE; | |
104 } | |
105 | |
106 uint32_t CXFA_FWLTheme::GetThemeID(IFWL_Widget* pWidget) { | |
107 return 0; | |
108 } | |
109 | |
110 uint32_t CXFA_FWLTheme::SetThemeID(IFWL_Widget* pWidget, | |
111 uint32_t dwThemeID, | |
112 FX_BOOL bChildren) { | |
113 return 0; | |
114 } | |
115 | |
116 FWL_Error CXFA_FWLTheme::GetThemeMatrix(IFWL_Widget* pWidget, | |
117 CFX_Matrix& matrix) { | |
118 return FWL_Error::Succeeded; | |
119 } | |
120 | |
121 FWL_Error CXFA_FWLTheme::SetThemeMatrix(IFWL_Widget* pWidget, | |
122 const CFX_Matrix& matrix) { | |
123 return FWL_Error::Succeeded; | |
124 } | |
125 | |
126 FX_BOOL CXFA_FWLTheme::DrawBackground(CFWL_ThemeBackground* pParams) { | 101 FX_BOOL CXFA_FWLTheme::DrawBackground(CFWL_ThemeBackground* pParams) { |
127 return GetTheme(pParams->m_pWidget)->DrawBackground(pParams); | 102 return GetTheme(pParams->m_pWidget)->DrawBackground(pParams); |
128 } | 103 } |
| 104 |
129 FX_BOOL CXFA_FWLTheme::DrawText(CFWL_ThemeText* pParams) { | 105 FX_BOOL CXFA_FWLTheme::DrawText(CFWL_ThemeText* pParams) { |
130 if (pParams->m_wsText.IsEmpty()) | 106 if (pParams->m_wsText.IsEmpty()) |
131 return FALSE; | 107 return FALSE; |
132 | 108 |
133 if (pParams->m_pWidget->GetClassID() == FWL_Type::MonthCalendar) { | 109 if (pParams->m_pWidget->GetClassID() == FWL_Type::MonthCalendar) { |
134 CXFA_FFWidget* pWidget = XFA_ThemeGetOuterWidget(pParams->m_pWidget); | 110 CXFA_FFWidget* pWidget = XFA_ThemeGetOuterWidget(pParams->m_pWidget); |
135 if (!pWidget) | 111 if (!pWidget) |
136 return FALSE; | 112 return FALSE; |
137 | 113 |
138 m_pTextOut->SetStyles(pParams->m_dwTTOStyles); | 114 m_pTextOut->SetStyles(pParams->m_dwTTOStyles); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
186 CFX_Matrix mtPart = pParams->m_matrix; | 162 CFX_Matrix mtPart = pParams->m_matrix; |
187 CFX_Matrix* pMatrix = pGraphics->GetMatrix(); | 163 CFX_Matrix* pMatrix = pGraphics->GetMatrix(); |
188 if (pMatrix) { | 164 if (pMatrix) { |
189 mtPart.Concat(*pMatrix); | 165 mtPart.Concat(*pMatrix); |
190 } | 166 } |
191 m_pTextOut->SetMatrix(mtPart); | 167 m_pTextOut->SetMatrix(mtPart); |
192 m_pTextOut->DrawLogicText(pParams->m_wsText.c_str(), | 168 m_pTextOut->DrawLogicText(pParams->m_wsText.c_str(), |
193 pParams->m_wsText.GetLength(), pParams->m_rtPart); | 169 pParams->m_wsText.GetLength(), pParams->m_rtPart); |
194 return TRUE; | 170 return TRUE; |
195 } | 171 } |
| 172 |
196 void* CXFA_FWLTheme::GetCapacity(CFWL_ThemePart* pThemePart, | 173 void* CXFA_FWLTheme::GetCapacity(CFWL_ThemePart* pThemePart, |
197 CFWL_WidgetCapacity dwCapacity) { | 174 CFWL_WidgetCapacity dwCapacity) { |
198 switch (dwCapacity) { | 175 switch (dwCapacity) { |
199 case CFWL_WidgetCapacity::Font: { | 176 case CFWL_WidgetCapacity::Font: { |
200 if (CXFA_FFWidget* pWidget = | 177 if (CXFA_FFWidget* pWidget = |
201 XFA_ThemeGetOuterWidget(pThemePart->m_pWidget)) { | 178 XFA_ThemeGetOuterWidget(pThemePart->m_pWidget)) { |
202 return pWidget->GetDataAcc()->GetFDEFont(); | 179 return pWidget->GetDataAcc()->GetFDEFont(); |
203 } | 180 } |
204 } break; | 181 } break; |
205 case CFWL_WidgetCapacity::FontSize: { | 182 case CFWL_WidgetCapacity::FontSize: { |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
338 break; | 315 break; |
339 default: | 316 default: |
340 break; | 317 break; |
341 } | 318 } |
342 if (!m_wsResource.IsEmpty()) | 319 if (!m_wsResource.IsEmpty()) |
343 return &m_wsResource; | 320 return &m_wsResource; |
344 } | 321 } |
345 } | 322 } |
346 return GetTheme(pThemePart->m_pWidget)->GetCapacity(pThemePart, dwCapacity); | 323 return GetTheme(pThemePart->m_pWidget)->GetCapacity(pThemePart, dwCapacity); |
347 } | 324 } |
| 325 |
348 FX_BOOL CXFA_FWLTheme::IsCustomizedLayout(IFWL_Widget* pWidget) { | 326 FX_BOOL CXFA_FWLTheme::IsCustomizedLayout(IFWL_Widget* pWidget) { |
349 return GetTheme(pWidget)->IsCustomizedLayout(pWidget); | 327 return GetTheme(pWidget)->IsCustomizedLayout(pWidget); |
350 } | 328 } |
351 | 329 |
352 FWL_Error CXFA_FWLTheme::GetPartRect(CFWL_ThemePart* pThemePart, | |
353 CFX_RectF& rtPart) { | |
354 return FWL_Error::Succeeded; | |
355 } | |
356 FWL_Error CXFA_FWLTheme::GetPartRect(CFWL_ThemePart* pThemePart) { | |
357 CFX_RectF rect; | |
358 return GetTheme(pThemePart->m_pWidget)->GetPartRect(pThemePart, rect); | |
359 } | |
360 FX_BOOL CXFA_FWLTheme::IsInPart(CFWL_ThemePart* pThemePart, | |
361 FX_FLOAT fx, | |
362 FX_FLOAT fy) { | |
363 return GetTheme(pThemePart->m_pWidget)->IsInPart(pThemePart, fx, fy); | |
364 } | |
365 FX_BOOL CXFA_FWLTheme::CalcTextRect(CFWL_ThemeText* pParams, CFX_RectF& rect) { | 330 FX_BOOL CXFA_FWLTheme::CalcTextRect(CFWL_ThemeText* pParams, CFX_RectF& rect) { |
366 if (pParams->m_pWidget->GetClassID() == FWL_Type::MonthCalendar) { | 331 if (pParams->m_pWidget->GetClassID() == FWL_Type::MonthCalendar) { |
367 CXFA_FFWidget* pWidget = XFA_ThemeGetOuterWidget(pParams->m_pWidget); | 332 CXFA_FFWidget* pWidget = XFA_ThemeGetOuterWidget(pParams->m_pWidget); |
368 if (!pWidget) | 333 if (!pWidget) |
369 return FALSE; | 334 return FALSE; |
370 if (!pParams) | 335 if (!pParams) |
371 return FALSE; | 336 return FALSE; |
372 if (!m_pTextOut) | 337 if (!m_pTextOut) |
373 return FALSE; | 338 return FALSE; |
374 m_pTextOut->SetFont(m_pCalendarFont); | 339 m_pTextOut->SetFont(m_pCalendarFont); |
(...skipping 14 matching lines...) Expand all Loading... |
389 m_pTextOut->SetFontSize(pAcc->GetFontSize()); | 354 m_pTextOut->SetFontSize(pAcc->GetFontSize()); |
390 m_pTextOut->SetTextColor(pAcc->GetTextColor()); | 355 m_pTextOut->SetTextColor(pAcc->GetTextColor()); |
391 if (!pParams) | 356 if (!pParams) |
392 return FALSE; | 357 return FALSE; |
393 m_pTextOut->SetAlignment(pParams->m_iTTOAlign); | 358 m_pTextOut->SetAlignment(pParams->m_iTTOAlign); |
394 m_pTextOut->SetStyles(pParams->m_dwTTOStyles); | 359 m_pTextOut->SetStyles(pParams->m_dwTTOStyles); |
395 m_pTextOut->CalcLogicSize(pParams->m_wsText.c_str(), | 360 m_pTextOut->CalcLogicSize(pParams->m_wsText.c_str(), |
396 pParams->m_wsText.GetLength(), rect); | 361 pParams->m_wsText.GetLength(), rect); |
397 return TRUE; | 362 return TRUE; |
398 } | 363 } |
| 364 |
399 CFWL_WidgetTP* CXFA_FWLTheme::GetTheme(IFWL_Widget* pWidget) { | 365 CFWL_WidgetTP* CXFA_FWLTheme::GetTheme(IFWL_Widget* pWidget) { |
400 switch (pWidget->GetClassID()) { | 366 switch (pWidget->GetClassID()) { |
401 case FWL_Type::CheckBox: | 367 case FWL_Type::CheckBox: |
402 return m_pCheckBoxTP.get(); | 368 return m_pCheckBoxTP.get(); |
403 case FWL_Type::ListBox: | 369 case FWL_Type::ListBox: |
404 return m_pListBoxTP.get(); | 370 return m_pListBoxTP.get(); |
405 case FWL_Type::PictureBox: | 371 case FWL_Type::PictureBox: |
406 return m_pPictureBoxTP.get(); | 372 return m_pPictureBoxTP.get(); |
407 case FWL_Type::ScrollBar: | 373 case FWL_Type::ScrollBar: |
408 return m_pSrollBarTP.get(); | 374 return m_pSrollBarTP.get(); |
409 case FWL_Type::Edit: | 375 case FWL_Type::Edit: |
410 return m_pEditTP.get(); | 376 return m_pEditTP.get(); |
411 case FWL_Type::ComboBox: | 377 case FWL_Type::ComboBox: |
412 return m_pComboBoxTP.get(); | 378 return m_pComboBoxTP.get(); |
413 case FWL_Type::MonthCalendar: | 379 case FWL_Type::MonthCalendar: |
414 return m_pMonthCalendarTP.get(); | 380 return m_pMonthCalendarTP.get(); |
415 case FWL_Type::DateTimePicker: | 381 case FWL_Type::DateTimePicker: |
416 return m_pDateTimePickerTP.get(); | 382 return m_pDateTimePickerTP.get(); |
417 case FWL_Type::PushButton: | 383 case FWL_Type::PushButton: |
418 return m_pPushButtonTP.get(); | 384 return m_pPushButtonTP.get(); |
419 case FWL_Type::Caret: | 385 case FWL_Type::Caret: |
420 return m_pCaretTP.get(); | 386 return m_pCaretTP.get(); |
421 case FWL_Type::Barcode: | 387 case FWL_Type::Barcode: |
422 return m_pBarcodeTP.get(); | 388 return m_pBarcodeTP.get(); |
423 default: | 389 default: |
424 return nullptr; | 390 return nullptr; |
425 } | 391 } |
426 } | 392 } |
| 393 |
427 CXFA_FWLCheckBoxTP::CXFA_FWLCheckBoxTP() {} | 394 CXFA_FWLCheckBoxTP::CXFA_FWLCheckBoxTP() {} |
| 395 |
428 FX_BOOL CXFA_FWLCheckBoxTP::DrawBackground(CFWL_ThemeBackground* pParams) { | 396 FX_BOOL CXFA_FWLCheckBoxTP::DrawBackground(CFWL_ThemeBackground* pParams) { |
429 if (pParams->m_iPart != CFWL_Part::CheckBox) { | 397 if (pParams->m_iPart != CFWL_Part::CheckBox) { |
430 return TRUE; | 398 return TRUE; |
431 } | 399 } |
432 if ((pParams->m_dwStates & CFWL_PartState_Checked) || | 400 if ((pParams->m_dwStates & CFWL_PartState_Checked) || |
433 (pParams->m_dwStates & CFWL_PartState_Neutral)) { | 401 (pParams->m_dwStates & CFWL_PartState_Neutral)) { |
434 DrawCheckSign(pParams->m_pWidget, pParams->m_pGraphics, &pParams->m_rtPart, | 402 DrawCheckSign(pParams->m_pWidget, pParams->m_pGraphics, &pParams->m_rtPart, |
435 pParams->m_dwStates, &pParams->m_matrix); | 403 pParams->m_dwStates, &pParams->m_matrix); |
436 } | 404 } |
437 return TRUE; | 405 return TRUE; |
438 } | 406 } |
| 407 |
439 void CXFA_FWLCheckBoxTP::DrawCheckSign(IFWL_Widget* pWidget, | 408 void CXFA_FWLCheckBoxTP::DrawCheckSign(IFWL_Widget* pWidget, |
440 CFX_Graphics* pGraphics, | 409 CFX_Graphics* pGraphics, |
441 const CFX_RectF* pRtBox, | 410 const CFX_RectF* pRtBox, |
442 int32_t iState, | 411 int32_t iState, |
443 CFX_Matrix* pMatrix) { | 412 CFX_Matrix* pMatrix) { |
444 CFX_RectF rtSign(*pRtBox); | 413 CFX_RectF rtSign(*pRtBox); |
445 uint32_t dwColor = 0xFF000000; | 414 uint32_t dwColor = 0xFF000000; |
446 if (iState & CFWL_PartState_Neutral) | 415 if (iState & CFWL_PartState_Neutral) |
447 dwColor = 0xFFA9A9A9; | 416 dwColor = 0xFFA9A9A9; |
448 | 417 |
(...skipping 17 matching lines...) Expand all Loading... |
466 DrawSignSquare(pGraphics, &rtSign, dwColor, pMatrix); | 435 DrawSignSquare(pGraphics, &rtSign, dwColor, pMatrix); |
467 break; | 436 break; |
468 case FWL_STYLEEXT_CKB_SignShapeStar: | 437 case FWL_STYLEEXT_CKB_SignShapeStar: |
469 DrawSignStar(pGraphics, &rtSign, dwColor, pMatrix); | 438 DrawSignStar(pGraphics, &rtSign, dwColor, pMatrix); |
470 break; | 439 break; |
471 default: | 440 default: |
472 break; | 441 break; |
473 } | 442 } |
474 } | 443 } |
475 } | 444 } |
| 445 |
476 CXFA_FWLEditTP::CXFA_FWLEditTP() {} | 446 CXFA_FWLEditTP::CXFA_FWLEditTP() {} |
| 447 |
477 CXFA_FWLEditTP::~CXFA_FWLEditTP() {} | 448 CXFA_FWLEditTP::~CXFA_FWLEditTP() {} |
| 449 |
478 FX_BOOL CXFA_FWLEditTP::DrawBackground(CFWL_ThemeBackground* pParams) { | 450 FX_BOOL CXFA_FWLEditTP::DrawBackground(CFWL_ThemeBackground* pParams) { |
479 if (CFWL_Part::CombTextLine == pParams->m_iPart) { | 451 if (CFWL_Part::CombTextLine == pParams->m_iPart) { |
480 CXFA_FFWidget* pWidget = XFA_ThemeGetOuterWidget(pParams->m_pWidget); | 452 CXFA_FFWidget* pWidget = XFA_ThemeGetOuterWidget(pParams->m_pWidget); |
481 FX_ARGB cr = 0xFF000000; | 453 FX_ARGB cr = 0xFF000000; |
482 FX_FLOAT fWidth = 1.0f; | 454 FX_FLOAT fWidth = 1.0f; |
483 if (CXFA_Border borderUI = pWidget->GetDataAcc()->GetUIBorder()) { | 455 if (CXFA_Border borderUI = pWidget->GetDataAcc()->GetUIBorder()) { |
484 CXFA_Edge edge = borderUI.GetEdge(0); | 456 CXFA_Edge edge = borderUI.GetEdge(0); |
485 if (edge) { | 457 if (edge) { |
486 cr = edge.GetColor(); | 458 cr = edge.GetColor(); |
487 fWidth = edge.GetThickness(); | 459 fWidth = edge.GetThickness(); |
488 } | 460 } |
489 } | 461 } |
490 CFX_Color crLine(cr); | 462 CFX_Color crLine(cr); |
491 pParams->m_pGraphics->SetStrokeColor(&crLine); | 463 pParams->m_pGraphics->SetStrokeColor(&crLine); |
492 pParams->m_pGraphics->SetLineWidth(fWidth); | 464 pParams->m_pGraphics->SetLineWidth(fWidth); |
493 pParams->m_pGraphics->StrokePath(pParams->m_pPath, &pParams->m_matrix); | 465 pParams->m_pGraphics->StrokePath(pParams->m_pPath, &pParams->m_matrix); |
494 return TRUE; | 466 return TRUE; |
495 } | 467 } |
496 return CFWL_EditTP::DrawBackground(pParams); | 468 return CFWL_EditTP::DrawBackground(pParams); |
497 } | 469 } |
OLD | NEW |