| 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 |