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

Side by Side Diff: core/fxcrt/fx_arabic.cpp

Issue 2477443002: Remove FX_BOOL from core (Closed)
Patch Set: Created 4 years, 1 month 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 | « core/fxcrt/fx_arabic.h ('k') | core/fxcrt/fx_basic.h » ('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 "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
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
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
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
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
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 }
OLDNEW
« no previous file with comments | « core/fxcrt/fx_arabic.h ('k') | core/fxcrt/fx_basic.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698