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