| 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/parser/xfa_script_layoutpseudomodel.h" | 7 #include "xfa/fxfa/parser/xfa_script_layoutpseudomodel.h" |
| 8 | 8 |
| 9 #include <set> | 9 #include <set> |
| 10 | 10 |
| 11 #include "fxjse/include/cfxjse_arguments.h" | 11 #include "fxjse/include/cfxjse_arguments.h" |
| 12 #include "third_party/base/stl_util.h" | 12 #include "third_party/base/stl_util.h" |
| 13 #include "xfa/fxfa/app/xfa_ffnotify.h" | 13 #include "xfa/fxfa/app/xfa_ffnotify.h" |
| 14 #include "xfa/fxfa/parser/xfa_doclayout.h" | 14 #include "xfa/fxfa/parser/xfa_doclayout.h" |
| 15 #include "xfa/fxfa/parser/xfa_document.h" | 15 #include "xfa/fxfa/parser/xfa_document.h" |
| 16 #include "xfa/fxfa/parser/xfa_document_layout_imp.h" | 16 #include "xfa/fxfa/parser/xfa_document_layout_imp.h" |
| 17 #include "xfa/fxfa/parser/xfa_layout_appadapter.h" | 17 #include "xfa/fxfa/parser/xfa_layout_appadapter.h" |
| 18 #include "xfa/fxfa/parser/xfa_localemgr.h" | 18 #include "xfa/fxfa/parser/xfa_localemgr.h" |
| 19 #include "xfa/fxfa/parser/xfa_object.h" | 19 #include "xfa/fxfa/parser/xfa_object.h" |
| 20 #include "xfa/fxfa/parser/xfa_parser.h" | |
| 21 #include "xfa/fxfa/parser/xfa_parser_imp.h" | 20 #include "xfa/fxfa/parser/xfa_parser_imp.h" |
| 22 #include "xfa/fxfa/parser/xfa_script.h" | 21 #include "xfa/fxfa/parser/xfa_script.h" |
| 23 #include "xfa/fxfa/parser/xfa_script_imp.h" | 22 #include "xfa/fxfa/parser/xfa_script_imp.h" |
| 24 #include "xfa/fxfa/parser/xfa_utils.h" | 23 #include "xfa/fxfa/parser/xfa_utils.h" |
| 25 | 24 |
| 26 CScript_LayoutPseudoModel::CScript_LayoutPseudoModel(CXFA_Document* pDocument) | 25 CScript_LayoutPseudoModel::CScript_LayoutPseudoModel(CXFA_Document* pDocument) |
| 27 : CXFA_Object(pDocument, | 26 : CXFA_Object(pDocument, |
| 28 XFA_ObjectType::Object, | 27 XFA_ObjectType::Object, |
| 29 XFA_Element::LayoutPseudoModel) {} | 28 XFA_Element::LayoutPseudoModel) {} |
| 30 CScript_LayoutPseudoModel::~CScript_LayoutPseudoModel() {} | 29 CScript_LayoutPseudoModel::~CScript_LayoutPseudoModel() {} |
| 31 void CScript_LayoutPseudoModel::Script_LayoutPseudoModel_Ready( | 30 void CScript_LayoutPseudoModel::Script_LayoutPseudoModel_Ready( |
| 32 CFXJSE_Value* pValue, | 31 CFXJSE_Value* pValue, |
| 33 FX_BOOL bSetting, | 32 FX_BOOL bSetting, |
| 34 XFA_ATTRIBUTE eAttribute) { | 33 XFA_ATTRIBUTE eAttribute) { |
| 35 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 34 CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); |
| 36 if (!pNotify) { | 35 if (!pNotify) { |
| 37 return; | 36 return; |
| 38 } | 37 } |
| 39 if (bSetting) { | 38 if (bSetting) { |
| 40 ThrowException(XFA_IDS_UNABLE_SET_READY); | 39 ThrowException(XFA_IDS_UNABLE_SET_READY); |
| 41 return; | 40 return; |
| 42 } | 41 } |
| 43 int32_t iStatus = pNotify->GetLayoutStatus(); | 42 int32_t iStatus = pNotify->GetLayoutStatus(); |
| 44 pValue->SetBoolean(iStatus >= 2); | 43 pValue->SetBoolean(iStatus >= 2); |
| 45 } | 44 } |
| (...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 350 if (iLength >= 1) { | 349 if (iLength >= 1) { |
| 351 iIndex = pArguments->GetInt32(0); | 350 iIndex = pArguments->GetInt32(0); |
| 352 } | 351 } |
| 353 if (iLength >= 2) { | 352 if (iLength >= 2) { |
| 354 CFX_ByteString bsType = pArguments->GetUTF8String(1); | 353 CFX_ByteString bsType = pArguments->GetUTF8String(1); |
| 355 wsType = CFX_WideString::FromUTF8(bsType.AsStringC()); | 354 wsType = CFX_WideString::FromUTF8(bsType.AsStringC()); |
| 356 } | 355 } |
| 357 if (iLength >= 3) { | 356 if (iLength >= 3) { |
| 358 bOnPageArea = pArguments->GetInt32(2) == 0 ? FALSE : TRUE; | 357 bOnPageArea = pArguments->GetInt32(2) == 0 ? FALSE : TRUE; |
| 359 } | 358 } |
| 360 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 359 CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); |
| 361 if (!pNotify) { | 360 if (!pNotify) { |
| 362 return; | 361 return; |
| 363 } | 362 } |
| 364 CXFA_LayoutProcessor* pDocLayout = m_pDocument->GetDocLayout(); | 363 CXFA_LayoutProcessor* pDocLayout = m_pDocument->GetDocLayout(); |
| 365 if (!pDocLayout) { | 364 if (!pDocLayout) { |
| 366 return; | 365 return; |
| 367 } | 366 } |
| 368 CXFA_NodeArray retArray; | 367 CXFA_NodeArray retArray; |
| 369 Script_LayoutPseudoModel_GetObjArray(pDocLayout, iIndex, wsType, bOnPageArea, | 368 Script_LayoutPseudoModel_GetObjArray(pDocLayout, iIndex, wsType, bOnPageArea, |
| 370 retArray); | 369 retArray); |
| 371 CXFA_ArrayNodeList* pArrayNodeList = new CXFA_ArrayNodeList(m_pDocument); | 370 CXFA_ArrayNodeList* pArrayNodeList = new CXFA_ArrayNodeList(m_pDocument); |
| 372 pArrayNodeList->SetArrayNodeList(retArray); | 371 pArrayNodeList->SetArrayNodeList(retArray); |
| 373 pArguments->GetReturnValue()->SetObject( | 372 pArguments->GetReturnValue()->SetObject( |
| 374 pArrayNodeList, m_pDocument->GetScriptContext()->GetJseNormalClass()); | 373 pArrayNodeList, m_pDocument->GetScriptContext()->GetJseNormalClass()); |
| 375 } | 374 } |
| 376 void CScript_LayoutPseudoModel::Script_LayoutPseudoModel_AbsPageCount( | 375 void CScript_LayoutPseudoModel::Script_LayoutPseudoModel_AbsPageCount( |
| 377 CFXJSE_Arguments* pArguments) { | 376 CFXJSE_Arguments* pArguments) { |
| 378 Script_LayoutPseudoModel_NumberedPageCount(pArguments, FALSE); | 377 Script_LayoutPseudoModel_NumberedPageCount(pArguments, FALSE); |
| 379 } | 378 } |
| 380 void CScript_LayoutPseudoModel::Script_LayoutPseudoModel_AbsPageCountInBatch( | 379 void CScript_LayoutPseudoModel::Script_LayoutPseudoModel_AbsPageCountInBatch( |
| 381 CFXJSE_Arguments* pArguments) { | 380 CFXJSE_Arguments* pArguments) { |
| 382 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 381 CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); |
| 383 if (!pNotify) { | 382 if (!pNotify) { |
| 384 return; | 383 return; |
| 385 } | 384 } |
| 386 CXFA_FFDoc* hDoc = pNotify->GetHDOC(); | 385 CXFA_FFDoc* hDoc = pNotify->GetHDOC(); |
| 387 int32_t iPageCount = pNotify->GetDocProvider()->AbsPageCountInBatch(hDoc); | 386 int32_t iPageCount = pNotify->GetDocProvider()->AbsPageCountInBatch(hDoc); |
| 388 CFXJSE_Value* pValue = pArguments->GetReturnValue(); | 387 CFXJSE_Value* pValue = pArguments->GetReturnValue(); |
| 389 if (pValue) | 388 if (pValue) |
| 390 pValue->SetInteger(iPageCount); | 389 pValue->SetInteger(iPageCount); |
| 391 } | 390 } |
| 392 void CScript_LayoutPseudoModel::Script_LayoutPseudoModel_SheetCountInBatch( | 391 void CScript_LayoutPseudoModel::Script_LayoutPseudoModel_SheetCountInBatch( |
| 393 CFXJSE_Arguments* pArguments) { | 392 CFXJSE_Arguments* pArguments) { |
| 394 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 393 CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); |
| 395 if (!pNotify) { | 394 if (!pNotify) { |
| 396 return; | 395 return; |
| 397 } | 396 } |
| 398 CXFA_FFDoc* hDoc = pNotify->GetHDOC(); | 397 CXFA_FFDoc* hDoc = pNotify->GetHDOC(); |
| 399 int32_t iPageCount = pNotify->GetDocProvider()->SheetCountInBatch(hDoc); | 398 int32_t iPageCount = pNotify->GetDocProvider()->SheetCountInBatch(hDoc); |
| 400 CFXJSE_Value* pValue = pArguments->GetReturnValue(); | 399 CFXJSE_Value* pValue = pArguments->GetReturnValue(); |
| 401 if (pValue) | 400 if (pValue) |
| 402 pValue->SetInteger(iPageCount); | 401 pValue->SetInteger(iPageCount); |
| 403 } | 402 } |
| 404 void CScript_LayoutPseudoModel::Script_LayoutPseudoModel_Relayout( | 403 void CScript_LayoutPseudoModel::Script_LayoutPseudoModel_Relayout( |
| (...skipping 19 matching lines...) Expand all Loading... |
| 424 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"absPageInBatch"); | 423 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"absPageInBatch"); |
| 425 return; | 424 return; |
| 426 } | 425 } |
| 427 CXFA_Node* pNode = nullptr; | 426 CXFA_Node* pNode = nullptr; |
| 428 if (iLength >= 1) { | 427 if (iLength >= 1) { |
| 429 pNode = static_cast<CXFA_Node*>(pArguments->GetObject(0)); | 428 pNode = static_cast<CXFA_Node*>(pArguments->GetObject(0)); |
| 430 } | 429 } |
| 431 if (!pNode) { | 430 if (!pNode) { |
| 432 return; | 431 return; |
| 433 } | 432 } |
| 434 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 433 CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); |
| 435 if (!pNotify) { | 434 if (!pNotify) { |
| 436 return; | 435 return; |
| 437 } | 436 } |
| 438 CXFA_LayoutProcessor* pDocLayout = m_pDocument->GetDocLayout(); | 437 CXFA_LayoutProcessor* pDocLayout = m_pDocument->GetDocLayout(); |
| 439 if (!pDocLayout) { | 438 if (!pDocLayout) { |
| 440 return; | 439 return; |
| 441 } | 440 } |
| 442 CXFA_FFWidget* hWidget = | 441 CXFA_FFWidget* hWidget = |
| 443 pNotify->GetHWidget(pDocLayout->GetLayoutItem(pNode)); | 442 pNotify->GetHWidget(pDocLayout->GetLayoutItem(pNode)); |
| 444 if (!hWidget) { | 443 if (!hWidget) { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 457 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"sheetInBatch"); | 456 ThrowException(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"sheetInBatch"); |
| 458 return; | 457 return; |
| 459 } | 458 } |
| 460 CXFA_Node* pNode = nullptr; | 459 CXFA_Node* pNode = nullptr; |
| 461 if (iLength >= 1) { | 460 if (iLength >= 1) { |
| 462 pNode = static_cast<CXFA_Node*>(pArguments->GetObject(0)); | 461 pNode = static_cast<CXFA_Node*>(pArguments->GetObject(0)); |
| 463 } | 462 } |
| 464 if (!pNode) { | 463 if (!pNode) { |
| 465 return; | 464 return; |
| 466 } | 465 } |
| 467 CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); | 466 CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); |
| 468 if (!pNotify) { | 467 if (!pNotify) { |
| 469 return; | 468 return; |
| 470 } | 469 } |
| 471 CXFA_LayoutProcessor* pDocLayout = m_pDocument->GetDocLayout(); | 470 CXFA_LayoutProcessor* pDocLayout = m_pDocument->GetDocLayout(); |
| 472 if (!pDocLayout) { | 471 if (!pDocLayout) { |
| 473 return; | 472 return; |
| 474 } | 473 } |
| 475 CXFA_FFWidget* hWidget = | 474 CXFA_FFWidget* hWidget = |
| 476 pNotify->GetHWidget(pDocLayout->GetLayoutItem(pNode)); | 475 pNotify->GetHWidget(pDocLayout->GetLayoutItem(pNode)); |
| 477 if (!hWidget) { | 476 if (!hWidget) { |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 526 } | 525 } |
| 527 CXFA_LayoutItem* pLayoutItem = pDocLayout->GetLayoutItem(pNode); | 526 CXFA_LayoutItem* pLayoutItem = pDocLayout->GetLayoutItem(pNode); |
| 528 if (!pLayoutItem) { | 527 if (!pLayoutItem) { |
| 529 pValue->SetInteger(-1); | 528 pValue->SetInteger(-1); |
| 530 return; | 529 return; |
| 531 } | 530 } |
| 532 iPage = pLayoutItem->GetFirst()->GetPage()->GetPageIndex(); | 531 iPage = pLayoutItem->GetFirst()->GetPage()->GetPageIndex(); |
| 533 if (pValue) | 532 if (pValue) |
| 534 pValue->SetInteger(bAbsPage ? iPage : iPage + 1); | 533 pValue->SetInteger(bAbsPage ? iPage : iPage + 1); |
| 535 } | 534 } |
| OLD | NEW |