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/include/xfa_ffpageview.h" | 7 #include "xfa/fxfa/include/xfa_ffpageview.h" |
8 | 8 |
9 #include "xfa/fde/fde_render.h" | 9 #include "xfa/fde/fde_render.h" |
10 #include "xfa/fxfa/app/xfa_ffcheckbutton.h" | 10 #include "xfa/fxfa/app/xfa_ffcheckbutton.h" |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
147 m_sIterator.Reset(); | 147 m_sIterator.Reset(); |
148 } | 148 } |
149 CXFA_FFWidget* CXFA_FFPageWidgetIterator::MoveToFirst() { | 149 CXFA_FFWidget* CXFA_FFPageWidgetIterator::MoveToFirst() { |
150 m_sIterator.Reset(); | 150 m_sIterator.Reset(); |
151 for (CXFA_LayoutItem* pLayoutItem = m_sIterator.GetCurrent(); pLayoutItem; | 151 for (CXFA_LayoutItem* pLayoutItem = m_sIterator.GetCurrent(); pLayoutItem; |
152 pLayoutItem = m_sIterator.MoveToNext()) { | 152 pLayoutItem = m_sIterator.MoveToNext()) { |
153 if (CXFA_FFWidget* hWidget = GetWidget(pLayoutItem)) { | 153 if (CXFA_FFWidget* hWidget = GetWidget(pLayoutItem)) { |
154 return hWidget; | 154 return hWidget; |
155 } | 155 } |
156 } | 156 } |
157 return NULL; | 157 return nullptr; |
158 } | 158 } |
159 CXFA_FFWidget* CXFA_FFPageWidgetIterator::MoveToLast() { | 159 CXFA_FFWidget* CXFA_FFPageWidgetIterator::MoveToLast() { |
160 m_sIterator.SetCurrent(NULL); | 160 m_sIterator.SetCurrent(nullptr); |
161 return MoveToPrevious(); | 161 return MoveToPrevious(); |
162 } | 162 } |
163 CXFA_FFWidget* CXFA_FFPageWidgetIterator::MoveToNext() { | 163 CXFA_FFWidget* CXFA_FFPageWidgetIterator::MoveToNext() { |
164 for (CXFA_LayoutItem* pLayoutItem = m_sIterator.MoveToNext(); pLayoutItem; | 164 for (CXFA_LayoutItem* pLayoutItem = m_sIterator.MoveToNext(); pLayoutItem; |
165 pLayoutItem = m_sIterator.MoveToNext()) { | 165 pLayoutItem = m_sIterator.MoveToNext()) { |
166 if (CXFA_FFWidget* hWidget = GetWidget(pLayoutItem)) { | 166 if (CXFA_FFWidget* hWidget = GetWidget(pLayoutItem)) { |
167 return hWidget; | 167 return hWidget; |
168 } | 168 } |
169 } | 169 } |
170 return NULL; | 170 return nullptr; |
171 } | 171 } |
172 CXFA_FFWidget* CXFA_FFPageWidgetIterator::MoveToPrevious() { | 172 CXFA_FFWidget* CXFA_FFPageWidgetIterator::MoveToPrevious() { |
173 for (CXFA_LayoutItem* pLayoutItem = m_sIterator.MoveToPrev(); pLayoutItem; | 173 for (CXFA_LayoutItem* pLayoutItem = m_sIterator.MoveToPrev(); pLayoutItem; |
174 pLayoutItem = m_sIterator.MoveToPrev()) { | 174 pLayoutItem = m_sIterator.MoveToPrev()) { |
175 if (CXFA_FFWidget* hWidget = GetWidget(pLayoutItem)) { | 175 if (CXFA_FFWidget* hWidget = GetWidget(pLayoutItem)) { |
176 return hWidget; | 176 return hWidget; |
177 } | 177 } |
178 } | 178 } |
179 return NULL; | 179 return nullptr; |
180 } | 180 } |
181 CXFA_FFWidget* CXFA_FFPageWidgetIterator::GetCurrentWidget() { | 181 CXFA_FFWidget* CXFA_FFPageWidgetIterator::GetCurrentWidget() { |
182 CXFA_LayoutItem* pLayoutItem = m_sIterator.GetCurrent(); | 182 CXFA_LayoutItem* pLayoutItem = m_sIterator.GetCurrent(); |
183 return pLayoutItem ? XFA_GetWidgetFromLayoutItem(pLayoutItem) : NULL; | 183 return pLayoutItem ? XFA_GetWidgetFromLayoutItem(pLayoutItem) : nullptr; |
184 } | 184 } |
185 FX_BOOL CXFA_FFPageWidgetIterator::SetCurrentWidget(CXFA_FFWidget* hWidget) { | 185 FX_BOOL CXFA_FFPageWidgetIterator::SetCurrentWidget(CXFA_FFWidget* hWidget) { |
186 return hWidget && m_sIterator.SetCurrent(hWidget); | 186 return hWidget && m_sIterator.SetCurrent(hWidget); |
187 } | 187 } |
188 CXFA_FFWidget* CXFA_FFPageWidgetIterator::GetWidget( | 188 CXFA_FFWidget* CXFA_FFPageWidgetIterator::GetWidget( |
189 CXFA_LayoutItem* pLayoutItem) { | 189 CXFA_LayoutItem* pLayoutItem) { |
190 if (CXFA_FFWidget* pWidget = XFA_GetWidgetFromLayoutItem(pLayoutItem)) { | 190 if (CXFA_FFWidget* pWidget = XFA_GetWidgetFromLayoutItem(pLayoutItem)) { |
191 if (!PageWidgetFilter(pWidget, m_dwFilter, FALSE, m_bIgnorerelevant)) { | 191 if (!PageWidgetFilter(pWidget, m_dwFilter, FALSE, m_bIgnorerelevant)) { |
192 return NULL; | 192 return nullptr; |
193 } | 193 } |
194 if (!pWidget->IsLoaded() && | 194 if (!pWidget->IsLoaded() && |
195 (pWidget->GetStatus() & XFA_WidgetStatus_Visible) != 0) { | 195 (pWidget->GetStatus() & XFA_WidgetStatus_Visible) != 0) { |
196 pWidget->LoadWidget(); | 196 pWidget->LoadWidget(); |
197 } | 197 } |
198 return pWidget; | 198 return pWidget; |
199 } | 199 } |
200 return NULL; | 200 return nullptr; |
201 } | 201 } |
202 | 202 |
203 CXFA_FFTabOrderPageWidgetIterator::CXFA_FFTabOrderPageWidgetIterator( | 203 CXFA_FFTabOrderPageWidgetIterator::CXFA_FFTabOrderPageWidgetIterator( |
204 CXFA_FFPageView* pPageView, | 204 CXFA_FFPageView* pPageView, |
205 uint32_t dwFilter) | 205 uint32_t dwFilter) |
206 : m_pPageView(pPageView), m_dwFilter(dwFilter), m_iCurWidget(-1) { | 206 : m_pPageView(pPageView), m_dwFilter(dwFilter), m_iCurWidget(-1) { |
207 m_bIgnorerelevant = ((CXFA_FFDoc*)m_pPageView->GetDocView()->GetDoc()) | 207 m_bIgnorerelevant = ((CXFA_FFDoc*)m_pPageView->GetDocView()->GetDoc()) |
208 ->GetXFADoc() | 208 ->GetXFADoc() |
209 ->GetCurVersionMode() < XFA_VERSION_205; | 209 ->GetCurVersionMode() < XFA_VERSION_205; |
210 Reset(); | 210 Reset(); |
211 } | 211 } |
212 | 212 |
213 CXFA_FFTabOrderPageWidgetIterator::~CXFA_FFTabOrderPageWidgetIterator() {} | 213 CXFA_FFTabOrderPageWidgetIterator::~CXFA_FFTabOrderPageWidgetIterator() {} |
214 | 214 |
215 void CXFA_FFTabOrderPageWidgetIterator::Reset() { | 215 void CXFA_FFTabOrderPageWidgetIterator::Reset() { |
216 CreateTabOrderWidgetArray(); | 216 CreateTabOrderWidgetArray(); |
217 m_iCurWidget = -1; | 217 m_iCurWidget = -1; |
218 } | 218 } |
219 CXFA_FFWidget* CXFA_FFTabOrderPageWidgetIterator::MoveToFirst() { | 219 CXFA_FFWidget* CXFA_FFTabOrderPageWidgetIterator::MoveToFirst() { |
220 if (m_TabOrderWidgetArray.GetSize() > 0) { | 220 if (m_TabOrderWidgetArray.GetSize() > 0) { |
221 for (int32_t i = 0; i < m_TabOrderWidgetArray.GetSize(); i++) { | 221 for (int32_t i = 0; i < m_TabOrderWidgetArray.GetSize(); i++) { |
222 if (PageWidgetFilter(m_TabOrderWidgetArray[i], m_dwFilter, TRUE, | 222 if (PageWidgetFilter(m_TabOrderWidgetArray[i], m_dwFilter, TRUE, |
223 m_bIgnorerelevant)) { | 223 m_bIgnorerelevant)) { |
224 m_iCurWidget = i; | 224 m_iCurWidget = i; |
225 return m_TabOrderWidgetArray[m_iCurWidget]; | 225 return m_TabOrderWidgetArray[m_iCurWidget]; |
226 } | 226 } |
227 } | 227 } |
228 } | 228 } |
229 return NULL; | 229 return nullptr; |
230 } | 230 } |
231 CXFA_FFWidget* CXFA_FFTabOrderPageWidgetIterator::MoveToLast() { | 231 CXFA_FFWidget* CXFA_FFTabOrderPageWidgetIterator::MoveToLast() { |
232 if (m_TabOrderWidgetArray.GetSize() > 0) { | 232 if (m_TabOrderWidgetArray.GetSize() > 0) { |
233 for (int32_t i = m_TabOrderWidgetArray.GetSize() - 1; i >= 0; i--) { | 233 for (int32_t i = m_TabOrderWidgetArray.GetSize() - 1; i >= 0; i--) { |
234 if (PageWidgetFilter(m_TabOrderWidgetArray[i], m_dwFilter, TRUE, | 234 if (PageWidgetFilter(m_TabOrderWidgetArray[i], m_dwFilter, TRUE, |
235 m_bIgnorerelevant)) { | 235 m_bIgnorerelevant)) { |
236 m_iCurWidget = i; | 236 m_iCurWidget = i; |
237 return m_TabOrderWidgetArray[m_iCurWidget]; | 237 return m_TabOrderWidgetArray[m_iCurWidget]; |
238 } | 238 } |
239 } | 239 } |
240 } | 240 } |
241 return NULL; | 241 return nullptr; |
242 } | 242 } |
243 CXFA_FFWidget* CXFA_FFTabOrderPageWidgetIterator::MoveToNext() { | 243 CXFA_FFWidget* CXFA_FFTabOrderPageWidgetIterator::MoveToNext() { |
244 for (int32_t i = m_iCurWidget + 1; i < m_TabOrderWidgetArray.GetSize(); i++) { | 244 for (int32_t i = m_iCurWidget + 1; i < m_TabOrderWidgetArray.GetSize(); i++) { |
245 if (PageWidgetFilter(m_TabOrderWidgetArray[i], m_dwFilter, TRUE, | 245 if (PageWidgetFilter(m_TabOrderWidgetArray[i], m_dwFilter, TRUE, |
246 m_bIgnorerelevant)) { | 246 m_bIgnorerelevant)) { |
247 m_iCurWidget = i; | 247 m_iCurWidget = i; |
248 return m_TabOrderWidgetArray[m_iCurWidget]; | 248 return m_TabOrderWidgetArray[m_iCurWidget]; |
249 } | 249 } |
250 } | 250 } |
251 m_iCurWidget = -1; | 251 m_iCurWidget = -1; |
252 return NULL; | 252 return nullptr; |
253 } | 253 } |
254 CXFA_FFWidget* CXFA_FFTabOrderPageWidgetIterator::MoveToPrevious() { | 254 CXFA_FFWidget* CXFA_FFTabOrderPageWidgetIterator::MoveToPrevious() { |
255 for (int32_t i = m_iCurWidget - 1; i >= 0; i--) { | 255 for (int32_t i = m_iCurWidget - 1; i >= 0; i--) { |
256 if (PageWidgetFilter(m_TabOrderWidgetArray[i], m_dwFilter, TRUE, | 256 if (PageWidgetFilter(m_TabOrderWidgetArray[i], m_dwFilter, TRUE, |
257 m_bIgnorerelevant)) { | 257 m_bIgnorerelevant)) { |
258 m_iCurWidget = i; | 258 m_iCurWidget = i; |
259 return m_TabOrderWidgetArray[m_iCurWidget]; | 259 return m_TabOrderWidgetArray[m_iCurWidget]; |
260 } | 260 } |
261 } | 261 } |
262 m_iCurWidget = -1; | 262 m_iCurWidget = -1; |
263 return NULL; | 263 return nullptr; |
264 } | 264 } |
265 CXFA_FFWidget* CXFA_FFTabOrderPageWidgetIterator::GetCurrentWidget() { | 265 CXFA_FFWidget* CXFA_FFTabOrderPageWidgetIterator::GetCurrentWidget() { |
266 if (m_iCurWidget >= 0) { | 266 if (m_iCurWidget >= 0) { |
267 return m_TabOrderWidgetArray[m_iCurWidget]; | 267 return m_TabOrderWidgetArray[m_iCurWidget]; |
268 } | 268 } |
269 return NULL; | 269 return nullptr; |
270 } | 270 } |
271 FX_BOOL CXFA_FFTabOrderPageWidgetIterator::SetCurrentWidget( | 271 FX_BOOL CXFA_FFTabOrderPageWidgetIterator::SetCurrentWidget( |
272 CXFA_FFWidget* hWidget) { | 272 CXFA_FFWidget* hWidget) { |
273 int32_t iWidgetIndex = m_TabOrderWidgetArray.Find(hWidget); | 273 int32_t iWidgetIndex = m_TabOrderWidgetArray.Find(hWidget); |
274 if (iWidgetIndex >= 0) { | 274 if (iWidgetIndex >= 0) { |
275 m_iCurWidget = iWidgetIndex; | 275 m_iCurWidget = iWidgetIndex; |
276 return TRUE; | 276 return TRUE; |
277 } | 277 } |
278 return FALSE; | 278 return FALSE; |
279 } | 279 } |
280 CXFA_FFWidget* CXFA_FFTabOrderPageWidgetIterator::GetTraverseWidget( | 280 CXFA_FFWidget* CXFA_FFTabOrderPageWidgetIterator::GetTraverseWidget( |
281 CXFA_FFWidget* pWidget) { | 281 CXFA_FFWidget* pWidget) { |
282 CXFA_WidgetAcc* pAcc = pWidget->GetDataAcc(); | 282 CXFA_WidgetAcc* pAcc = pWidget->GetDataAcc(); |
283 CXFA_Node* pTraversal = pAcc->GetNode()->GetChild(0, XFA_ELEMENT_Traversal); | 283 CXFA_Node* pTraversal = pAcc->GetNode()->GetChild(0, XFA_ELEMENT_Traversal); |
284 if (pTraversal) { | 284 if (pTraversal) { |
285 CXFA_Node* pTraverse = pTraversal->GetChild(0, XFA_ELEMENT_Traverse); | 285 CXFA_Node* pTraverse = pTraversal->GetChild(0, XFA_ELEMENT_Traverse); |
286 if (pTraverse) { | 286 if (pTraverse) { |
287 CFX_WideString wsTraverseWidgetName; | 287 CFX_WideString wsTraverseWidgetName; |
288 if (pTraverse->GetAttribute(XFA_ATTRIBUTE_Ref, wsTraverseWidgetName)) { | 288 if (pTraverse->GetAttribute(XFA_ATTRIBUTE_Ref, wsTraverseWidgetName)) { |
289 return FindWidgetByName(wsTraverseWidgetName, pWidget); | 289 return FindWidgetByName(wsTraverseWidgetName, pWidget); |
290 } | 290 } |
291 } | 291 } |
292 } | 292 } |
293 return NULL; | 293 return nullptr; |
294 } | 294 } |
295 CXFA_FFWidget* CXFA_FFTabOrderPageWidgetIterator::FindWidgetByName( | 295 CXFA_FFWidget* CXFA_FFTabOrderPageWidgetIterator::FindWidgetByName( |
296 const CFX_WideString& wsWidgetName, | 296 const CFX_WideString& wsWidgetName, |
297 CXFA_FFWidget* pRefWidget) { | 297 CXFA_FFWidget* pRefWidget) { |
298 return pRefWidget->GetDocView()->GetWidgetByName(wsWidgetName, pRefWidget); | 298 return pRefWidget->GetDocView()->GetWidgetByName(wsWidgetName, pRefWidget); |
299 } | 299 } |
300 void CXFA_FFTabOrderPageWidgetIterator::CreateTabOrderWidgetArray() { | 300 void CXFA_FFTabOrderPageWidgetIterator::CreateTabOrderWidgetArray() { |
301 m_TabOrderWidgetArray.RemoveAll(); | 301 m_TabOrderWidgetArray.RemoveAll(); |
302 CXFA_WidgetArray SpaceOrderWidgetArray; | 302 CXFA_WidgetArray SpaceOrderWidgetArray; |
303 CreateSpaceOrderWidgetArray(SpaceOrderWidgetArray); | 303 CreateSpaceOrderWidgetArray(SpaceOrderWidgetArray); |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
404 } | 404 } |
405 tabParams.RemoveAll(); | 405 tabParams.RemoveAll(); |
406 } | 406 } |
407 void CXFA_FFTabOrderPageWidgetIterator::CreateSpaceOrderWidgetArray( | 407 void CXFA_FFTabOrderPageWidgetIterator::CreateSpaceOrderWidgetArray( |
408 CXFA_WidgetArray& WidgetArray) { | 408 CXFA_WidgetArray& WidgetArray) { |
409 CXFA_LayoutItemIterator sIterator; | 409 CXFA_LayoutItemIterator sIterator; |
410 sIterator.Init(m_pPageView); | 410 sIterator.Init(m_pPageView); |
411 CXFA_TabParam* pParam = new CXFA_TabParam; | 411 CXFA_TabParam* pParam = new CXFA_TabParam; |
412 FX_BOOL bCurrentItem = FALSE; | 412 FX_BOOL bCurrentItem = FALSE; |
413 FX_BOOL bContentArea = FALSE; | 413 FX_BOOL bContentArea = FALSE; |
414 OrderContainer(&sIterator, NULL, pParam, bCurrentItem, bContentArea); | 414 OrderContainer(&sIterator, nullptr, pParam, bCurrentItem, bContentArea); |
415 if (pParam->m_Children.GetSize() > 0) { | 415 if (pParam->m_Children.GetSize() > 0) { |
416 WidgetArray.Append(pParam->m_Children); | 416 WidgetArray.Append(pParam->m_Children); |
417 } | 417 } |
418 sIterator.Reset(); | 418 sIterator.Reset(); |
419 bCurrentItem = FALSE; | 419 bCurrentItem = FALSE; |
420 bContentArea = FALSE; | 420 bContentArea = FALSE; |
421 pParam->m_Children.RemoveAll(); | 421 pParam->m_Children.RemoveAll(); |
422 OrderContainer(&sIterator, NULL, pParam, bCurrentItem, bContentArea, TRUE); | 422 OrderContainer(&sIterator, nullptr, pParam, bCurrentItem, bContentArea, TRUE); |
423 if (pParam->m_Children.GetSize() > 0) { | 423 if (pParam->m_Children.GetSize() > 0) { |
424 WidgetArray.Append(pParam->m_Children); | 424 WidgetArray.Append(pParam->m_Children); |
425 } | 425 } |
426 delete pParam; | 426 delete pParam; |
427 } | 427 } |
428 CXFA_FFWidget* CXFA_FFTabOrderPageWidgetIterator::GetWidget( | 428 CXFA_FFWidget* CXFA_FFTabOrderPageWidgetIterator::GetWidget( |
429 CXFA_LayoutItem* pLayoutItem) { | 429 CXFA_LayoutItem* pLayoutItem) { |
430 if (CXFA_FFWidget* pWidget = XFA_GetWidgetFromLayoutItem(pLayoutItem)) { | 430 if (CXFA_FFWidget* pWidget = XFA_GetWidgetFromLayoutItem(pLayoutItem)) { |
431 if (!pWidget->IsLoaded() && | 431 if (!pWidget->IsLoaded() && |
432 (pWidget->GetStatus() & XFA_WidgetStatus_Visible)) { | 432 (pWidget->GetStatus() & XFA_WidgetStatus_Visible)) { |
433 pWidget->LoadWidget(); | 433 pWidget->LoadWidget(); |
434 } | 434 } |
435 return pWidget; | 435 return pWidget; |
436 } | 436 } |
437 return NULL; | 437 return nullptr; |
438 } | 438 } |
OLD | NEW |