| 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 "core/fxcrt/fx_arabic.h" | 7 #include "core/fxcrt/fx_arabic.h" |
| 8 #include "core/fxcrt/fx_ucd.h" | 8 #include "core/fxcrt/fx_ucd.h" |
| 9 | 9 |
| 10 namespace { | 10 namespace { |
| (...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 369 return 0; | 369 return 0; |
| 370 } else { | 370 } else { |
| 371 return iAction; | 371 return iAction; |
| 372 } | 372 } |
| 373 } | 373 } |
| 374 | 374 |
| 375 int32_t FX_BidiReorderLevel(int32_t iBaseLevel, | 375 int32_t FX_BidiReorderLevel(int32_t iBaseLevel, |
| 376 CFX_WideString& wsText, | 376 CFX_WideString& wsText, |
| 377 const CFX_Int32Array& levels, | 377 const CFX_Int32Array& levels, |
| 378 int32_t iStart, | 378 int32_t iStart, |
| 379 FX_BOOL bReverse) { | 379 bool bReverse) { |
| 380 ASSERT(iBaseLevel >= 0 && iBaseLevel <= FX_BIDIMAXLEVEL); | 380 ASSERT(iBaseLevel >= 0 && iBaseLevel <= FX_BIDIMAXLEVEL); |
| 381 ASSERT(wsText.GetLength() == levels.GetSize()); | 381 ASSERT(wsText.GetLength() == levels.GetSize()); |
| 382 ASSERT(iStart >= 0 && iStart < wsText.GetLength()); | 382 ASSERT(iStart >= 0 && iStart < wsText.GetLength()); |
| 383 int32_t iSize = wsText.GetLength(); | 383 int32_t iSize = wsText.GetLength(); |
| 384 if (iSize < 1) { | 384 if (iSize < 1) { |
| 385 return 0; | 385 return 0; |
| 386 } | 386 } |
| 387 bReverse = bReverse || FX_IsOdd(iBaseLevel); | 387 bReverse = bReverse || FX_IsOdd(iBaseLevel); |
| 388 int32_t i = iStart, iLevel; | 388 int32_t i = iStart, iLevel; |
| 389 for (; i < iSize; i++) { | 389 for (; i < iSize; i++) { |
| (...skipping 15 matching lines...) Expand all Loading... |
| 405 CFX_WideString& wsText, | 405 CFX_WideString& wsText, |
| 406 const CFX_Int32Array& levels) { | 406 const CFX_Int32Array& levels) { |
| 407 ASSERT(iBaseLevel >= 0 && iBaseLevel <= FX_BIDIMAXLEVEL); | 407 ASSERT(iBaseLevel >= 0 && iBaseLevel <= FX_BIDIMAXLEVEL); |
| 408 ASSERT(wsText.GetLength() == levels.GetSize()); | 408 ASSERT(wsText.GetLength() == levels.GetSize()); |
| 409 int32_t iSize = wsText.GetLength(); | 409 int32_t iSize = wsText.GetLength(); |
| 410 if (iSize < 1) { | 410 if (iSize < 1) { |
| 411 return; | 411 return; |
| 412 } | 412 } |
| 413 int32_t i = 0; | 413 int32_t i = 0; |
| 414 while (i < iSize) { | 414 while (i < iSize) { |
| 415 i += FX_BidiReorderLevel(iBaseLevel, wsText, levels, i, FALSE); | 415 i += FX_BidiReorderLevel(iBaseLevel, wsText, levels, i, false); |
| 416 } | 416 } |
| 417 } | 417 } |
| 418 | 418 |
| 419 template <class baseType> | 419 template <class baseType> |
| 420 class CFX_BidiLineTemplate { | 420 class CFX_BidiLineTemplate { |
| 421 public: | 421 public: |
| 422 void FX_BidiReverseString(CFX_ArrayTemplate<baseType>& chars, | 422 void FX_BidiReverseString(CFX_ArrayTemplate<baseType>& chars, |
| 423 int32_t iStart, | 423 int32_t iStart, |
| 424 int32_t iCount) { | 424 int32_t iCount) { |
| 425 ASSERT(iStart > -1 && iStart < chars.GetSize()); | 425 ASSERT(iStart > -1 && iStart < chars.GetSize()); |
| 426 ASSERT(iCount >= 0 && iStart + iCount <= chars.GetSize()); | 426 ASSERT(iCount >= 0 && iStart + iCount <= chars.GetSize()); |
| 427 baseType *pStart, *pEnd; | 427 baseType *pStart, *pEnd; |
| 428 int32_t iEnd = iStart + iCount - 1, iTemp; | 428 int32_t iEnd = iStart + iCount - 1, iTemp; |
| 429 while (iStart < iEnd) { | 429 while (iStart < iEnd) { |
| 430 pStart = chars.GetDataPtr(iStart++); | 430 pStart = chars.GetDataPtr(iStart++); |
| 431 pEnd = chars.GetDataPtr(iEnd--); | 431 pEnd = chars.GetDataPtr(iEnd--); |
| 432 iTemp = pStart->m_iBidiPos; | 432 iTemp = pStart->m_iBidiPos; |
| 433 pStart->m_iBidiPos = pEnd->m_iBidiPos; | 433 pStart->m_iBidiPos = pEnd->m_iBidiPos; |
| 434 pEnd->m_iBidiPos = iTemp; | 434 pEnd->m_iBidiPos = iTemp; |
| 435 } | 435 } |
| 436 } | 436 } |
| 437 void FX_BidiSetDeferredRun(CFX_ArrayTemplate<baseType>& chars, | 437 void FX_BidiSetDeferredRun(CFX_ArrayTemplate<baseType>& chars, |
| 438 FX_BOOL bClass, | 438 bool bClass, |
| 439 int32_t iStart, | 439 int32_t iStart, |
| 440 int32_t iCount, | 440 int32_t iCount, |
| 441 int32_t iValue) { | 441 int32_t iValue) { |
| 442 ASSERT(iStart > -1 && iStart <= chars.GetSize()); | 442 ASSERT(iStart > -1 && iStart <= chars.GetSize()); |
| 443 ASSERT(iStart - iCount > -1); | 443 ASSERT(iStart - iCount > -1); |
| 444 baseType* pTC; | 444 baseType* pTC; |
| 445 int32_t iLast = iStart - iCount; | 445 int32_t iLast = iStart - iCount; |
| 446 if (bClass) { | 446 if (bClass) { |
| 447 for (int32_t i = iStart - 1; i >= iLast; i--) { | 447 for (int32_t i = iStart - 1; i >= iLast; i--) { |
| 448 pTC = chars.GetDataPtr(i); | 448 pTC = chars.GetDataPtr(i); |
| 449 pTC->m_iBidiClass = (int16_t)iValue; | 449 pTC->m_iBidiClass = (int16_t)iValue; |
| 450 } | 450 } |
| 451 } else { | 451 } else { |
| 452 for (int32_t i = iStart - 1; i >= iLast; i--) { | 452 for (int32_t i = iStart - 1; i >= iLast; i--) { |
| 453 pTC = chars.GetDataPtr(i); | 453 pTC = chars.GetDataPtr(i); |
| 454 pTC->m_iBidiLevel = (int16_t)iValue; | 454 pTC->m_iBidiLevel = (int16_t)iValue; |
| 455 } | 455 } |
| 456 } | 456 } |
| 457 } | 457 } |
| 458 void FX_BidiClassify(CFX_ArrayTemplate<baseType>& chars, | 458 void FX_BidiClassify(CFX_ArrayTemplate<baseType>& chars, |
| 459 int32_t iCount, | 459 int32_t iCount, |
| 460 FX_BOOL bWS) { | 460 bool bWS) { |
| 461 ASSERT(iCount > -1 && iCount <= chars.GetSize()); | 461 ASSERT(iCount > -1 && iCount <= chars.GetSize()); |
| 462 baseType* pTC; | 462 baseType* pTC; |
| 463 if (bWS) { | 463 if (bWS) { |
| 464 for (int32_t i = 0; i < iCount; i++) { | 464 for (int32_t i = 0; i < iCount; i++) { |
| 465 pTC = chars.GetDataPtr(i); | 465 pTC = chars.GetDataPtr(i); |
| 466 pTC->m_iBidiClass = | 466 pTC->m_iBidiClass = |
| 467 (int16_t)(pTC->m_dwCharProps & FX_BIDICLASSBITSMASK) >> | 467 (int16_t)(pTC->m_dwCharProps & FX_BIDICLASSBITSMASK) >> |
| 468 FX_BIDICLASSBITS; | 468 FX_BIDICLASSBITS; |
| 469 } | 469 } |
| 470 } else { | 470 } else { |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 534 if (iNum > 0) { | 534 if (iNum > 0) { |
| 535 iNum++; | 535 iNum++; |
| 536 } | 536 } |
| 537 continue; | 537 continue; |
| 538 } | 538 } |
| 539 } | 539 } |
| 540 ASSERT(iClsCur <= FX_BIDICLASS_BN); | 540 ASSERT(iClsCur <= FX_BIDICLASS_BN); |
| 541 iAction = gc_FX_BidiWeakActions[iState][iClsCur]; | 541 iAction = gc_FX_BidiWeakActions[iState][iClsCur]; |
| 542 iClsRun = FX_BidiGetDeferredType(iAction); | 542 iClsRun = FX_BidiGetDeferredType(iAction); |
| 543 if (iClsRun != FX_BIDIWEAKACTION_XX && iNum > 0) { | 543 if (iClsRun != FX_BIDIWEAKACTION_XX && iNum > 0) { |
| 544 FX_BidiSetDeferredRun(chars, TRUE, i, iNum, iClsRun); | 544 FX_BidiSetDeferredRun(chars, true, i, iNum, iClsRun); |
| 545 iNum = 0; | 545 iNum = 0; |
| 546 } | 546 } |
| 547 iClsNew = FX_BidiGetResolvedType(iAction); | 547 iClsNew = FX_BidiGetResolvedType(iAction); |
| 548 if (iClsNew != FX_BIDIWEAKACTION_XX) { | 548 if (iClsNew != FX_BIDIWEAKACTION_XX) { |
| 549 pTC->m_iBidiClass = (int16_t)iClsNew; | 549 pTC->m_iBidiClass = (int16_t)iClsNew; |
| 550 } | 550 } |
| 551 if (FX_BIDIWEAKACTION_IX & iAction) { | 551 if (FX_BIDIWEAKACTION_IX & iAction) { |
| 552 iNum++; | 552 iNum++; |
| 553 } | 553 } |
| 554 iState = gc_FX_BidiWeakStates[iState][iClsCur]; | 554 iState = gc_FX_BidiWeakStates[iState][iClsCur]; |
| 555 } | 555 } |
| 556 if (iNum > 0) { | 556 if (iNum > 0) { |
| 557 iClsCur = FX_BidiDirection(iBaseLevel); | 557 iClsCur = FX_BidiDirection(iBaseLevel); |
| 558 iClsRun = FX_BidiGetDeferredType(gc_FX_BidiWeakActions[iState][iClsCur]); | 558 iClsRun = FX_BidiGetDeferredType(gc_FX_BidiWeakActions[iState][iClsCur]); |
| 559 if (iClsRun != FX_BIDIWEAKACTION_XX) { | 559 if (iClsRun != FX_BIDIWEAKACTION_XX) { |
| 560 FX_BidiSetDeferredRun(chars, TRUE, i, iNum, iClsRun); | 560 FX_BidiSetDeferredRun(chars, true, i, iNum, iClsRun); |
| 561 } | 561 } |
| 562 } | 562 } |
| 563 } | 563 } |
| 564 void FX_BidiResolveNeutrals(CFX_ArrayTemplate<baseType>& chars, | 564 void FX_BidiResolveNeutrals(CFX_ArrayTemplate<baseType>& chars, |
| 565 int32_t iCount, | 565 int32_t iCount, |
| 566 int32_t iBaseLevel) { | 566 int32_t iBaseLevel) { |
| 567 ASSERT(iCount > -1 && iCount <= chars.GetSize()); | 567 ASSERT(iCount > -1 && iCount <= chars.GetSize()); |
| 568 ASSERT(iBaseLevel >= 0 && iBaseLevel <= FX_BIDIMAXLEVEL); | 568 ASSERT(iBaseLevel >= 0 && iBaseLevel <= FX_BIDIMAXLEVEL); |
| 569 iCount--; | 569 iCount--; |
| 570 if (iCount < 1) { | 570 if (iCount < 1) { |
| 571 return; | 571 return; |
| 572 } | 572 } |
| 573 baseType* pTC; | 573 baseType* pTC; |
| 574 int32_t iLevel = iBaseLevel; | 574 int32_t iLevel = iBaseLevel; |
| 575 int32_t iState = FX_IsOdd(iBaseLevel) ? FX_BNSr : FX_BNSl; | 575 int32_t iState = FX_IsOdd(iBaseLevel) ? FX_BNSr : FX_BNSl; |
| 576 int32_t i = 0, iNum = 0, iClsCur, iClsRun, iClsNew, iAction; | 576 int32_t i = 0, iNum = 0, iClsCur, iClsRun, iClsNew, iAction; |
| 577 for (; i <= iCount; i++) { | 577 for (; i <= iCount; i++) { |
| 578 pTC = chars.GetDataPtr(i); | 578 pTC = chars.GetDataPtr(i); |
| 579 iClsCur = pTC->m_iBidiClass; | 579 iClsCur = pTC->m_iBidiClass; |
| 580 if (iClsCur == FX_BIDICLASS_BN) { | 580 if (iClsCur == FX_BIDICLASS_BN) { |
| 581 if (iNum) { | 581 if (iNum) { |
| 582 iNum++; | 582 iNum++; |
| 583 } | 583 } |
| 584 continue; | 584 continue; |
| 585 } | 585 } |
| 586 ASSERT(iClsCur < FX_BIDICLASS_AL); | 586 ASSERT(iClsCur < FX_BIDICLASS_AL); |
| 587 iAction = gc_FX_BidiNeutralActions[iState][iClsCur]; | 587 iAction = gc_FX_BidiNeutralActions[iState][iClsCur]; |
| 588 iClsRun = FX_BidiGetDeferredNeutrals(iAction, iLevel); | 588 iClsRun = FX_BidiGetDeferredNeutrals(iAction, iLevel); |
| 589 if (iClsRun != FX_BIDICLASS_N && iNum > 0) { | 589 if (iClsRun != FX_BIDICLASS_N && iNum > 0) { |
| 590 FX_BidiSetDeferredRun(chars, TRUE, i, iNum, iClsRun); | 590 FX_BidiSetDeferredRun(chars, true, i, iNum, iClsRun); |
| 591 iNum = 0; | 591 iNum = 0; |
| 592 } | 592 } |
| 593 iClsNew = FX_BidiGetResolvedNeutrals(iAction); | 593 iClsNew = FX_BidiGetResolvedNeutrals(iAction); |
| 594 if (iClsNew != FX_BIDICLASS_N) { | 594 if (iClsNew != FX_BIDICLASS_N) { |
| 595 pTC->m_iBidiClass = (int16_t)iClsNew; | 595 pTC->m_iBidiClass = (int16_t)iClsNew; |
| 596 } | 596 } |
| 597 if (FX_BIDINEUTRALACTION_In & iAction) { | 597 if (FX_BIDINEUTRALACTION_In & iAction) { |
| 598 iNum++; | 598 iNum++; |
| 599 } | 599 } |
| 600 iState = gc_FX_BidiNeutralStates[iState][iClsCur]; | 600 iState = gc_FX_BidiNeutralStates[iState][iClsCur]; |
| 601 iLevel = pTC->m_iBidiLevel; | 601 iLevel = pTC->m_iBidiLevel; |
| 602 } | 602 } |
| 603 if (iNum > 0) { | 603 if (iNum > 0) { |
| 604 iClsCur = FX_BidiDirection(iLevel); | 604 iClsCur = FX_BidiDirection(iLevel); |
| 605 iClsRun = FX_BidiGetDeferredNeutrals( | 605 iClsRun = FX_BidiGetDeferredNeutrals( |
| 606 gc_FX_BidiNeutralActions[iState][iClsCur], iLevel); | 606 gc_FX_BidiNeutralActions[iState][iClsCur], iLevel); |
| 607 if (iClsRun != FX_BIDICLASS_N) { | 607 if (iClsRun != FX_BIDICLASS_N) { |
| 608 FX_BidiSetDeferredRun(chars, TRUE, i, iNum, iClsRun); | 608 FX_BidiSetDeferredRun(chars, true, i, iNum, iClsRun); |
| 609 } | 609 } |
| 610 } | 610 } |
| 611 } | 611 } |
| 612 void FX_BidiResolveImplicit(CFX_ArrayTemplate<baseType>& chars, | 612 void FX_BidiResolveImplicit(CFX_ArrayTemplate<baseType>& chars, |
| 613 int32_t iCount) { | 613 int32_t iCount) { |
| 614 ASSERT(iCount > -1 && iCount <= chars.GetSize()); | 614 ASSERT(iCount > -1 && iCount <= chars.GetSize()); |
| 615 baseType* pTC; | 615 baseType* pTC; |
| 616 int32_t iCls, iLevel; | 616 int32_t iCls, iLevel; |
| 617 for (int32_t i = 0; i < iCount; i++) { | 617 for (int32_t i = 0; i < iCount; i++) { |
| 618 pTC = chars.GetDataPtr(i); | 618 pTC = chars.GetDataPtr(i); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 649 case FX_BIDICLASS_LRO: | 649 case FX_BIDICLASS_LRO: |
| 650 case FX_BIDICLASS_RLO: | 650 case FX_BIDICLASS_RLO: |
| 651 case FX_BIDICLASS_PDF: | 651 case FX_BIDICLASS_PDF: |
| 652 case FX_BIDICLASS_BN: | 652 case FX_BIDICLASS_BN: |
| 653 pTC->m_iBidiLevel = (int16_t)iLevel; | 653 pTC->m_iBidiLevel = (int16_t)iLevel; |
| 654 iNum++; | 654 iNum++; |
| 655 break; | 655 break; |
| 656 case FX_BIDICLASS_S: | 656 case FX_BIDICLASS_S: |
| 657 case FX_BIDICLASS_B: | 657 case FX_BIDICLASS_B: |
| 658 if (iNum > 0) { | 658 if (iNum > 0) { |
| 659 FX_BidiSetDeferredRun(chars, FALSE, i, iNum, iBaseLevel); | 659 FX_BidiSetDeferredRun(chars, false, i, iNum, iBaseLevel); |
| 660 } | 660 } |
| 661 pTC->m_iBidiLevel = (int16_t)iBaseLevel; | 661 pTC->m_iBidiLevel = (int16_t)iBaseLevel; |
| 662 iNum = 0; | 662 iNum = 0; |
| 663 break; | 663 break; |
| 664 default: | 664 default: |
| 665 iNum = 0; | 665 iNum = 0; |
| 666 break; | 666 break; |
| 667 } | 667 } |
| 668 iLevel = pTC->m_iBidiLevel; | 668 iLevel = pTC->m_iBidiLevel; |
| 669 } | 669 } |
| 670 if (iNum > 0) { | 670 if (iNum > 0) { |
| 671 FX_BidiSetDeferredRun(chars, FALSE, i, iNum, iBaseLevel); | 671 FX_BidiSetDeferredRun(chars, false, i, iNum, iBaseLevel); |
| 672 } | 672 } |
| 673 } | 673 } |
| 674 int32_t FX_BidiReorderLevel(CFX_ArrayTemplate<baseType>& chars, | 674 int32_t FX_BidiReorderLevel(CFX_ArrayTemplate<baseType>& chars, |
| 675 int32_t iCount, | 675 int32_t iCount, |
| 676 int32_t iBaseLevel, | 676 int32_t iBaseLevel, |
| 677 int32_t iStart, | 677 int32_t iStart, |
| 678 FX_BOOL bReverse) { | 678 bool bReverse) { |
| 679 ASSERT(iCount > -1 && iCount <= chars.GetSize()); | 679 ASSERT(iCount > -1 && iCount <= chars.GetSize()); |
| 680 ASSERT(iBaseLevel >= 0 && iBaseLevel <= FX_BIDIMAXLEVEL); | 680 ASSERT(iBaseLevel >= 0 && iBaseLevel <= FX_BIDIMAXLEVEL); |
| 681 ASSERT(iStart >= 0 && iStart < iCount); | 681 ASSERT(iStart >= 0 && iStart < iCount); |
| 682 if (iCount < 1) { | 682 if (iCount < 1) { |
| 683 return 0; | 683 return 0; |
| 684 } | 684 } |
| 685 baseType* pTC; | 685 baseType* pTC; |
| 686 bReverse = bReverse || FX_IsOdd(iBaseLevel); | 686 bReverse = bReverse || FX_IsOdd(iBaseLevel); |
| 687 int32_t i = iStart, iLevel; | 687 int32_t i = iStart, iLevel; |
| 688 for (; i < iCount; i++) { | 688 for (; i < iCount; i++) { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 701 } | 701 } |
| 702 return iNum; | 702 return iNum; |
| 703 } | 703 } |
| 704 void FX_BidiReorder(CFX_ArrayTemplate<baseType>& chars, | 704 void FX_BidiReorder(CFX_ArrayTemplate<baseType>& chars, |
| 705 int32_t iCount, | 705 int32_t iCount, |
| 706 int32_t iBaseLevel) { | 706 int32_t iBaseLevel) { |
| 707 ASSERT(iCount > -1 && iCount <= chars.GetSize()); | 707 ASSERT(iCount > -1 && iCount <= chars.GetSize()); |
| 708 ASSERT(iBaseLevel >= 0 && iBaseLevel <= FX_BIDIMAXLEVEL); | 708 ASSERT(iBaseLevel >= 0 && iBaseLevel <= FX_BIDIMAXLEVEL); |
| 709 int32_t i = 0; | 709 int32_t i = 0; |
| 710 while (i < iCount) { | 710 while (i < iCount) { |
| 711 i += FX_BidiReorderLevel(chars, iCount, iBaseLevel, i, FALSE); | 711 i += FX_BidiReorderLevel(chars, iCount, iBaseLevel, i, false); |
| 712 } | 712 } |
| 713 } | 713 } |
| 714 void FX_BidiPosition(CFX_ArrayTemplate<baseType>& chars, int32_t iCount) { | 714 void FX_BidiPosition(CFX_ArrayTemplate<baseType>& chars, int32_t iCount) { |
| 715 ASSERT(iCount > -1 && iCount <= chars.GetSize()); | 715 ASSERT(iCount > -1 && iCount <= chars.GetSize()); |
| 716 baseType* pTC; | 716 baseType* pTC; |
| 717 int32_t i = 0; | 717 int32_t i = 0; |
| 718 while (i < iCount) { | 718 while (i < iCount) { |
| 719 pTC = chars.GetDataPtr(i); | 719 pTC = chars.GetDataPtr(i); |
| 720 pTC = chars.GetDataPtr(pTC->m_iBidiPos); | 720 pTC = chars.GetDataPtr(pTC->m_iBidiPos); |
| 721 pTC->m_iBidiOrder = i++; | 721 pTC->m_iBidiOrder = i++; |
| 722 } | 722 } |
| 723 } | 723 } |
| 724 | 724 |
| 725 void FX_BidiLine(CFX_ArrayTemplate<baseType>& chars, | 725 void FX_BidiLine(CFX_ArrayTemplate<baseType>& chars, |
| 726 int32_t iCount, | 726 int32_t iCount, |
| 727 int32_t iBaseLevel) { | 727 int32_t iBaseLevel) { |
| 728 ASSERT(iCount > -1 && iCount <= chars.GetSize()); | 728 ASSERT(iCount > -1 && iCount <= chars.GetSize()); |
| 729 if (iCount < 2) { | 729 if (iCount < 2) { |
| 730 return; | 730 return; |
| 731 } | 731 } |
| 732 FX_BidiClassify(chars, iCount, FALSE); | 732 FX_BidiClassify(chars, iCount, false); |
| 733 FX_BidiResolveExplicit(chars, iCount, iBaseLevel); | 733 FX_BidiResolveExplicit(chars, iCount, iBaseLevel); |
| 734 FX_BidiResolveWeak(chars, iCount, iBaseLevel); | 734 FX_BidiResolveWeak(chars, iCount, iBaseLevel); |
| 735 FX_BidiResolveNeutrals(chars, iCount, iBaseLevel); | 735 FX_BidiResolveNeutrals(chars, iCount, iBaseLevel); |
| 736 FX_BidiResolveImplicit(chars, iCount); | 736 FX_BidiResolveImplicit(chars, iCount); |
| 737 FX_BidiClassify(chars, iCount, TRUE); | 737 FX_BidiClassify(chars, iCount, true); |
| 738 FX_BidiResolveWhitespace(chars, iCount, iBaseLevel); | 738 FX_BidiResolveWhitespace(chars, iCount, iBaseLevel); |
| 739 FX_BidiReorder(chars, iCount, iBaseLevel); | 739 FX_BidiReorder(chars, iCount, iBaseLevel); |
| 740 FX_BidiPosition(chars, iCount); | 740 FX_BidiPosition(chars, iCount); |
| 741 } | 741 } |
| 742 }; | 742 }; |
| 743 void FX_BidiLine(CFX_TxtCharArray& chars, int32_t iCount, int32_t iBaseLevel) { | 743 void FX_BidiLine(CFX_TxtCharArray& chars, int32_t iCount, int32_t iBaseLevel) { |
| 744 CFX_BidiLineTemplate<CFX_TxtChar> blt; | 744 CFX_BidiLineTemplate<CFX_TxtChar> blt; |
| 745 blt.FX_BidiLine(chars, iCount, iBaseLevel); | 745 blt.FX_BidiLine(chars, iCount, iBaseLevel); |
| 746 } | 746 } |
| 747 void FX_BidiLine(CFX_RTFCharArray& chars, int32_t iCount, int32_t iBaseLevel) { | 747 void FX_BidiLine(CFX_RTFCharArray& chars, int32_t iCount, int32_t iBaseLevel) { |
| 748 CFX_BidiLineTemplate<CFX_RTFChar> blt; | 748 CFX_BidiLineTemplate<CFX_RTFChar> blt; |
| 749 blt.FX_BidiLine(chars, iCount, iBaseLevel); | 749 blt.FX_BidiLine(chars, iCount, iBaseLevel); |
| 750 } | 750 } |
| OLD | NEW |