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

Side by Side Diff: xfa/fgas/layout/fgas_rtfbreak.cpp

Issue 2650773003: Use std::vector for fx_ucd.h arrays. (Closed)
Patch Set: even slightly more saner Created 3 years, 11 months 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
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 "xfa/fgas/layout/fgas_rtfbreak.h" 7 #include "xfa/fgas/layout/fgas_rtfbreak.h"
8 8
9 #include <algorithm> 9 #include <algorithm>
10 10
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 int32_t iCount = m_pCurLine->CountChars(); 266 int32_t iCount = m_pCurLine->CountChars();
267 if (iCount < 1) { 267 if (iCount < 1) {
268 return; 268 return;
269 } 269 }
270 CFX_RTFChar& tc = m_pCurLine->GetChar(iCount - 1); 270 CFX_RTFChar& tc = m_pCurLine->GetChar(iCount - 1);
271 if (tc.m_dwStatus == 0) { 271 if (tc.m_dwStatus == 0) {
272 tc.m_dwStatus = FX_RTFBREAK_PieceBreak; 272 tc.m_dwStatus = FX_RTFBREAK_PieceBreak;
273 } 273 }
274 } 274 }
275 CFX_RTFChar* CFX_RTFBreak::GetLastChar(int32_t index) const { 275 CFX_RTFChar* CFX_RTFBreak::GetLastChar(int32_t index) const {
276 CFX_RTFCharArray& tca = m_pCurLine->m_LineChars; 276 std::vector<CFX_RTFChar>& tca = m_pCurLine->m_LineChars;
277 int32_t iCount = tca.GetSize(); 277 int32_t iCount = pdfium::CollectionSize<int32_t>(tca);
278 if (index < 0 || index >= iCount) { 278 if (index < 0 || index >= iCount) {
279 return nullptr; 279 return nullptr;
280 } 280 }
281 CFX_RTFChar* pTC;
282 int32_t iStart = iCount - 1; 281 int32_t iStart = iCount - 1;
283 while (iStart > -1) { 282 while (iStart > -1) {
284 pTC = tca.GetDataPtr(iStart--); 283 CFX_RTFChar* pTC = &tca[iStart--];
285 if (pTC->m_iCharWidth >= 0 || 284 if (pTC->m_iCharWidth >= 0 ||
286 pTC->GetCharType() != FX_CHARTYPE_Combination) { 285 pTC->GetCharType() != FX_CHARTYPE_Combination) {
287 if (--index < 0) { 286 if (--index < 0) {
288 return pTC; 287 return pTC;
289 } 288 }
290 } 289 }
291 } 290 }
292 return nullptr; 291 return nullptr;
293 } 292 }
294 CFX_RTFLine* CFX_RTFBreak::GetRTFLine(bool bReady) const { 293 CFX_RTFLine* CFX_RTFBreak::GetRTFLine(bool bReady) const {
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 &CFX_RTFBreak::AppendChar_Arabic, &CFX_RTFBreak::AppendChar_Others, 341 &CFX_RTFBreak::AppendChar_Arabic, &CFX_RTFBreak::AppendChar_Others,
343 &CFX_RTFBreak::AppendChar_Others, &CFX_RTFBreak::AppendChar_Others, 342 &CFX_RTFBreak::AppendChar_Others, &CFX_RTFBreak::AppendChar_Others,
344 }; 343 };
345 uint32_t CFX_RTFBreak::AppendChar(FX_WCHAR wch) { 344 uint32_t CFX_RTFBreak::AppendChar(FX_WCHAR wch) {
346 ASSERT(m_pFont && m_pCurLine); 345 ASSERT(m_pFont && m_pCurLine);
347 if (m_bCharCode) 346 if (m_bCharCode)
348 return AppendChar_CharCode(wch); 347 return AppendChar_CharCode(wch);
349 348
350 uint32_t dwProps = kTextLayoutCodeProperties[(uint16_t)wch]; 349 uint32_t dwProps = kTextLayoutCodeProperties[(uint16_t)wch];
351 FX_CHARTYPE chartype = GetCharTypeFromProp(dwProps); 350 FX_CHARTYPE chartype = GetCharTypeFromProp(dwProps);
352 CFX_RTFCharArray& tca = m_pCurLine->m_LineChars; 351 m_pCurLine->m_LineChars.emplace_back();
353 CFX_RTFChar* pCurChar = tca.AddSpace(); 352 CFX_RTFChar* pCurChar = &m_pCurLine->m_LineChars.back();
354 pCurChar->m_dwStatus = 0; 353 pCurChar->m_dwStatus = 0;
355 pCurChar->m_wCharCode = wch; 354 pCurChar->m_wCharCode = wch;
356 pCurChar->m_dwCharProps = dwProps; 355 pCurChar->m_dwCharProps = dwProps;
357 pCurChar->m_dwCharStyles = 0; 356 pCurChar->m_dwCharStyles = 0;
358 pCurChar->m_dwLayoutStyles = 0; 357 pCurChar->m_dwLayoutStyles = 0;
359 pCurChar->m_iFontSize = m_iFontSize; 358 pCurChar->m_iFontSize = m_iFontSize;
360 pCurChar->m_iFontHeight = m_iFontHeight; 359 pCurChar->m_iFontHeight = m_iFontHeight;
361 pCurChar->m_iHorizontalScale = m_iHorizontalScale; 360 pCurChar->m_iHorizontalScale = m_iHorizontalScale;
362 pCurChar->m_iVertialScale = m_iVerticalScale; 361 pCurChar->m_iVertialScale = m_iVerticalScale;
363 pCurChar->m_nRotation = m_iCharRotation; 362 pCurChar->m_nRotation = m_iCharRotation;
364 pCurChar->m_iCharWidth = 0; 363 pCurChar->m_iCharWidth = 0;
365 pCurChar->m_dwIdentity = m_dwIdentity; 364 pCurChar->m_dwIdentity = m_dwIdentity;
366 if (m_pUserData) { 365 if (m_pUserData) {
367 m_pUserData->Retain(); 366 m_pUserData->Retain();
368 } 367 }
369 pCurChar->m_pUserData = m_pUserData; 368 pCurChar->m_pUserData = m_pUserData;
370 uint32_t dwRet1 = FX_RTFBREAK_None; 369 uint32_t dwRet1 = FX_RTFBREAK_None;
371 if (chartype != FX_CHARTYPE_Combination && 370 if (chartype != FX_CHARTYPE_Combination &&
372 GetUnifiedCharType(m_eCharType) != GetUnifiedCharType(chartype)) { 371 GetUnifiedCharType(m_eCharType) != GetUnifiedCharType(chartype)) {
373 if (!m_bSingleLine && !m_bOrphanLine && 372 if (!m_bSingleLine && !m_bOrphanLine &&
374 m_eCharType != FX_CHARTYPE_Unknown && 373 m_eCharType != FX_CHARTYPE_Unknown &&
375 m_pCurLine->GetLineEnd() > m_iBoundaryEnd + m_iTolerance) { 374 m_pCurLine->GetLineEnd() > m_iBoundaryEnd + m_iTolerance) {
376 if (m_eCharType != FX_CHARTYPE_Space || chartype != FX_CHARTYPE_Control) { 375 if (m_eCharType != FX_CHARTYPE_Space || chartype != FX_CHARTYPE_Control) {
377 dwRet1 = EndBreak(FX_RTFBREAK_LineBreak); 376 dwRet1 = EndBreak(FX_RTFBREAK_LineBreak);
378 int32_t iCount = m_pCurLine->CountChars(); 377 int32_t iCount = m_pCurLine->CountChars();
379 if (iCount > 0) { 378 if (iCount > 0) {
380 pCurChar = m_pCurLine->m_LineChars.GetDataPtr(iCount - 1); 379 pCurChar = &m_pCurLine->m_LineChars[iCount - 1];
381 } 380 }
382 } 381 }
383 } 382 }
384 } 383 }
385 int32_t iRotation = m_iRotation; 384 int32_t iRotation = m_iRotation;
386 if (m_bVertical && (dwProps & 0x8000) != 0) { 385 if (m_bVertical && (dwProps & 0x8000) != 0) {
387 iRotation = (iRotation + 1) % 4; 386 iRotation = (iRotation + 1) % 4;
388 } 387 }
389 uint32_t dwRet2 = 388 uint32_t dwRet2 =
390 (this->*g_FX_RTFBreak_lpfAppendChar[chartype >> FX_CHARTYPEBITS])( 389 (this->*g_FX_RTFBreak_lpfAppendChar[chartype >> FX_CHARTYPEBITS])(
391 pCurChar, iRotation); 390 pCurChar, iRotation);
392 m_eCharType = chartype; 391 m_eCharType = chartype;
393 return std::max(dwRet1, dwRet2); 392 return std::max(dwRet1, dwRet2);
394 } 393 }
395 394
396 uint32_t CFX_RTFBreak::AppendChar_CharCode(FX_WCHAR wch) { 395 uint32_t CFX_RTFBreak::AppendChar_CharCode(FX_WCHAR wch) {
397 ASSERT(m_pFont && m_pCurLine); 396 ASSERT(m_pFont && m_pCurLine);
398 ASSERT(m_bCharCode); 397 ASSERT(m_bCharCode);
399 m_pCurLine->m_iMBCSChars++; 398 m_pCurLine->m_iMBCSChars++;
400 CFX_RTFCharArray& tca = m_pCurLine->m_LineChars; 399 m_pCurLine->m_LineChars.emplace_back();
401 CFX_RTFChar* pCurChar = tca.AddSpace(); 400 CFX_RTFChar* pCurChar = &m_pCurLine->m_LineChars.back();
402 pCurChar->m_dwStatus = 0; 401 pCurChar->m_dwStatus = 0;
403 pCurChar->m_wCharCode = wch; 402 pCurChar->m_wCharCode = wch;
404 pCurChar->m_dwCharProps = 0; 403 pCurChar->m_dwCharProps = 0;
405 pCurChar->m_dwCharStyles = 0; 404 pCurChar->m_dwCharStyles = 0;
406 pCurChar->m_dwLayoutStyles = m_dwLayoutStyles; 405 pCurChar->m_dwLayoutStyles = m_dwLayoutStyles;
407 pCurChar->m_iFontSize = m_iFontSize; 406 pCurChar->m_iFontSize = m_iFontSize;
408 pCurChar->m_iFontHeight = m_iFontHeight; 407 pCurChar->m_iFontHeight = m_iFontHeight;
409 pCurChar->m_iHorizontalScale = m_iHorizontalScale; 408 pCurChar->m_iHorizontalScale = m_iHorizontalScale;
410 pCurChar->m_iVertialScale = m_iVerticalScale; 409 pCurChar->m_iVertialScale = m_iVerticalScale;
411 pCurChar->m_nRotation = m_iCharRotation; 410 pCurChar->m_nRotation = m_iCharRotation;
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after
689 bDone = true; 688 bDone = true;
690 } 689 }
691 break; 690 break;
692 default: 691 default:
693 SplitTextLine(m_pCurLine, pNextLine, !m_bPagination && bAllChars); 692 SplitTextLine(m_pCurLine, pNextLine, !m_bPagination && bAllChars);
694 bDone = true; 693 bDone = true;
695 break; 694 break;
696 } 695 }
697 } 696 }
698 if (m_bPagination || m_pCurLine->m_iMBCSChars > 0) { 697 if (m_bPagination || m_pCurLine->m_iMBCSChars > 0) {
699 const CFX_RTFChar* pCurChars = m_pCurLine->m_LineChars.GetData(); 698 const CFX_RTFChar* pCurChars = m_pCurLine->m_LineChars.data();
700 const CFX_RTFChar* pTC; 699 const CFX_RTFChar* pTC;
701 CFX_RTFPieceArray* pCurPieces = &m_pCurLine->m_LinePieces; 700 CFX_RTFPieceArray* pCurPieces = &m_pCurLine->m_LinePieces;
702 CFX_RTFPiece tp; 701 CFX_RTFPiece tp;
703 tp.m_pChars = &m_pCurLine->m_LineChars; 702 tp.m_pChars = &m_pCurLine->m_LineChars;
704 bool bNew = true; 703 bool bNew = true;
705 uint32_t dwIdentity = (uint32_t)-1; 704 uint32_t dwIdentity = (uint32_t)-1;
706 int32_t iLast = m_pCurLine->CountChars() - 1, j = 0; 705 int32_t iLast = m_pCurLine->CountChars() - 1, j = 0;
707 for (int32_t i = 0; i <= iLast;) { 706 for (int32_t i = 0; i <= iLast;) {
708 pTC = pCurChars + i; 707 pTC = pCurChars + i;
709 if (bNew) { 708 if (bNew) {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
744 int32_t iEndPos = m_pCurLine->GetLineEnd(); 743 int32_t iEndPos = m_pCurLine->GetLineEnd();
745 GetBreakPos(m_pCurLine->m_LineChars, iEndPos, bAllChars, true); 744 GetBreakPos(m_pCurLine->m_LineChars, iEndPos, bAllChars, true);
746 } 745 }
747 return false; 746 return false;
748 } 747 }
749 void CFX_RTFBreak::EndBreak_BidiLine(CFX_TPOArray& tpos, uint32_t dwStatus) { 748 void CFX_RTFBreak::EndBreak_BidiLine(CFX_TPOArray& tpos, uint32_t dwStatus) {
750 FX_TPO tpo; 749 FX_TPO tpo;
751 CFX_RTFPiece tp; 750 CFX_RTFPiece tp;
752 CFX_RTFChar* pTC; 751 CFX_RTFChar* pTC;
753 int32_t i, j; 752 int32_t i, j;
754 CFX_RTFCharArray& chars = m_pCurLine->m_LineChars; 753 std::vector<CFX_RTFChar>& chars = m_pCurLine->m_LineChars;
755 int32_t iCount = m_pCurLine->CountChars(); 754 int32_t iCount = m_pCurLine->CountChars();
756 bool bDone = (!m_bPagination && !m_bCharCode && 755 bool bDone = (!m_bPagination && !m_bCharCode &&
757 (m_pCurLine->m_iArabicChars > 0 || m_bRTL)); 756 (m_pCurLine->m_iArabicChars > 0 || m_bRTL));
758 if (bDone) { 757 if (bDone) {
759 int32_t iBidiNum = 0; 758 int32_t iBidiNum = 0;
760 for (i = 0; i < iCount; i++) { 759 for (i = 0; i < iCount; i++) {
761 pTC = chars.GetDataPtr(i); 760 pTC = &chars[i];
762 pTC->m_iBidiPos = i; 761 pTC->m_iBidiPos = i;
763 if (pTC->GetCharType() != FX_CHARTYPE_Control) { 762 if (pTC->GetCharType() != FX_CHARTYPE_Control) {
764 iBidiNum = i; 763 iBidiNum = i;
765 } 764 }
766 if (i == 0) { 765 if (i == 0) {
767 pTC->m_iBidiLevel = 1; 766 pTC->m_iBidiLevel = 1;
768 } 767 }
769 } 768 }
770 FX_BidiLine(chars, iBidiNum + 1, m_bRTL ? 1 : 0); 769 FX_BidiLine(chars, iBidiNum + 1, m_bRTL ? 1 : 0);
771 } else { 770 } else {
772 for (i = 0; i < iCount; i++) { 771 for (i = 0; i < iCount; i++) {
773 pTC = chars.GetDataPtr(i); 772 pTC = &chars[i];
774 pTC->m_iBidiLevel = 0; 773 pTC->m_iBidiLevel = 0;
775 pTC->m_iBidiPos = 0; 774 pTC->m_iBidiPos = 0;
776 pTC->m_iBidiOrder = 0; 775 pTC->m_iBidiOrder = 0;
777 } 776 }
778 } 777 }
779 tp.m_dwStatus = FX_RTFBREAK_PieceBreak; 778 tp.m_dwStatus = FX_RTFBREAK_PieceBreak;
780 tp.m_iStartPos = m_pCurLine->m_iStart; 779 tp.m_iStartPos = m_pCurLine->m_iStart;
781 tp.m_pChars = &chars; 780 tp.m_pChars = &chars;
782 CFX_RTFPieceArray* pCurPieces = &m_pCurLine->m_LinePieces; 781 CFX_RTFPieceArray* pCurPieces = &m_pCurLine->m_LinePieces;
783 int32_t iBidiLevel = -1, iCharWidth; 782 int32_t iBidiLevel = -1, iCharWidth;
784 uint32_t dwIdentity = (uint32_t)-1; 783 uint32_t dwIdentity = (uint32_t)-1;
785 i = j = 0; 784 i = j = 0;
786 while (i < iCount) { 785 while (i < iCount) {
787 pTC = chars.GetDataPtr(i); 786 pTC = &chars[i];
788 if (iBidiLevel < 0) { 787 if (iBidiLevel < 0) {
789 iBidiLevel = pTC->m_iBidiLevel; 788 iBidiLevel = pTC->m_iBidiLevel;
790 iCharWidth = pTC->m_iCharWidth; 789 iCharWidth = pTC->m_iCharWidth;
791 if (iCharWidth < 1) { 790 if (iCharWidth < 1) {
792 tp.m_iWidth = 0; 791 tp.m_iWidth = 0;
793 } else { 792 } else {
794 tp.m_iWidth = iCharWidth; 793 tp.m_iWidth = iCharWidth;
795 } 794 }
796 tp.m_iBidiLevel = iBidiLevel; 795 tp.m_iBidiLevel = iBidiLevel;
797 tp.m_iBidiPos = pTC->m_iBidiOrder; 796 tp.m_iBidiPos = pTC->m_iBidiOrder;
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
926 } 925 }
927 if (iOffset > 0) { 926 if (iOffset > 0) {
928 for (i = 0; i < iCount; i++) { 927 for (i = 0; i < iCount; i++) {
929 CFX_RTFPiece& ttp = pCurPieces->GetAt(i); 928 CFX_RTFPiece& ttp = pCurPieces->GetAt(i);
930 ttp.m_iStartPos += iOffset; 929 ttp.m_iStartPos += iOffset;
931 } 930 }
932 } 931 }
933 } 932 }
934 } 933 }
935 934
936 int32_t CFX_RTFBreak::GetBreakPos(CFX_RTFCharArray& tca, 935 int32_t CFX_RTFBreak::GetBreakPos(std::vector<CFX_RTFChar>& tca,
937 int32_t& iEndPos, 936 int32_t& iEndPos,
938 bool bAllChars, 937 bool bAllChars,
939 bool bOnlyBrk) { 938 bool bOnlyBrk) {
940 int32_t iLength = tca.GetSize() - 1; 939 int32_t iLength = pdfium::CollectionSize<int32_t>(tca) - 1;
941 if (iLength < 1) 940 if (iLength < 1)
942 return iLength; 941 return iLength;
943 942
944 int32_t iBreak = -1, iBreakPos = -1, iIndirect = -1, iIndirectPos = -1, 943 int32_t iBreak = -1, iBreakPos = -1, iIndirect = -1, iIndirectPos = -1,
945 iLast = -1, iLastPos = -1; 944 iLast = -1, iLastPos = -1;
946 if (m_bSingleLine || m_bOrphanLine || iEndPos <= m_iBoundaryEnd) { 945 if (m_bSingleLine || m_bOrphanLine || iEndPos <= m_iBoundaryEnd) {
947 if (!bAllChars || m_bCharCode) 946 if (!bAllChars || m_bCharCode)
948 return iLength; 947 return iLength;
949 948
950 iBreak = iLength; 949 iBreak = iLength;
951 iBreakPos = iEndPos; 950 iBreakPos = iEndPos;
952 } 951 }
953 CFX_RTFChar* pCharArray = tca.GetData(); 952 CFX_RTFChar* pCharArray = tca.data();
954 if (m_bCharCode) { 953 if (m_bCharCode) {
955 const CFX_RTFChar* pChar; 954 const CFX_RTFChar* pChar;
956 int32_t iCharWidth; 955 int32_t iCharWidth;
957 while (iLength > 0) { 956 while (iLength > 0) {
958 if (iEndPos <= m_iBoundaryEnd) 957 if (iEndPos <= m_iBoundaryEnd)
959 break; 958 break;
960 959
961 pChar = pCharArray + iLength--; 960 pChar = pCharArray + iLength--;
962 iCharWidth = pChar->m_iCharWidth; 961 iCharWidth = pChar->m_iCharWidth;
963 if (iCharWidth > 0) 962 if (iCharWidth > 0)
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
1064 1063
1065 void CFX_RTFBreak::SplitTextLine(CFX_RTFLine* pCurLine, 1064 void CFX_RTFBreak::SplitTextLine(CFX_RTFLine* pCurLine,
1066 CFX_RTFLine* pNextLine, 1065 CFX_RTFLine* pNextLine,
1067 bool bAllChars) { 1066 bool bAllChars) {
1068 ASSERT(pCurLine && pNextLine); 1067 ASSERT(pCurLine && pNextLine);
1069 int32_t iCount = pCurLine->CountChars(); 1068 int32_t iCount = pCurLine->CountChars();
1070 if (iCount < 2) { 1069 if (iCount < 2) {
1071 return; 1070 return;
1072 } 1071 }
1073 int32_t iEndPos = pCurLine->GetLineEnd(); 1072 int32_t iEndPos = pCurLine->GetLineEnd();
1074 CFX_RTFCharArray& curChars = pCurLine->m_LineChars; 1073 std::vector<CFX_RTFChar>& curChars = pCurLine->m_LineChars;
1075 int32_t iCharPos = GetBreakPos(curChars, iEndPos, bAllChars, false); 1074 int32_t iCharPos = GetBreakPos(curChars, iEndPos, bAllChars, false);
1076 if (iCharPos < 0) { 1075 if (iCharPos < 0) {
1077 iCharPos = 0; 1076 iCharPos = 0;
1078 } 1077 }
1079 iCharPos++; 1078 iCharPos++;
1080 if (iCharPos >= iCount) { 1079 if (iCharPos >= iCount) {
1081 pNextLine->RemoveAll(true); 1080 pNextLine->RemoveAll(true);
1082 CFX_Char* pTC = curChars.GetDataPtr(iCharPos - 1); 1081 CFX_Char* pTC = &curChars[iCharPos - 1];
1083 pTC->m_nBreakType = FX_LBT_UNKNOWN; 1082 pTC->m_nBreakType = FX_LBT_UNKNOWN;
1084 return; 1083 return;
1085 } 1084 }
1086 CFX_RTFCharArray& nextChars = pNextLine->m_LineChars; 1085 std::vector<CFX_RTFChar>& nextChars = pNextLine->m_LineChars;
1087 int cur_size = curChars.GetSize(); 1086 int cur_size = pdfium::CollectionSize<int>(curChars);
1088 nextChars.SetSize(cur_size - iCharPos); 1087 nextChars.resize(cur_size - iCharPos);
1089 FXSYS_memcpy(nextChars.GetData(), curChars.GetDataPtr(iCharPos), 1088 FXSYS_memcpy(nextChars.data(), curChars.data() + iCharPos,
dsinclair 2017/01/24 18:43:58 std::copy?
Tom Sepez 2017/01/24 19:22:26 Missed this first time around, now done.
1090 (cur_size - iCharPos) * sizeof(CFX_RTFChar)); 1089 (cur_size - iCharPos) * sizeof(CFX_RTFChar));
1091 iCount -= iCharPos; 1090 iCount -= iCharPos;
1092 cur_size = curChars.GetSize(); 1091 cur_size = pdfium::CollectionSize<int>(curChars);
1093 curChars.RemoveAt(cur_size - iCount, iCount); 1092 curChars.erase(curChars.begin() + cur_size - iCount,
1093 curChars.begin() + cur_size);
1094 pNextLine->m_iStart = pCurLine->m_iStart; 1094 pNextLine->m_iStart = pCurLine->m_iStart;
1095 pNextLine->m_iWidth = pCurLine->GetLineEnd() - iEndPos; 1095 pNextLine->m_iWidth = pCurLine->GetLineEnd() - iEndPos;
1096 pCurLine->m_iWidth = iEndPos; 1096 pCurLine->m_iWidth = iEndPos;
1097 curChars.GetDataPtr(iCharPos - 1)->m_nBreakType = FX_LBT_UNKNOWN; 1097 curChars[iCharPos - 1].m_nBreakType = FX_LBT_UNKNOWN;
1098 iCount = nextChars.GetSize(); 1098 iCount = pdfium::CollectionSize<int>(nextChars);
1099 CFX_RTFChar* pNextChars = nextChars.GetData(); 1099 CFX_RTFChar* pNextChars = nextChars.data();
1100 for (int32_t i = 0; i < iCount; i++) { 1100 for (int32_t i = 0; i < iCount; i++) {
1101 CFX_RTFChar* tc = pNextChars + i; 1101 CFX_RTFChar* tc = pNextChars + i;
1102 if (tc->GetCharType() >= FX_CHARTYPE_ArabicAlef) { 1102 if (tc->GetCharType() >= FX_CHARTYPE_ArabicAlef) {
1103 pCurLine->m_iArabicChars--; 1103 pCurLine->m_iArabicChars--;
1104 pNextLine->m_iArabicChars++; 1104 pNextLine->m_iArabicChars++;
1105 } 1105 }
1106 if (tc->m_dwLayoutStyles & FX_RTFLAYOUTSTYLE_MBCSCode) { 1106 if (tc->m_dwLayoutStyles & FX_RTFLAYOUTSTYLE_MBCSCode) {
1107 pCurLine->m_iMBCSChars--; 1107 pCurLine->m_iMBCSChars--;
1108 pNextLine->m_iMBCSChars++; 1108 pNextLine->m_iMBCSChars++;
1109 } 1109 }
(...skipping 449 matching lines...) Expand 10 before | Expand all | Expand 10 after
1559 fFontSize(12.0f), 1559 fFontSize(12.0f),
1560 dwLayoutStyles(0), 1560 dwLayoutStyles(0),
1561 iCharRotation(0), 1561 iCharRotation(0),
1562 iBidiLevel(0), 1562 iBidiLevel(0),
1563 pRect(nullptr), 1563 pRect(nullptr),
1564 wLineBreakChar(L'\n'), 1564 wLineBreakChar(L'\n'),
1565 iHorizontalScale(100), 1565 iHorizontalScale(100),
1566 iVerticalScale(100) {} 1566 iVerticalScale(100) {}
1567 1567
1568 FX_RTFTEXTOBJ::~FX_RTFTEXTOBJ() {} 1568 FX_RTFTEXTOBJ::~FX_RTFTEXTOBJ() {}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698