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

Side by Side Diff: xfa/fwl/core/cfwl_widget.cpp

Issue 2556873004: Convert GetWidgetRect to return rect. (Closed)
Patch Set: Review feedback Created 4 years 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
« no previous file with comments | « xfa/fwl/core/cfwl_widget.h ('k') | xfa/fwl/core/cfwl_widgetmgr.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/core/cfwl_widget.h" 7 #include "xfa/fwl/core/cfwl_widget.h"
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <utility> 10 #include <utility>
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 58
59 CFWL_Widget::~CFWL_Widget() { 59 CFWL_Widget::~CFWL_Widget() {
60 NotifyDriver(); 60 NotifyDriver();
61 m_pWidgetMgr->RemoveWidget(this); 61 m_pWidgetMgr->RemoveWidget(this);
62 } 62 }
63 63
64 bool CFWL_Widget::IsInstance(const CFX_WideStringC& wsClass) const { 64 bool CFWL_Widget::IsInstance(const CFX_WideStringC& wsClass) const {
65 return false; 65 return false;
66 } 66 }
67 67
68 void CFWL_Widget::GetWidgetRect(CFX_RectF& rect, bool bAutoSize) { 68 CFX_RectF CFWL_Widget::GetAutosizedWidgetRect() {
69 if (!bAutoSize) { 69 return CFX_RectF();
70 rect = m_pProperties->m_rtWidget; 70 }
71 return; 71
72 } 72 CFX_RectF CFWL_Widget::GetWidgetRect() {
73 InflateWidgetRect(rect); 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()) { 77 if (HasEdge()) {
78 FX_FLOAT fEdge = GetEdgeWidth(); 78 FX_FLOAT fEdge = GetEdgeWidth();
79 rect.Inflate(fEdge, fEdge); 79 rect.Inflate(fEdge, fEdge);
80 } 80 }
81 if (HasBorder()) { 81 if (HasBorder()) {
82 FX_FLOAT fBorder = GetBorderSize(true); 82 FX_FLOAT fBorder = GetBorderSize(true);
83 rect.Inflate(fBorder, fBorder); 83 rect.Inflate(fBorder, fBorder);
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 szOffset.y = -szOffset.y; 194 szOffset.y = -szOffset.y;
195 } 195 }
196 fx += szOffset.x; 196 fx += szOffset.x;
197 fy += szOffset.y; 197 fy += szOffset.y;
198 return; 198 return;
199 } 199 }
200 CFX_RectF r; 200 CFX_RectF r;
201 CFX_Matrix m; 201 CFX_Matrix m;
202 CFWL_Widget* parent = GetParent(); 202 CFWL_Widget* parent = GetParent();
203 if (parent) { 203 if (parent) {
204 GetWidgetRect(r, false); 204 r = GetWidgetRect();
205 fx += r.left; 205 fx += r.left;
206 fy += r.top; 206 fy += r.top;
207 GetMatrix(m, true); 207 GetMatrix(m, true);
208 m.TransformPoint(fx, fy); 208 m.TransformPoint(fx, fy);
209 } 209 }
210 CFWL_Widget* form1 = m_pWidgetMgr->GetSystemFormWidget(this); 210 CFWL_Widget* form1 = m_pWidgetMgr->GetSystemFormWidget(this);
211 if (!form1) 211 if (!form1)
212 return; 212 return;
213
213 if (!pWidget) { 214 if (!pWidget) {
214 form1->GetWidgetRect(r, false); 215 r = form1->GetWidgetRect();
215 fx += r.left; 216 fx += r.left;
216 fy += r.top; 217 fy += r.top;
217 return; 218 return;
218 } 219 }
219 CFWL_Widget* form2 = m_pWidgetMgr->GetSystemFormWidget(pWidget); 220 CFWL_Widget* form2 = m_pWidgetMgr->GetSystemFormWidget(pWidget);
220 if (!form2) 221 if (!form2)
221 return; 222 return;
222 if (form1 != form2) { 223 if (form1 != form2) {
223 form1->GetWidgetRect(r, false); 224 r = form1->GetWidgetRect();
224 fx += r.left; 225 fx += r.left;
225 fy += r.top; 226 fy += r.top;
226 form2->GetWidgetRect(r, false); 227 r = form2->GetWidgetRect();
227 fx -= r.left; 228 fx -= r.left;
228 fy -= r.top; 229 fy -= r.top;
229 } 230 }
230 parent = pWidget->GetParent(); 231 parent = pWidget->GetParent();
231 if (parent) { 232 if (parent) {
232 pWidget->GetMatrix(m, true); 233 pWidget->GetMatrix(m, true);
233 CFX_Matrix m1; 234 CFX_Matrix m1;
234 m1.SetIdentity(); 235 m1.SetIdentity();
235 m1.SetReverse(m); 236 m1.SetReverse(m);
236 m1.TransformPoint(fx, fy); 237 m1.TransformPoint(fx, fy);
237 pWidget->GetWidgetRect(r, false); 238 r = pWidget->GetWidgetRect();
238 fx -= r.left; 239 fx -= r.left;
239 fy -= r.top; 240 fy -= r.top;
240 } 241 }
241 } 242 }
242 243
243 void CFWL_Widget::GetMatrix(CFX_Matrix& matrix, bool bGlobal) { 244 void CFWL_Widget::GetMatrix(CFX_Matrix& matrix, bool bGlobal) {
244 if (!m_pProperties) 245 if (!m_pProperties)
245 return; 246 return;
246 if (!bGlobal) { 247 if (!bGlobal) {
247 matrix.SetIdentity(); 248 matrix.SetIdentity();
248 return; 249 return;
249 } 250 }
250 251
251 CFWL_Widget* parent = GetParent(); 252 CFWL_Widget* parent = GetParent();
252 CFX_ArrayTemplate<CFWL_Widget*> parents; 253 CFX_ArrayTemplate<CFWL_Widget*> parents;
253 while (parent) { 254 while (parent) {
254 parents.Add(parent); 255 parents.Add(parent);
255 parent = parent->GetParent(); 256 parent = parent->GetParent();
256 } 257 }
257 matrix.SetIdentity(); 258 matrix.SetIdentity();
258 CFX_Matrix ctmOnParent; 259 CFX_Matrix ctmOnParent;
259 CFX_RectF rect; 260 CFX_RectF rect;
260 int32_t count = parents.GetSize(); 261 int32_t count = parents.GetSize();
261 for (int32_t i = count - 2; i >= 0; i--) { 262 for (int32_t i = count - 2; i >= 0; i--) {
262 parent = parents.GetAt(i); 263 parent = parents.GetAt(i);
263 parent->GetMatrix(ctmOnParent, false); 264 parent->GetMatrix(ctmOnParent, false);
264 parent->GetWidgetRect(rect, false); 265 rect = parent->GetWidgetRect();
265 matrix.Concat(ctmOnParent, true); 266 matrix.Concat(ctmOnParent, true);
266 matrix.Translate(rect.left, rect.top, true); 267 matrix.Translate(rect.left, rect.top, true);
267 } 268 }
268 CFX_Matrix m; 269 CFX_Matrix m;
269 m.SetIdentity(); 270 m.SetIdentity();
270 matrix.Concat(m, true); 271 matrix.Concat(m, true);
271 parents.RemoveAll(); 272 parents.RemoveAll();
272 } 273 }
273 274
274 IFWL_ThemeProvider* CFWL_Widget::GetThemeProvider() const { 275 IFWL_ThemeProvider* CFWL_Widget::GetThemeProvider() const {
(...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after
679 680
680 CFWL_WidgetMgr* pWidgetMgr = GetOwnerApp()->GetWidgetMgr(); 681 CFWL_WidgetMgr* pWidgetMgr = GetOwnerApp()->GetWidgetMgr();
681 if (!pWidgetMgr) 682 if (!pWidgetMgr)
682 return CFX_SizeF(); 683 return CFX_SizeF();
683 684
684 CFX_SizeF szRet(m_pProperties->m_rtWidget.left, 685 CFX_SizeF szRet(m_pProperties->m_rtWidget.left,
685 m_pProperties->m_rtWidget.top); 686 m_pProperties->m_rtWidget.top);
686 687
687 CFWL_Widget* pDstWidget = GetParent(); 688 CFWL_Widget* pDstWidget = GetParent();
688 while (pDstWidget && pDstWidget != pParent) { 689 while (pDstWidget && pDstWidget != pParent) {
689 CFX_RectF rtDst; 690 CFX_RectF rtDst = pDstWidget->GetWidgetRect();
690 pDstWidget->GetWidgetRect(rtDst, false);
691 szRet += CFX_SizeF(rtDst.left, rtDst.top); 691 szRet += CFX_SizeF(rtDst.left, rtDst.top);
692 pDstWidget = pWidgetMgr->GetParentWidget(pDstWidget); 692 pDstWidget = pWidgetMgr->GetParentWidget(pDstWidget);
693 } 693 }
694 return szRet; 694 return szRet;
695 } 695 }
696 696
697 bool CFWL_Widget::IsParent(CFWL_Widget* pParent) { 697 bool CFWL_Widget::IsParent(CFWL_Widget* pParent) {
698 CFWL_Widget* pUpWidget = GetParent(); 698 CFWL_Widget* pUpWidget = GetParent();
699 while (pUpWidget) { 699 while (pUpWidget) {
700 if (pUpWidget == pParent) 700 if (pUpWidget == pParent)
(...skipping 19 matching lines...) Expand all
720 } 720 }
721 default: 721 default:
722 break; 722 break;
723 } 723 }
724 } 724 }
725 725
726 void CFWL_Widget::OnProcessEvent(CFWL_Event* pEvent) {} 726 void CFWL_Widget::OnProcessEvent(CFWL_Event* pEvent) {}
727 727
728 void CFWL_Widget::OnDrawWidget(CFX_Graphics* pGraphics, 728 void CFWL_Widget::OnDrawWidget(CFX_Graphics* pGraphics,
729 const CFX_Matrix* pMatrix) {} 729 const CFX_Matrix* pMatrix) {}
OLDNEW
« no previous file with comments | « xfa/fwl/core/cfwl_widget.h ('k') | xfa/fwl/core/cfwl_widgetmgr.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698