| 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/fwl/cfwl_widget.h" | 7 #include "xfa/fwl/cfwl_widget.h" |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 67 | 67 |
| 68 CFX_RectF CFWL_Widget::GetAutosizedWidgetRect() { | 68 CFX_RectF CFWL_Widget::GetAutosizedWidgetRect() { |
| 69 return CFX_RectF(); | 69 return CFX_RectF(); |
| 70 } | 70 } |
| 71 | 71 |
| 72 CFX_RectF CFWL_Widget::GetWidgetRect() { | 72 CFX_RectF CFWL_Widget::GetWidgetRect() { |
| 73 return m_pProperties->m_rtWidget; | 73 return m_pProperties->m_rtWidget; |
| 74 } | 74 } |
| 75 | 75 |
| 76 void CFWL_Widget::InflateWidgetRect(CFX_RectF& rect) { | 76 void CFWL_Widget::InflateWidgetRect(CFX_RectF& rect) { |
| 77 if (HasEdge()) { | |
| 78 FX_FLOAT fEdge = GetEdgeWidth(); | |
| 79 rect.Inflate(fEdge, fEdge); | |
| 80 } | |
| 81 if (HasBorder()) { | 77 if (HasBorder()) { |
| 82 FX_FLOAT fBorder = GetBorderSize(true); | 78 FX_FLOAT fBorder = GetBorderSize(true); |
| 83 rect.Inflate(fBorder, fBorder); | 79 rect.Inflate(fBorder, fBorder); |
| 84 } | 80 } |
| 85 } | 81 } |
| 86 | 82 |
| 87 void CFWL_Widget::SetWidgetRect(const CFX_RectF& rect) { | 83 void CFWL_Widget::SetWidgetRect(const CFX_RectF& rect) { |
| 88 m_pProperties->m_rtWidget = rect; | 84 m_pProperties->m_rtWidget = rect; |
| 89 if (IsChild()) | 85 if (IsChild()) |
| 90 return; | 86 return; |
| 91 | 87 |
| 92 m_pWidgetMgr->SetWidgetRect_Native(this, rect); | 88 m_pWidgetMgr->SetWidgetRect_Native(this, rect); |
| 93 } | 89 } |
| 94 | 90 |
| 95 CFX_RectF CFWL_Widget::GetClientRect() { | 91 CFX_RectF CFWL_Widget::GetClientRect() { |
| 96 CFX_RectF rect = GetEdgeRect(); | 92 return GetEdgeRect(); |
| 97 if (HasEdge()) { | |
| 98 FX_FLOAT fEdge = GetEdgeWidth(); | |
| 99 rect.Deflate(fEdge, fEdge); | |
| 100 } | |
| 101 return rect; | |
| 102 } | 93 } |
| 103 | 94 |
| 104 void CFWL_Widget::SetParent(CFWL_Widget* pParent) { | 95 void CFWL_Widget::SetParent(CFWL_Widget* pParent) { |
| 105 m_pProperties->m_pParent = pParent; | 96 m_pProperties->m_pParent = pParent; |
| 106 m_pWidgetMgr->SetParent(pParent, this); | 97 m_pWidgetMgr->SetParent(pParent, this); |
| 107 } | 98 } |
| 108 | 99 |
| 109 uint32_t CFWL_Widget::GetStyles() const { | 100 uint32_t CFWL_Widget::GetStyles() const { |
| 110 return m_pProperties->m_dwStyles; | 101 return m_pProperties->m_dwStyles; |
| 111 } | 102 } |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 158 return; | 149 return; |
| 159 } | 150 } |
| 160 | 151 |
| 161 void CFWL_Widget::RemoveStates(uint32_t dwStates) { | 152 void CFWL_Widget::RemoveStates(uint32_t dwStates) { |
| 162 m_pProperties->m_dwStates &= ~dwStates; | 153 m_pProperties->m_dwStates &= ~dwStates; |
| 163 } | 154 } |
| 164 | 155 |
| 165 FWL_WidgetHit CFWL_Widget::HitTest(FX_FLOAT fx, FX_FLOAT fy) { | 156 FWL_WidgetHit CFWL_Widget::HitTest(FX_FLOAT fx, FX_FLOAT fy) { |
| 166 if (GetClientRect().Contains(fx, fy)) | 157 if (GetClientRect().Contains(fx, fy)) |
| 167 return FWL_WidgetHit::Client; | 158 return FWL_WidgetHit::Client; |
| 168 if (HasEdge() && GetEdgeRect().Contains(fx, fy)) | |
| 169 return FWL_WidgetHit::Edge; | |
| 170 if (HasBorder() && GetRelativeRect().Contains(fx, fy)) | 159 if (HasBorder() && GetRelativeRect().Contains(fx, fy)) |
| 171 return FWL_WidgetHit::Border; | 160 return FWL_WidgetHit::Border; |
| 172 return FWL_WidgetHit::Unknown; | 161 return FWL_WidgetHit::Unknown; |
| 173 } | 162 } |
| 174 | 163 |
| 175 void CFWL_Widget::TransformTo(CFWL_Widget* pWidget, | 164 void CFWL_Widget::TransformTo(CFWL_Widget* pWidget, |
| 176 FX_FLOAT& fx, | 165 FX_FLOAT& fx, |
| 177 FX_FLOAT& fy) { | 166 FX_FLOAT& fy) { |
| 178 if (m_pWidgetMgr->IsFormDisabled()) { | 167 if (m_pWidgetMgr->IsFormDisabled()) { |
| 179 CFX_SizeF szOffset; | 168 CFX_SizeF szOffset; |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 271 } | 260 } |
| 272 | 261 |
| 273 bool CFWL_Widget::IsEnabled() const { | 262 bool CFWL_Widget::IsEnabled() const { |
| 274 return (m_pProperties->m_dwStates & FWL_WGTSTATE_Disabled) == 0; | 263 return (m_pProperties->m_dwStates & FWL_WGTSTATE_Disabled) == 0; |
| 275 } | 264 } |
| 276 | 265 |
| 277 bool CFWL_Widget::HasBorder() const { | 266 bool CFWL_Widget::HasBorder() const { |
| 278 return !!(m_pProperties->m_dwStyles & FWL_WGTSTYLE_Border); | 267 return !!(m_pProperties->m_dwStyles & FWL_WGTSTYLE_Border); |
| 279 } | 268 } |
| 280 | 269 |
| 281 bool CFWL_Widget::HasEdge() const { | |
| 282 return false; | |
| 283 } | |
| 284 | |
| 285 bool CFWL_Widget::IsVisible() const { | 270 bool CFWL_Widget::IsVisible() const { |
| 286 return (m_pProperties->m_dwStates & FWL_WGTSTATE_Invisible) == 0; | 271 return (m_pProperties->m_dwStates & FWL_WGTSTATE_Invisible) == 0; |
| 287 } | 272 } |
| 288 | 273 |
| 289 bool CFWL_Widget::IsOverLapper() const { | 274 bool CFWL_Widget::IsOverLapper() const { |
| 290 return (m_pProperties->m_dwStyles & FWL_WGTSTYLE_WindowTypeMask) == | 275 return (m_pProperties->m_dwStyles & FWL_WGTSTYLE_WindowTypeMask) == |
| 291 FWL_WGTSTYLE_OverLapper; | 276 FWL_WGTSTYLE_OverLapper; |
| 292 } | 277 } |
| 293 | 278 |
| 294 bool CFWL_Widget::IsPopup() const { | 279 bool CFWL_Widget::IsPopup() const { |
| (...skipping 20 matching lines...) Expand all Loading... |
| 315 } | 300 } |
| 316 | 301 |
| 317 FX_FLOAT CFWL_Widget::GetBorderSize(bool bCX) { | 302 FX_FLOAT CFWL_Widget::GetBorderSize(bool bCX) { |
| 318 FX_FLOAT* pfBorder = static_cast<FX_FLOAT*>(GetThemeCapacity( | 303 FX_FLOAT* pfBorder = static_cast<FX_FLOAT*>(GetThemeCapacity( |
| 319 bCX ? CFWL_WidgetCapacity::CXBorder : CFWL_WidgetCapacity::CYBorder)); | 304 bCX ? CFWL_WidgetCapacity::CXBorder : CFWL_WidgetCapacity::CYBorder)); |
| 320 if (!pfBorder) | 305 if (!pfBorder) |
| 321 return 0; | 306 return 0; |
| 322 return *pfBorder; | 307 return *pfBorder; |
| 323 } | 308 } |
| 324 | 309 |
| 325 FX_FLOAT CFWL_Widget::GetEdgeWidth() { | |
| 326 return 0; | |
| 327 } | |
| 328 | |
| 329 CFX_RectF CFWL_Widget::GetRelativeRect() { | 310 CFX_RectF CFWL_Widget::GetRelativeRect() { |
| 330 CFX_RectF rect = m_pProperties->m_rtWidget; | 311 CFX_RectF rect = m_pProperties->m_rtWidget; |
| 331 rect.left = 0; | 312 rect.left = 0; |
| 332 rect.top = 0; | 313 rect.top = 0; |
| 333 return rect; | 314 return rect; |
| 334 } | 315 } |
| 335 | 316 |
| 336 void* CFWL_Widget::GetThemeCapacity(CFWL_WidgetCapacity dwCapacity) { | 317 void* CFWL_Widget::GetThemeCapacity(CFWL_WidgetCapacity dwCapacity) { |
| 337 IFWL_ThemeProvider* pTheme = GetAvailableTheme(); | 318 IFWL_ThemeProvider* pTheme = GetAvailableTheme(); |
| 338 if (!pTheme) | 319 if (!pTheme) |
| (...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 605 CFWL_ThemeBackground param; | 586 CFWL_ThemeBackground param; |
| 606 param.m_pWidget = this; | 587 param.m_pWidget = this; |
| 607 param.m_iPart = iPartBorder; | 588 param.m_iPart = iPartBorder; |
| 608 param.m_pGraphics = pGraphics; | 589 param.m_pGraphics = pGraphics; |
| 609 if (pMatrix) | 590 if (pMatrix) |
| 610 param.m_matrix.Concat(*pMatrix, true); | 591 param.m_matrix.Concat(*pMatrix, true); |
| 611 param.m_rtPart = GetRelativeRect(); | 592 param.m_rtPart = GetRelativeRect(); |
| 612 pTheme->DrawBackground(¶m); | 593 pTheme->DrawBackground(¶m); |
| 613 } | 594 } |
| 614 | 595 |
| 615 void CFWL_Widget::DrawEdge(CFX_Graphics* pGraphics, | |
| 616 CFWL_Part iPartEdge, | |
| 617 IFWL_ThemeProvider* pTheme, | |
| 618 const CFX_Matrix* pMatrix) { | |
| 619 CFWL_ThemeBackground param; | |
| 620 param.m_pWidget = this; | |
| 621 param.m_iPart = iPartEdge; | |
| 622 param.m_pGraphics = pGraphics; | |
| 623 if (pMatrix) | |
| 624 param.m_matrix.Concat(*pMatrix, true); | |
| 625 param.m_rtPart = GetEdgeRect(); | |
| 626 pTheme->DrawBackground(¶m); | |
| 627 } | |
| 628 | |
| 629 void CFWL_Widget::NotifyDriver() { | 596 void CFWL_Widget::NotifyDriver() { |
| 630 const CFWL_App* pApp = GetOwnerApp(); | 597 const CFWL_App* pApp = GetOwnerApp(); |
| 631 if (!pApp) | 598 if (!pApp) |
| 632 return; | 599 return; |
| 633 | 600 |
| 634 CFWL_NoteDriver* pDriver = | 601 CFWL_NoteDriver* pDriver = |
| 635 static_cast<CFWL_NoteDriver*>(pApp->GetNoteDriver()); | 602 static_cast<CFWL_NoteDriver*>(pApp->GetNoteDriver()); |
| 636 if (!pDriver) | 603 if (!pDriver) |
| 637 return; | 604 return; |
| 638 | 605 |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 685 } | 652 } |
| 686 default: | 653 default: |
| 687 break; | 654 break; |
| 688 } | 655 } |
| 689 } | 656 } |
| 690 | 657 |
| 691 void CFWL_Widget::OnProcessEvent(CFWL_Event* pEvent) {} | 658 void CFWL_Widget::OnProcessEvent(CFWL_Event* pEvent) {} |
| 692 | 659 |
| 693 void CFWL_Widget::OnDrawWidget(CFX_Graphics* pGraphics, | 660 void CFWL_Widget::OnDrawWidget(CFX_Graphics* pGraphics, |
| 694 const CFX_Matrix* pMatrix) {} | 661 const CFX_Matrix* pMatrix) {} |
| OLD | NEW |