| 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 "../../include/fpdfdoc/fpdf_doc.h" | 7 #include "../../include/fpdfdoc/fpdf_doc.h" |
| 8 #include "../../include/fpdfdoc/fpdf_vt.h" | 8 #include "../../include/fpdfdoc/fpdf_vt.h" |
| 9 #include "pdf_vt.h" | 9 #include "pdf_vt.h" |
| 10 const uint8_t gFontSizeSteps[] = { 4, 6, 8, 9, 10, 12, 14, 18, 20, 25,
30, 35, 40, 45, 50, 55, 60, 70, 80, 90, 100, 110, 120, 130, 144}; | 10 const uint8_t gFontSizeSteps[] = { 4, 6, 8, 9, 10, 12, 14, 18, 20, 25,
30, 35, 40, 45, 50, 55, 60, 70, 80, 90, 100, 110, 120, 130, 144}; |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 176 } | 176 } |
| 177 } else { | 177 } else { |
| 178 break; | 178 break; |
| 179 } | 179 } |
| 180 } | 180 } |
| 181 } | 181 } |
| 182 CPVT_WordPlace CSection::SearchWordPlace(const CPDF_Point & point) const | 182 CPVT_WordPlace CSection::SearchWordPlace(const CPDF_Point & point) const |
| 183 { | 183 { |
| 184 ASSERT(m_pVT != NULL); | 184 ASSERT(m_pVT != NULL); |
| 185 CPVT_WordPlace place = GetBeginWordPlace(); | 185 CPVT_WordPlace place = GetBeginWordPlace(); |
| 186 FX_BOOL bUp = TRUE; | 186 bool bUp = true; |
| 187 FX_BOOL bDown = TRUE; | 187 bool bDown = true; |
| 188 int32_t nLeft = 0; | 188 int32_t nLeft = 0; |
| 189 int32_t nRight = m_LineArray.GetSize() - 1; | 189 int32_t nRight = m_LineArray.GetSize() - 1; |
| 190 int32_t nMid = m_LineArray.GetSize() / 2; | 190 int32_t nMid = m_LineArray.GetSize() / 2; |
| 191 FX_FLOAT fTop = 0; | 191 FX_FLOAT fTop = 0; |
| 192 FX_FLOAT fBottom = 0; | 192 FX_FLOAT fBottom = 0; |
| 193 while (nLeft <= nRight) { | 193 while (nLeft <= nRight) { |
| 194 if (CLine * pLine = m_LineArray.GetAt(nMid)) { | 194 if (CLine * pLine = m_LineArray.GetAt(nMid)) { |
| 195 fTop = pLine->m_LineInfo.fLineY - pLine->m_LineInfo.fLineAscent - m_
pVT->GetLineLeading(m_SecInfo); | 195 fTop = pLine->m_LineInfo.fLineY - pLine->m_LineInfo.fLineAscent - m_
pVT->GetLineLeading(m_SecInfo); |
| 196 fBottom = pLine->m_LineInfo.fLineY - pLine->m_LineInfo.fLineDescent; | 196 fBottom = pLine->m_LineInfo.fLineY - pLine->m_LineInfo.fLineDescent; |
| 197 if (IsFloatBigger(point.y, fTop)) { | 197 if (IsFloatBigger(point.y, fTop)) { |
| 198 bUp = FALSE; | 198 bUp = false; |
| 199 } | 199 } |
| 200 if (IsFloatSmaller(point.y, fBottom)) { | 200 if (IsFloatSmaller(point.y, fBottom)) { |
| 201 bDown = FALSE; | 201 bDown = false; |
| 202 } | 202 } |
| 203 if (IsFloatSmaller(point.y, fTop)) { | 203 if (IsFloatSmaller(point.y, fTop)) { |
| 204 nRight = nMid - 1; | 204 nRight = nMid - 1; |
| 205 nMid = (nLeft + nRight) / 2; | 205 nMid = (nLeft + nRight) / 2; |
| 206 continue; | 206 continue; |
| 207 } else if (IsFloatBigger(point.y, fBottom)) { | 207 } else if (IsFloatBigger(point.y, fBottom)) { |
| 208 nLeft = nMid + 1; | 208 nLeft = nMid + 1; |
| 209 nMid = (nLeft + nRight) / 2; | 209 nMid = (nLeft + nRight) / 2; |
| 210 continue; | 210 continue; |
| 211 } else { | 211 } else { |
| (...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 387 pLine->m_LineInfo.fLineAscent = fLineAscent; | 387 pLine->m_LineInfo.fLineAscent = fLineAscent; |
| 388 pLine->m_LineInfo.fLineDescent = fLineDescent; | 388 pLine->m_LineInfo.fLineDescent = fLineDescent; |
| 389 y += (-fLineDescent); | 389 y += (-fLineDescent); |
| 390 } | 390 } |
| 391 return m_rcRet = CPVT_FloatRect(0, 0, x, y); | 391 return m_rcRet = CPVT_FloatRect(0, 0, x, y); |
| 392 } | 392 } |
| 393 CPVT_Size CTypeset::GetEditSize(FX_FLOAT fFontSize) | 393 CPVT_Size CTypeset::GetEditSize(FX_FLOAT fFontSize) |
| 394 { | 394 { |
| 395 ASSERT(m_pSection != NULL); | 395 ASSERT(m_pSection != NULL); |
| 396 ASSERT(m_pVT != NULL); | 396 ASSERT(m_pVT != NULL); |
| 397 SplitLines(FALSE, fFontSize); | 397 SplitLines(false, fFontSize); |
| 398 return CPVT_Size(m_rcRet.Width(), m_rcRet.Height()); | 398 return CPVT_Size(m_rcRet.Width(), m_rcRet.Height()); |
| 399 } | 399 } |
| 400 CPVT_FloatRect CTypeset::Typeset() | 400 CPVT_FloatRect CTypeset::Typeset() |
| 401 { | 401 { |
| 402 ASSERT(m_pSection != NULL); | 402 ASSERT(m_pSection != NULL); |
| 403 ASSERT(m_pVT != NULL); | 403 ASSERT(m_pVT != NULL); |
| 404 m_pSection->m_LineArray.Empty(); | 404 m_pSection->m_LineArray.Empty(); |
| 405 SplitLines(TRUE, 0.0f); | 405 SplitLines(true, 0.0f); |
| 406 m_pSection->m_LineArray.Clear(); | 406 m_pSection->m_LineArray.Clear(); |
| 407 OutputLines(); | 407 OutputLines(); |
| 408 return m_rcRet; | 408 return m_rcRet; |
| 409 } | 409 } |
| 410 static int special_chars[128] = { | 410 static int special_chars[128] = { |
| 411 0x0000, 0x000C, 0x0008, 0x000C, 0x0008, 0x0000, 0x0020, 0x0000, | 411 0x0000, 0x000C, 0x0008, 0x000C, 0x0008, 0x0000, 0x0020, 0x0000, |
| 412 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | 412 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
| 413 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | 413 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
| 414 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | 414 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
| 415 0x0000, 0x0008, 0x0008, 0x0000, 0x0010, 0x0000, 0x0000, 0x0028, | 415 0x0000, 0x0008, 0x0008, 0x0000, 0x0010, 0x0000, 0x0000, 0x0028, |
| 416 0x000C, 0x0008, 0x0000, 0x0000, 0x0028, 0x0028, 0x0028, 0x0028, | 416 0x000C, 0x0008, 0x0000, 0x0000, 0x0028, 0x0028, 0x0028, 0x0028, |
| 417 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, | 417 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, |
| 418 0x0002, 0x0002, 0x0008, 0x0008, 0x0000, 0x0000, 0x0000, 0x0008, | 418 0x0002, 0x0002, 0x0008, 0x0008, 0x0000, 0x0000, 0x0000, 0x0008, |
| 419 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, | 419 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, |
| 420 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, | 420 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, |
| 421 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, | 421 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, |
| 422 0x0001, 0x0001, 0x0001, 0x000C, 0x0000, 0x0008, 0x0000, 0x0000, | 422 0x0001, 0x0001, 0x0001, 0x000C, 0x0000, 0x0008, 0x0000, 0x0000, |
| 423 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, | 423 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, |
| 424 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, | 424 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, |
| 425 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, | 425 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, |
| 426 0x0001, 0x0001, 0x0001, 0x000C, 0x0000, 0x0008, 0x0000, 0x0000, | 426 0x0001, 0x0001, 0x0001, 0x000C, 0x0000, 0x0008, 0x0000, 0x0000, |
| 427 }; | 427 }; |
| 428 static FX_BOOL IsLatin(FX_WORD word) | 428 static bool IsLatin(FX_WORD word) |
| 429 { | 429 { |
| 430 if (word <= 0x007F) { | 430 if (word <= 0x007F) { |
| 431 if (special_chars[word] & 0x0001) { | 431 if (special_chars[word] & 0x0001) { |
| 432 return TRUE; | 432 return true; |
| 433 } | 433 } |
| 434 } | 434 } |
| 435 if ((word >= 0x00C0 && word <= 0x00FF) || | 435 if ((word >= 0x00C0 && word <= 0x00FF) || |
| 436 (word >= 0x0100 && word <= 0x024F) || | 436 (word >= 0x0100 && word <= 0x024F) || |
| 437 (word >= 0x1E00 && word <= 0x1EFF) || | 437 (word >= 0x1E00 && word <= 0x1EFF) || |
| 438 (word >= 0x2C60 && word <= 0x2C7F) || | 438 (word >= 0x2C60 && word <= 0x2C7F) || |
| 439 (word >= 0xA720 && word <= 0xA7FF) || | 439 (word >= 0xA720 && word <= 0xA7FF) || |
| 440 (word >= 0xFF21 && word <= 0xFF3A) || | 440 (word >= 0xFF21 && word <= 0xFF3A) || |
| 441 (word >= 0xFF41 && word <= 0xFF5A)) { | 441 (word >= 0xFF41 && word <= 0xFF5A)) { |
| 442 return TRUE; | 442 return true; |
| 443 } | 443 } |
| 444 return FALSE; | 444 return false; |
| 445 } | 445 } |
| 446 static FX_BOOL IsDigit(FX_DWORD word) | 446 static bool IsDigit(FX_DWORD word) |
| 447 { | 447 { |
| 448 return (word >= 0x0030 && word <= 0x0039) ? TRUE : FALSE; | 448 return (word >= 0x0030 && word <= 0x0039) ? true : false; |
| 449 } | 449 } |
| 450 static FX_BOOL IsCJK(FX_DWORD word) | 450 static bool IsCJK(FX_DWORD word) |
| 451 { | 451 { |
| 452 if ((word >= 0x1100 && word <= 0x11FF) || | 452 if ((word >= 0x1100 && word <= 0x11FF) || |
| 453 (word >= 0x2E80 && word <= 0x2FFF) || | 453 (word >= 0x2E80 && word <= 0x2FFF) || |
| 454 (word >= 0x3040 && word <= 0x9FBF) || | 454 (word >= 0x3040 && word <= 0x9FBF) || |
| 455 (word >= 0xAC00 && word <= 0xD7AF) || | 455 (word >= 0xAC00 && word <= 0xD7AF) || |
| 456 (word >= 0xF900 && word <= 0xFAFF) || | 456 (word >= 0xF900 && word <= 0xFAFF) || |
| 457 (word >= 0xFE30 && word <= 0xFE4F) || | 457 (word >= 0xFE30 && word <= 0xFE4F) || |
| 458 (word >= 0x20000 && word <= 0x2A6DF) || | 458 (word >= 0x20000 && word <= 0x2A6DF) || |
| 459 (word >= 0x2F800 && word <= 0x2FA1F)) { | 459 (word >= 0x2F800 && word <= 0x2FA1F)) { |
| 460 return TRUE; | 460 return true; |
| 461 } | 461 } |
| 462 if (word >= 0x3000 && word <= 0x303F) { | 462 if (word >= 0x3000 && word <= 0x303F) { |
| 463 if (word == 0x3005 || word == 0x3006 || word == 0x3021 || word == 0x3022
|| | 463 if (word == 0x3005 || word == 0x3006 || word == 0x3021 || word == 0x3022
|| |
| 464 word == 0x3023 || word == 0x3024 || word == 0x3025 || word == 0x
3026 || | 464 word == 0x3023 || word == 0x3024 || word == 0x3025 || word == 0x
3026 || |
| 465 word == 0x3027 || word == 0x3028 || word == 0x3029 || word == 0x
3031 || | 465 word == 0x3027 || word == 0x3028 || word == 0x3029 || word == 0x
3031 || |
| 466 word == 0x3032 || word == 0x3033 || word == 0x3034 || word == 0x
3035) { | 466 word == 0x3032 || word == 0x3033 || word == 0x3034 || word == 0x
3035) { |
| 467 return TRUE; | 467 return true; |
| 468 } | 468 } |
| 469 return FALSE; | 469 return false; |
| 470 } | 470 } |
| 471 if (word >= 0xFF66 && word <= 0xFF9D) { | 471 if (word >= 0xFF66 && word <= 0xFF9D) { |
| 472 return TRUE; | 472 return true; |
| 473 } | 473 } |
| 474 return FALSE; | 474 return false; |
| 475 } | 475 } |
| 476 static FX_BOOL IsPunctuation(FX_DWORD word) | 476 static bool IsPunctuation(FX_DWORD word) |
| 477 { | 477 { |
| 478 if (word <= 0x007F) { | 478 if (word <= 0x007F) { |
| 479 if ((special_chars[word] >> 3) & 1) { | 479 if ((special_chars[word] >> 3) & 1) { |
| 480 return TRUE; | 480 return true; |
| 481 } | 481 } |
| 482 } else if (word >= 0x0080 && word <= 0x00FF) { | 482 } else if (word >= 0x0080 && word <= 0x00FF) { |
| 483 if (word == 0x0082 || word == 0x0084 || word == 0x0085 || word == 0x0091
|| | 483 if (word == 0x0082 || word == 0x0084 || word == 0x0085 || word == 0x0091
|| |
| 484 word == 0x0092 || word == 0x0093 || word <= 0x0094 || word == 0x
0096 || | 484 word == 0x0092 || word == 0x0093 || word <= 0x0094 || word == 0x
0096 || |
| 485 word == 0x00B4 || word == 0x00B8) { | 485 word == 0x00B4 || word == 0x00B8) { |
| 486 return TRUE; | 486 return true; |
| 487 } | 487 } |
| 488 } else if (word >= 0x2000 && word <= 0x206F) { | 488 } else if (word >= 0x2000 && word <= 0x206F) { |
| 489 if (word == 0x2010 || word == 0x2011 || word == 0x2012 || word == 0x2013
|| | 489 if (word == 0x2010 || word == 0x2011 || word == 0x2012 || word == 0x2013
|| |
| 490 word == 0x2018 || word == 0x2019 || word == 0x201A || word == 0x
201B || | 490 word == 0x2018 || word == 0x2019 || word == 0x201A || word == 0x
201B || |
| 491 word == 0x201C || word == 0x201D || word == 0x201E || word == 0x
201F || | 491 word == 0x201C || word == 0x201D || word == 0x201E || word == 0x
201F || |
| 492 word == 0x2032 || word == 0x2033 || word == 0x2034 || word == 0x
2035 || | 492 word == 0x2032 || word == 0x2033 || word == 0x2034 || word == 0x
2035 || |
| 493 word == 0x2036 || word == 0x2037 || word == 0x203C || word == 0x
203D || | 493 word == 0x2036 || word == 0x2037 || word == 0x203C || word == 0x
203D || |
| 494 word == 0x203E || word == 0x2044) { | 494 word == 0x203E || word == 0x2044) { |
| 495 return TRUE; | 495 return true; |
| 496 } | 496 } |
| 497 } else if (word >= 0x3000 && word <= 0x303F) { | 497 } else if (word >= 0x3000 && word <= 0x303F) { |
| 498 if (word == 0x3001 || word == 0x3002 || word == 0x3003 || word == 0x3005
|| | 498 if (word == 0x3001 || word == 0x3002 || word == 0x3003 || word == 0x3005
|| |
| 499 word == 0x3009 || word == 0x300A || word == 0x300B || word == 0x
300C || | 499 word == 0x3009 || word == 0x300A || word == 0x300B || word == 0x
300C || |
| 500 word == 0x300D || word == 0x300F || word == 0x300E || word == 0x
3010 || | 500 word == 0x300D || word == 0x300F || word == 0x300E || word == 0x
3010 || |
| 501 word == 0x3011 || word == 0x3014 || word == 0x3015 || word == 0x
3016 || | 501 word == 0x3011 || word == 0x3014 || word == 0x3015 || word == 0x
3016 || |
| 502 word == 0x3017 || word == 0x3018 || word == 0x3019 || word == 0x
301A || | 502 word == 0x3017 || word == 0x3018 || word == 0x3019 || word == 0x
301A || |
| 503 word == 0x301B || word == 0x301D || word == 0x301E || word == 0x
301F) { | 503 word == 0x301B || word == 0x301D || word == 0x301E || word == 0x
301F) { |
| 504 return TRUE; | 504 return true; |
| 505 } | 505 } |
| 506 } else if (word >= 0xFE50 && word <= 0xFE6F) { | 506 } else if (word >= 0xFE50 && word <= 0xFE6F) { |
| 507 if ((word >= 0xFE50 && word <= 0xFE5E) || word == 0xFE63) { | 507 if ((word >= 0xFE50 && word <= 0xFE5E) || word == 0xFE63) { |
| 508 return TRUE; | 508 return true; |
| 509 } | 509 } |
| 510 } else if (word >= 0xFF00 && word <= 0xFFEF) { | 510 } else if (word >= 0xFF00 && word <= 0xFFEF) { |
| 511 if (word == 0xFF01 || word == 0xFF02 || word == 0xFF07 || word == 0xFF08
|| | 511 if (word == 0xFF01 || word == 0xFF02 || word == 0xFF07 || word == 0xFF08
|| |
| 512 word == 0xFF09 || word == 0xFF0C || word == 0xFF0E || word == 0x
FF0F || | 512 word == 0xFF09 || word == 0xFF0C || word == 0xFF0E || word == 0x
FF0F || |
| 513 word == 0xFF1A || word == 0xFF1B || word == 0xFF1F || word == 0x
FF3B || | 513 word == 0xFF1A || word == 0xFF1B || word == 0xFF1F || word == 0x
FF3B || |
| 514 word == 0xFF3D || word == 0xFF40 || word == 0xFF5B || word == 0x
FF5C || | 514 word == 0xFF3D || word == 0xFF40 || word == 0xFF5B || word == 0x
FF5C || |
| 515 word == 0xFF5D || word == 0xFF61 || word == 0xFF62 || word == 0x
FF63 || | 515 word == 0xFF5D || word == 0xFF61 || word == 0xFF62 || word == 0x
FF63 || |
| 516 word == 0xFF64 || word == 0xFF65 || word == 0xFF9E || word == 0x
FF9F) { | 516 word == 0xFF64 || word == 0xFF65 || word == 0xFF9E || word == 0x
FF9F) { |
| 517 return TRUE; | 517 return true; |
| 518 } | 518 } |
| 519 } | 519 } |
| 520 return FALSE; | 520 return false; |
| 521 } | 521 } |
| 522 static FX_BOOL IsConnectiveSymbol(FX_DWORD word) | 522 static bool IsConnectiveSymbol(FX_DWORD word) |
| 523 { | 523 { |
| 524 if (word <= 0x007F) { | 524 if (word <= 0x007F) { |
| 525 if ((special_chars[word] >> 5) & 1) { | 525 if ((special_chars[word] >> 5) & 1) { |
| 526 return TRUE; | 526 return true; |
| 527 } | 527 } |
| 528 } | 528 } |
| 529 return FALSE; | 529 return false; |
| 530 } | 530 } |
| 531 static FX_BOOL IsOpenStylePunctuation(FX_DWORD word) | 531 static bool IsOpenStylePunctuation(FX_DWORD word) |
| 532 { | 532 { |
| 533 if (word <= 0x007F) { | 533 if (word <= 0x007F) { |
| 534 if ((special_chars[word] >> 2) & 1) { | 534 if ((special_chars[word] >> 2) & 1) { |
| 535 return TRUE; | 535 return true; |
| 536 } | 536 } |
| 537 } else if (word == 0x300A || word == 0x300C || word == 0x300E || word == 0x3
010 || | 537 } else if (word == 0x300A || word == 0x300C || word == 0x300E || word == 0x3
010 || |
| 538 word == 0x3014 || word == 0x3016 || word == 0x3018 || word == 0x3
01A || | 538 word == 0x3014 || word == 0x3016 || word == 0x3018 || word == 0x3
01A || |
| 539 word == 0xFF08 || word == 0xFF3B || word == 0xFF5B || word == 0xF
F62) { | 539 word == 0xFF08 || word == 0xFF3B || word == 0xFF5B || word == 0xF
F62) { |
| 540 return TRUE; | 540 return true; |
| 541 } | 541 } |
| 542 return FALSE; | 542 return false; |
| 543 } | 543 } |
| 544 static FX_BOOL IsCurrencySymbol(FX_WORD word) | 544 static bool IsCurrencySymbol(FX_WORD word) |
| 545 { | 545 { |
| 546 if (word == 0x0024 || word == 0x0080 || word == 0x00A2 || word == 0x00A3 || | 546 if (word == 0x0024 || word == 0x0080 || word == 0x00A2 || word == 0x00A3 || |
| 547 word == 0x00A4 || word == 0x00A5 || (word >= 0x20A0 && word <= 0x20C
F) || | 547 word == 0x00A4 || word == 0x00A5 || (word >= 0x20A0 && word <= 0x20C
F) || |
| 548 word == 0xFE69 || word == 0xFF04 || word == 0xFFE0 || word == 0xFFE1
|| | 548 word == 0xFE69 || word == 0xFF04 || word == 0xFFE0 || word == 0xFFE1
|| |
| 549 word == 0xFFE5 || word == 0xFFE6) { | 549 word == 0xFFE5 || word == 0xFFE6) { |
| 550 return TRUE; | 550 return true; |
| 551 } | 551 } |
| 552 return FALSE; | 552 return false; |
| 553 } | 553 } |
| 554 static FX_BOOL IsPrefixSymbol(FX_WORD word) | 554 static bool IsPrefixSymbol(FX_WORD word) |
| 555 { | 555 { |
| 556 if (IsCurrencySymbol(word)) { | 556 if (IsCurrencySymbol(word)) { |
| 557 return TRUE; | 557 return true; |
| 558 } | 558 } |
| 559 if (word == 0x2116) { | 559 if (word == 0x2116) { |
| 560 return TRUE; | 560 return true; |
| 561 } | 561 } |
| 562 return FALSE; | 562 return false; |
| 563 } | 563 } |
| 564 static FX_BOOL IsSpace(FX_WORD word) | 564 static bool IsSpace(FX_WORD word) |
| 565 { | 565 { |
| 566 return (word == 0x0020 || word == 0x3000) ? TRUE : FALSE; | 566 return (word == 0x0020 || word == 0x3000) ? true : false; |
| 567 } | 567 } |
| 568 static FX_BOOL NeedDivision(FX_WORD prevWord, FX_WORD curWord) | 568 static bool NeedDivision(FX_WORD prevWord, FX_WORD curWord) |
| 569 { | 569 { |
| 570 if ((IsLatin(prevWord) || IsDigit(prevWord)) && (IsLatin(curWord) || IsDigit
(curWord))) { | 570 if ((IsLatin(prevWord) || IsDigit(prevWord)) && (IsLatin(curWord) || IsDigit
(curWord))) { |
| 571 return FALSE; | 571 return false; |
| 572 } | 572 } |
| 573 if (IsSpace(curWord) || IsPunctuation(curWord)) { | 573 if (IsSpace(curWord) || IsPunctuation(curWord)) { |
| 574 return FALSE; | 574 return false; |
| 575 } | 575 } |
| 576 if (IsConnectiveSymbol(prevWord) || IsConnectiveSymbol(curWord)) { | 576 if (IsConnectiveSymbol(prevWord) || IsConnectiveSymbol(curWord)) { |
| 577 return FALSE; | 577 return false; |
| 578 } | 578 } |
| 579 if (IsSpace(prevWord) || IsPunctuation(prevWord)) { | 579 if (IsSpace(prevWord) || IsPunctuation(prevWord)) { |
| 580 return TRUE; | 580 return true; |
| 581 } | 581 } |
| 582 if (IsPrefixSymbol(prevWord)) { | 582 if (IsPrefixSymbol(prevWord)) { |
| 583 return FALSE; | 583 return false; |
| 584 } | 584 } |
| 585 if (IsPrefixSymbol(curWord) || IsCJK(curWord)) { | 585 if (IsPrefixSymbol(curWord) || IsCJK(curWord)) { |
| 586 return TRUE; | 586 return true; |
| 587 } | 587 } |
| 588 if (IsCJK(prevWord)) { | 588 if (IsCJK(prevWord)) { |
| 589 return TRUE; | 589 return true; |
| 590 } | 590 } |
| 591 return FALSE; | 591 return false; |
| 592 } | 592 } |
| 593 void CTypeset::SplitLines(FX_BOOL bTypeset, FX_FLOAT fFontSize) | 593 void CTypeset::SplitLines(bool bTypeset, FX_FLOAT fFontSize) |
| 594 { | 594 { |
| 595 ASSERT(m_pVT != NULL); | 595 ASSERT(m_pVT != NULL); |
| 596 ASSERT(m_pSection != NULL); | 596 ASSERT(m_pSection != NULL); |
| 597 int32_t nLineHead = 0; | 597 int32_t nLineHead = 0; |
| 598 int32_t nLineTail = 0; | 598 int32_t nLineTail = 0; |
| 599 FX_FLOAT fMaxX = 0.0f, fMaxY = 0.0f; | 599 FX_FLOAT fMaxX = 0.0f, fMaxY = 0.0f; |
| 600 FX_FLOAT fLineWidth = 0.0f, fBackupLineWidth = 0.0f; | 600 FX_FLOAT fLineWidth = 0.0f, fBackupLineWidth = 0.0f; |
| 601 FX_FLOAT fLineAscent = 0.0f, fBackupLineAscent = 0.0f; | 601 FX_FLOAT fLineAscent = 0.0f, fBackupLineAscent = 0.0f; |
| 602 FX_FLOAT fLineDescent = 0.0f, fBackupLineDescent = 0.0f; | 602 FX_FLOAT fLineDescent = 0.0f, fBackupLineDescent = 0.0f; |
| 603 int32_t nWordStartPos = 0; | 603 int32_t nWordStartPos = 0; |
| 604 FX_BOOL bFullWord = FALSE; | 604 bool bFullWord = false; |
| 605 int32_t nLineFullWordIndex = 0; | 605 int32_t nLineFullWordIndex = 0; |
| 606 int32_t nCharIndex = 0; | 606 int32_t nCharIndex = 0; |
| 607 CPVT_LineInfo line; | 607 CPVT_LineInfo line; |
| 608 FX_FLOAT fWordWidth = 0; | 608 FX_FLOAT fWordWidth = 0; |
| 609 FX_FLOAT fTypesetWidth = FPDF_MAX(m_pVT->GetPlateWidth() - m_pVT->GetLineInd
ent(m_pSection->m_SecInfo), 0.0f); | 609 FX_FLOAT fTypesetWidth = FPDF_MAX(m_pVT->GetPlateWidth() - m_pVT->GetLineInd
ent(m_pSection->m_SecInfo), 0.0f); |
| 610 int32_t nTotalWords = m_pSection->m_WordArray.GetSize(); | 610 int32_t nTotalWords = m_pSection->m_WordArray.GetSize(); |
| 611 FX_BOOL bOpened = FALSE; | 611 bool bOpened = false; |
| 612 if (nTotalWords > 0) { | 612 if (nTotalWords > 0) { |
| 613 int32_t i = 0; | 613 int32_t i = 0; |
| 614 while (i < nTotalWords) { | 614 while (i < nTotalWords) { |
| 615 CPVT_WordInfo * pWord = m_pSection->m_WordArray.GetAt(i); | 615 CPVT_WordInfo * pWord = m_pSection->m_WordArray.GetAt(i); |
| 616 CPVT_WordInfo* pOldWord = pWord; | 616 CPVT_WordInfo* pOldWord = pWord; |
| 617 if (i > 0) { | 617 if (i > 0) { |
| 618 pOldWord = m_pSection->m_WordArray.GetAt(i - 1); | 618 pOldWord = m_pSection->m_WordArray.GetAt(i - 1); |
| 619 } | 619 } |
| 620 if (pWord) { | 620 if (pWord) { |
| 621 if (bTypeset) { | 621 if (bTypeset) { |
| 622 fLineAscent = FPDF_MAX(fLineAscent, m_pVT->GetWordAscent(*pW
ord, TRUE)); | 622 fLineAscent = FPDF_MAX(fLineAscent, m_pVT->GetWordAscent(*pW
ord, true)); |
| 623 fLineDescent = FPDF_MIN(fLineDescent, m_pVT->GetWordDescent(
*pWord, TRUE)); | 623 fLineDescent = FPDF_MIN(fLineDescent, m_pVT->GetWordDescent(
*pWord, true)); |
| 624 fWordWidth = m_pVT->GetWordWidth(*pWord); | 624 fWordWidth = m_pVT->GetWordWidth(*pWord); |
| 625 } else { | 625 } else { |
| 626 fLineAscent = FPDF_MAX(fLineAscent, m_pVT->GetWordAscent(*pW
ord, fFontSize)); | 626 fLineAscent = FPDF_MAX(fLineAscent, m_pVT->GetWordAscent(*pW
ord, fFontSize)); |
| 627 fLineDescent = FPDF_MIN(fLineDescent, m_pVT->GetWordDescent(
*pWord, fFontSize)); | 627 fLineDescent = FPDF_MIN(fLineDescent, m_pVT->GetWordDescent(
*pWord, fFontSize)); |
| 628 fWordWidth = m_pVT->GetWordWidth(pWord->nFontIndex, | 628 fWordWidth = m_pVT->GetWordWidth(pWord->nFontIndex, |
| 629 pWord->Word, | 629 pWord->Word, |
| 630 m_pVT->m_wSubWord, | 630 m_pVT->m_wSubWord, |
| 631 m_pVT->m_fCharSpace, | 631 m_pVT->m_fCharSpace, |
| 632 m_pVT->m_nHorzScale, | 632 m_pVT->m_nHorzScale, |
| 633 fFontSize, | 633 fFontSize, |
| 634 pWord->fWordTail, | 634 pWord->fWordTail, |
| 635 0); | 635 0); |
| 636 } | 636 } |
| 637 if (!bOpened) { | 637 if (!bOpened) { |
| 638 if (IsOpenStylePunctuation(pWord->Word)) { | 638 if (IsOpenStylePunctuation(pWord->Word)) { |
| 639 bOpened = TRUE; | 639 bOpened = true; |
| 640 bFullWord = TRUE; | 640 bFullWord = true; |
| 641 } else if (pOldWord != NULL) { | 641 } else if (pOldWord != NULL) { |
| 642 if (NeedDivision(pOldWord->Word, pWord->Word)) { | 642 if (NeedDivision(pOldWord->Word, pWord->Word)) { |
| 643 bFullWord = TRUE; | 643 bFullWord = true; |
| 644 } | 644 } |
| 645 } | 645 } |
| 646 } else { | 646 } else { |
| 647 if (!IsSpace(pWord->Word) && !IsOpenStylePunctuation(pWord->
Word)) { | 647 if (!IsSpace(pWord->Word) && !IsOpenStylePunctuation(pWord->
Word)) { |
| 648 bOpened = FALSE; | 648 bOpened = false; |
| 649 } | 649 } |
| 650 } | 650 } |
| 651 if (bFullWord) { | 651 if (bFullWord) { |
| 652 bFullWord = FALSE; | 652 bFullWord = false; |
| 653 if (nCharIndex > 0) { | 653 if (nCharIndex > 0) { |
| 654 nLineFullWordIndex ++; | 654 nLineFullWordIndex ++; |
| 655 } | 655 } |
| 656 nWordStartPos = i; | 656 nWordStartPos = i; |
| 657 fBackupLineWidth = fLineWidth; | 657 fBackupLineWidth = fLineWidth; |
| 658 fBackupLineAscent = fLineAscent; | 658 fBackupLineAscent = fLineAscent; |
| 659 fBackupLineDescent = fLineDescent; | 659 fBackupLineDescent = fLineDescent; |
| 660 } | 660 } |
| 661 nCharIndex++; | 661 nCharIndex++; |
| 662 } | 662 } |
| (...skipping 21 matching lines...) Expand all Loading... |
| 684 } | 684 } |
| 685 fMaxY += (fLineAscent + m_pVT->GetLineLeading(m_pSection->m_SecI
nfo)); | 685 fMaxY += (fLineAscent + m_pVT->GetLineLeading(m_pSection->m_SecI
nfo)); |
| 686 fMaxY += (-fLineDescent); | 686 fMaxY += (-fLineDescent); |
| 687 fMaxX = FPDF_MAX(fLineWidth, fMaxX); | 687 fMaxX = FPDF_MAX(fLineWidth, fMaxX); |
| 688 nLineHead = i; | 688 nLineHead = i; |
| 689 fLineWidth = 0.0f; | 689 fLineWidth = 0.0f; |
| 690 fLineAscent = 0.0f; | 690 fLineAscent = 0.0f; |
| 691 fLineDescent = 0.0f; | 691 fLineDescent = 0.0f; |
| 692 nCharIndex = 0; | 692 nCharIndex = 0; |
| 693 nLineFullWordIndex = 0; | 693 nLineFullWordIndex = 0; |
| 694 bFullWord = FALSE; | 694 bFullWord = false; |
| 695 } else { | 695 } else { |
| 696 fLineWidth += fWordWidth; | 696 fLineWidth += fWordWidth; |
| 697 i++; | 697 i++; |
| 698 } | 698 } |
| 699 } | 699 } |
| 700 if (nLineHead <= nTotalWords - 1) { | 700 if (nLineHead <= nTotalWords - 1) { |
| 701 nLineTail = nTotalWords - 1; | 701 nLineTail = nTotalWords - 1; |
| 702 if (bTypeset) { | 702 if (bTypeset) { |
| 703 line.nBeginWordIndex = nLineHead; | 703 line.nBeginWordIndex = nLineHead; |
| 704 line.nEndWordIndex = nLineTail; | 704 line.nEndWordIndex = nLineTail; |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 802 } | 802 } |
| 803 fPosY += (-pLine->m_LineInfo.fLineDescent); | 803 fPosY += (-pLine->m_LineInfo.fLineDescent); |
| 804 } | 804 } |
| 805 } | 805 } |
| 806 } | 806 } |
| 807 m_rcRet = CPVT_FloatRect(fMinX, fMinY, fMaxX, fMaxY); | 807 m_rcRet = CPVT_FloatRect(fMinX, fMinY, fMaxX, fMaxY); |
| 808 } | 808 } |
| 809 CPDF_VariableText::CPDF_VariableText() : | 809 CPDF_VariableText::CPDF_VariableText() : |
| 810 m_nLimitChar(0), | 810 m_nLimitChar(0), |
| 811 m_nCharArray(0), | 811 m_nCharArray(0), |
| 812 m_bMultiLine(FALSE), | 812 m_bMultiLine(false), |
| 813 m_bLimitWidth(FALSE), | 813 m_bLimitWidth(false), |
| 814 m_bAutoFontSize(FALSE), | 814 m_bAutoFontSize(false), |
| 815 m_nAlignment(0), | 815 m_nAlignment(0), |
| 816 m_fLineLeading(0.0f), | 816 m_fLineLeading(0.0f), |
| 817 m_fCharSpace(0.0f), | 817 m_fCharSpace(0.0f), |
| 818 m_nHorzScale(100), | 818 m_nHorzScale(100), |
| 819 m_wSubWord(0), | 819 m_wSubWord(0), |
| 820 m_fFontSize(0.0f), | 820 m_fFontSize(0.0f), |
| 821 m_bInitial(FALSE), | 821 m_bInitial(false), |
| 822 m_bRichText(FALSE), | 822 m_bRichText(false), |
| 823 m_pVTProvider(NULL), | 823 m_pVTProvider(NULL), |
| 824 m_pVTIterator(NULL) | 824 m_pVTIterator(NULL) |
| 825 { | 825 { |
| 826 } | 826 } |
| 827 CPDF_VariableText::~CPDF_VariableText() | 827 CPDF_VariableText::~CPDF_VariableText() |
| 828 { | 828 { |
| 829 delete m_pVTIterator; | 829 delete m_pVTIterator; |
| 830 m_pVTIterator = NULL; | 830 m_pVTIterator = NULL; |
| 831 ResetAll(); | 831 ResetAll(); |
| 832 } | 832 } |
| 833 void CPDF_VariableText::Initialize() | 833 void CPDF_VariableText::Initialize() |
| 834 { | 834 { |
| 835 if (!m_bInitial) { | 835 if (!m_bInitial) { |
| 836 CPVT_SectionInfo secinfo; | 836 CPVT_SectionInfo secinfo; |
| 837 if (m_bRichText) { | 837 if (m_bRichText) { |
| 838 secinfo.pSecProps = new CPVT_SecProps(0.0f, 0.0f, 0); | 838 secinfo.pSecProps = new CPVT_SecProps(0.0f, 0.0f, 0); |
| 839 secinfo.pWordProps = new CPVT_WordProps(GetDefaultFontIndex(), PVT_D
EFAULT_FONTSIZE, 0, 0, 0); | 839 secinfo.pWordProps = new CPVT_WordProps(GetDefaultFontIndex(), PVT_D
EFAULT_FONTSIZE, 0, 0, 0); |
| 840 } | 840 } |
| 841 CPVT_WordPlace place; | 841 CPVT_WordPlace place; |
| 842 place.nSecIndex = 0; | 842 place.nSecIndex = 0; |
| 843 AddSection(place, secinfo); | 843 AddSection(place, secinfo); |
| 844 CPVT_LineInfo lineinfo; | 844 CPVT_LineInfo lineinfo; |
| 845 lineinfo.fLineAscent = GetFontAscent(GetDefaultFontIndex(), GetFontSize(
)); | 845 lineinfo.fLineAscent = GetFontAscent(GetDefaultFontIndex(), GetFontSize(
)); |
| 846 lineinfo.fLineDescent = GetFontDescent(GetDefaultFontIndex(), GetFontSiz
e()); | 846 lineinfo.fLineDescent = GetFontDescent(GetDefaultFontIndex(), GetFontSiz
e()); |
| 847 AddLine(place, lineinfo); | 847 AddLine(place, lineinfo); |
| 848 if (CSection * pSection = m_SectionArray.GetAt(0)) { | 848 if (CSection * pSection = m_SectionArray.GetAt(0)) { |
| 849 pSection->ResetLinePlace(); | 849 pSection->ResetLinePlace(); |
| 850 } | 850 } |
| 851 m_bInitial = TRUE; | 851 m_bInitial = true; |
| 852 } | 852 } |
| 853 } | 853 } |
| 854 void CPDF_VariableText::ResetAll() | 854 void CPDF_VariableText::ResetAll() |
| 855 { | 855 { |
| 856 m_bInitial = FALSE; | 856 m_bInitial = false; |
| 857 ResetSectionArray(); | 857 ResetSectionArray(); |
| 858 } | 858 } |
| 859 CPVT_WordPlace CPDF_VariableText::InsertWord(const CPVT_WordPlace & place, FX_WO
RD word, int32_t charset, | 859 CPVT_WordPlace CPDF_VariableText::InsertWord(const CPVT_WordPlace & place, FX_WO
RD word, int32_t charset, |
| 860 const CPVT_WordProps * pWordProps) | 860 const CPVT_WordProps * pWordProps) |
| 861 { | 861 { |
| 862 int32_t nTotlaWords = GetTotalWords(); | 862 int32_t nTotlaWords = GetTotalWords(); |
| 863 if (m_nLimitChar > 0 && nTotlaWords >= m_nLimitChar) { | 863 if (m_nLimitChar > 0 && nTotlaWords >= m_nLimitChar) { |
| 864 return place; | 864 return place; |
| 865 } | 865 } |
| 866 if (m_nCharArray > 0 && nTotlaWords >= m_nCharArray) { | 866 if (m_nCharArray > 0 && nTotlaWords >= m_nCharArray) { |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 949 break; | 949 break; |
| 950 } | 950 } |
| 951 if (wp == oldwp) { | 951 if (wp == oldwp) { |
| 952 break; | 952 break; |
| 953 } | 953 } |
| 954 } | 954 } |
| 955 return wp; | 955 return wp; |
| 956 } | 956 } |
| 957 CPVT_WordPlace CPDF_VariableText::DeleteWords(const CPVT_WordRange & PlaceRange) | 957 CPVT_WordPlace CPDF_VariableText::DeleteWords(const CPVT_WordRange & PlaceRange) |
| 958 { | 958 { |
| 959 FX_BOOL bLastSecPos = FALSE; | 959 bool bLastSecPos = false; |
| 960 if (CSection * pSection = m_SectionArray.GetAt(PlaceRange.EndPos.nSecIndex))
{ | 960 if (CSection * pSection = m_SectionArray.GetAt(PlaceRange.EndPos.nSecIndex))
{ |
| 961 bLastSecPos = (PlaceRange.EndPos == pSection->GetEndWordPlace()); | 961 bLastSecPos = (PlaceRange.EndPos == pSection->GetEndWordPlace()); |
| 962 } | 962 } |
| 963 ClearWords(PlaceRange); | 963 ClearWords(PlaceRange); |
| 964 if (PlaceRange.BeginPos.nSecIndex != PlaceRange.EndPos.nSecIndex) { | 964 if (PlaceRange.BeginPos.nSecIndex != PlaceRange.EndPos.nSecIndex) { |
| 965 ClearEmptySections(PlaceRange); | 965 ClearEmptySections(PlaceRange); |
| 966 if (!bLastSecPos) { | 966 if (!bLastSecPos) { |
| 967 LinkLatterSection(PlaceRange.BeginPos); | 967 LinkLatterSection(PlaceRange.BeginPos); |
| 968 } | 968 } |
| 969 } | 969 } |
| 970 return PlaceRange.BeginPos; | 970 return PlaceRange.BeginPos; |
| 971 } | 971 } |
| 972 CPVT_WordPlace CPDF_VariableText::DeleteWord(const CPVT_WordPlace & place) | 972 CPVT_WordPlace CPDF_VariableText::DeleteWord(const CPVT_WordPlace & place) |
| 973 { | 973 { |
| 974 return ClearRightWord(AjustLineHeader(place, TRUE)); | 974 return ClearRightWord(AjustLineHeader(place, true)); |
| 975 } | 975 } |
| 976 CPVT_WordPlace CPDF_VariableText::BackSpaceWord(const CPVT_WordPlace & place) | 976 CPVT_WordPlace CPDF_VariableText::BackSpaceWord(const CPVT_WordPlace & place) |
| 977 { | 977 { |
| 978 return ClearLeftWord(AjustLineHeader(place, TRUE)); | 978 return ClearLeftWord(AjustLineHeader(place, true)); |
| 979 } | 979 } |
| 980 void CPDF_VariableText::SetText(const FX_WCHAR* text, int32_t charset, const CPV
T_SecProps * pSecProps, | 980 void CPDF_VariableText::SetText(const FX_WCHAR* text, int32_t charset, const CPV
T_SecProps * pSecProps, |
| 981 const CPVT_WordProps * pWordProps) | 981 const CPVT_WordProps * pWordProps) |
| 982 { | 982 { |
| 983 DeleteWords(CPVT_WordRange(GetBeginWordPlace(), GetEndWordPlace())); | 983 DeleteWords(CPVT_WordRange(GetBeginWordPlace(), GetEndWordPlace())); |
| 984 CFX_WideString swText = text; | 984 CFX_WideString swText = text; |
| 985 CPVT_WordPlace wp(0, 0, -1); | 985 CPVT_WordPlace wp(0, 0, -1); |
| 986 CPVT_SectionInfo secinfo; | 986 CPVT_SectionInfo secinfo; |
| 987 if (m_bRichText) { | 987 if (m_bRichText) { |
| 988 if (pSecProps) { | 988 if (pSecProps) { |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1037 } | 1037 } |
| 1038 } | 1038 } |
| 1039 void CPDF_VariableText::UpdateWordPlace(CPVT_WordPlace & place) const | 1039 void CPDF_VariableText::UpdateWordPlace(CPVT_WordPlace & place) const |
| 1040 { | 1040 { |
| 1041 if (place.nSecIndex < 0) { | 1041 if (place.nSecIndex < 0) { |
| 1042 place = GetBeginWordPlace(); | 1042 place = GetBeginWordPlace(); |
| 1043 } | 1043 } |
| 1044 if (place.nSecIndex >= m_SectionArray.GetSize()) { | 1044 if (place.nSecIndex >= m_SectionArray.GetSize()) { |
| 1045 place = GetEndWordPlace(); | 1045 place = GetEndWordPlace(); |
| 1046 } | 1046 } |
| 1047 place = AjustLineHeader(place, TRUE); | 1047 place = AjustLineHeader(place, true); |
| 1048 if (CSection * pSection = m_SectionArray.GetAt(place.nSecIndex)) { | 1048 if (CSection * pSection = m_SectionArray.GetAt(place.nSecIndex)) { |
| 1049 pSection->UpdateWordPlace(place); | 1049 pSection->UpdateWordPlace(place); |
| 1050 } | 1050 } |
| 1051 } | 1051 } |
| 1052 int32_t CPDF_VariableText::WordPlaceToWordIndex(const CPVT_WordPlace & place) co
nst | 1052 int32_t CPDF_VariableText::WordPlaceToWordIndex(const CPVT_WordPlace & place) co
nst |
| 1053 { | 1053 { |
| 1054 CPVT_WordPlace newplace = place; | 1054 CPVT_WordPlace newplace = place; |
| 1055 UpdateWordPlace(newplace); | 1055 UpdateWordPlace(newplace); |
| 1056 int32_t nIndex = 0; | 1056 int32_t nIndex = 0; |
| 1057 int32_t i = 0; | 1057 int32_t i = 0; |
| 1058 int32_t sz = 0; | 1058 int32_t sz = 0; |
| 1059 for (i = 0, sz = m_SectionArray.GetSize(); i < sz && i < newplace.nSecIndex;
i++) { | 1059 for (i = 0, sz = m_SectionArray.GetSize(); i < sz && i < newplace.nSecIndex;
i++) { |
| 1060 if (CSection * pSection = m_SectionArray.GetAt(i)) { | 1060 if (CSection * pSection = m_SectionArray.GetAt(i)) { |
| 1061 nIndex += pSection->m_WordArray.GetSize(); | 1061 nIndex += pSection->m_WordArray.GetSize(); |
| 1062 if (i != m_SectionArray.GetSize() - 1) { | 1062 if (i != m_SectionArray.GetSize() - 1) { |
| 1063 nIndex += PVT_RETURN_LENGTH; | 1063 nIndex += PVT_RETURN_LENGTH; |
| 1064 } | 1064 } |
| 1065 } | 1065 } |
| 1066 } | 1066 } |
| 1067 if (i >= 0 && i < m_SectionArray.GetSize()) { | 1067 if (i >= 0 && i < m_SectionArray.GetSize()) { |
| 1068 nIndex += newplace.nWordIndex + PVT_RETURN_LENGTH; | 1068 nIndex += newplace.nWordIndex + PVT_RETURN_LENGTH; |
| 1069 } | 1069 } |
| 1070 return nIndex; | 1070 return nIndex; |
| 1071 } | 1071 } |
| 1072 CPVT_WordPlace CPDF_VariableText::WordIndexToWordPlace(int32_t index) const | 1072 CPVT_WordPlace CPDF_VariableText::WordIndexToWordPlace(int32_t index) const |
| 1073 { | 1073 { |
| 1074 CPVT_WordPlace place = GetBeginWordPlace(); | 1074 CPVT_WordPlace place = GetBeginWordPlace(); |
| 1075 int32_t nOldIndex = 0 , nIndex = 0; | 1075 int32_t nOldIndex = 0 , nIndex = 0; |
| 1076 FX_BOOL bFind = FALSE; | 1076 bool bFind = false; |
| 1077 for (int32_t i = 0, sz = m_SectionArray.GetSize(); i < sz; i++) { | 1077 for (int32_t i = 0, sz = m_SectionArray.GetSize(); i < sz; i++) { |
| 1078 if (CSection * pSection = m_SectionArray.GetAt(i)) { | 1078 if (CSection * pSection = m_SectionArray.GetAt(i)) { |
| 1079 nIndex += pSection->m_WordArray.GetSize(); | 1079 nIndex += pSection->m_WordArray.GetSize(); |
| 1080 if (nIndex == index) { | 1080 if (nIndex == index) { |
| 1081 place = pSection->GetEndWordPlace(); | 1081 place = pSection->GetEndWordPlace(); |
| 1082 bFind = TRUE; | 1082 bFind = true; |
| 1083 break; | 1083 break; |
| 1084 } else if (nIndex > index) { | 1084 } else if (nIndex > index) { |
| 1085 place.nSecIndex = i; | 1085 place.nSecIndex = i; |
| 1086 place.nWordIndex = index - nOldIndex - 1; | 1086 place.nWordIndex = index - nOldIndex - 1; |
| 1087 pSection->UpdateWordPlace(place); | 1087 pSection->UpdateWordPlace(place); |
| 1088 bFind = TRUE; | 1088 bFind = true; |
| 1089 break; | 1089 break; |
| 1090 } | 1090 } |
| 1091 if (i != m_SectionArray.GetSize() - 1) { | 1091 if (i != m_SectionArray.GetSize() - 1) { |
| 1092 nIndex += PVT_RETURN_LENGTH; | 1092 nIndex += PVT_RETURN_LENGTH; |
| 1093 } | 1093 } |
| 1094 nOldIndex = nIndex; | 1094 nOldIndex = nIndex; |
| 1095 } | 1095 } |
| 1096 } | 1096 } |
| 1097 if (!bFind) { | 1097 if (!bFind) { |
| 1098 place = GetEndWordPlace(); | 1098 place = GetEndWordPlace(); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1148 } | 1148 } |
| 1149 return place; | 1149 return place; |
| 1150 } | 1150 } |
| 1151 CPVT_WordPlace CPDF_VariableText::SearchWordPlace(const CPDF_Point & point) cons
t | 1151 CPVT_WordPlace CPDF_VariableText::SearchWordPlace(const CPDF_Point & point) cons
t |
| 1152 { | 1152 { |
| 1153 CPDF_Point pt = OutToIn(point); | 1153 CPDF_Point pt = OutToIn(point); |
| 1154 CPVT_WordPlace place = GetBeginWordPlace(); | 1154 CPVT_WordPlace place = GetBeginWordPlace(); |
| 1155 int32_t nLeft = 0; | 1155 int32_t nLeft = 0; |
| 1156 int32_t nRight = m_SectionArray.GetSize() - 1; | 1156 int32_t nRight = m_SectionArray.GetSize() - 1; |
| 1157 int32_t nMid = m_SectionArray.GetSize() / 2; | 1157 int32_t nMid = m_SectionArray.GetSize() / 2; |
| 1158 FX_BOOL bUp = TRUE; | 1158 bool bUp = true; |
| 1159 FX_BOOL bDown = TRUE; | 1159 bool bDown = true; |
| 1160 while (nLeft <= nRight) { | 1160 while (nLeft <= nRight) { |
| 1161 if (CSection * pSection = m_SectionArray.GetAt(nMid)) { | 1161 if (CSection * pSection = m_SectionArray.GetAt(nMid)) { |
| 1162 if (IsFloatBigger(pt.y, pSection->m_SecInfo.rcSection.top)) { | 1162 if (IsFloatBigger(pt.y, pSection->m_SecInfo.rcSection.top)) { |
| 1163 bUp = FALSE; | 1163 bUp = false; |
| 1164 } | 1164 } |
| 1165 if (IsFloatBigger(pSection->m_SecInfo.rcSection.bottom, pt.y)) { | 1165 if (IsFloatBigger(pSection->m_SecInfo.rcSection.bottom, pt.y)) { |
| 1166 bDown = FALSE; | 1166 bDown = false; |
| 1167 } | 1167 } |
| 1168 if (IsFloatSmaller(pt.y, pSection->m_SecInfo.rcSection.top)) { | 1168 if (IsFloatSmaller(pt.y, pSection->m_SecInfo.rcSection.top)) { |
| 1169 nRight = nMid - 1; | 1169 nRight = nMid - 1; |
| 1170 nMid = (nLeft + nRight) / 2; | 1170 nMid = (nLeft + nRight) / 2; |
| 1171 continue; | 1171 continue; |
| 1172 } else if (IsFloatBigger(pt.y, pSection->m_SecInfo.rcSection.bottom)
) { | 1172 } else if (IsFloatBigger(pt.y, pSection->m_SecInfo.rcSection.bottom)
) { |
| 1173 nLeft = nMid + 1; | 1173 nLeft = nMid + 1; |
| 1174 nMid = (nLeft + nRight) / 2; | 1174 nMid = (nLeft + nRight) / 2; |
| 1175 continue; | 1175 continue; |
| 1176 } else { | 1176 } else { |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1296 if (m_SectionArray.GetSize() <= 0) { | 1296 if (m_SectionArray.GetSize() <= 0) { |
| 1297 return place; | 1297 return place; |
| 1298 } | 1298 } |
| 1299 CPVT_WordPlace newplace = place; | 1299 CPVT_WordPlace newplace = place; |
| 1300 newplace.nSecIndex = FPDF_MAX(FPDF_MIN(newplace.nSecIndex, m_SectionArray.Ge
tSize() - 1), 0); | 1300 newplace.nSecIndex = FPDF_MAX(FPDF_MIN(newplace.nSecIndex, m_SectionArray.Ge
tSize() - 1), 0); |
| 1301 if (CSection * pSection = m_SectionArray.GetAt(newplace.nSecIndex)) { | 1301 if (CSection * pSection = m_SectionArray.GetAt(newplace.nSecIndex)) { |
| 1302 return pSection->AddWord(newplace, wordinfo); | 1302 return pSection->AddWord(newplace, wordinfo); |
| 1303 } | 1303 } |
| 1304 return place; | 1304 return place; |
| 1305 } | 1305 } |
| 1306 FX_BOOL CPDF_VariableText::GetWordInfo(const CPVT_WordPlace & place, CPVT_WordIn
fo & wordinfo) | 1306 bool CPDF_VariableText::GetWordInfo(const CPVT_WordPlace & place, CPVT_WordInfo
& wordinfo) |
| 1307 { | 1307 { |
| 1308 if (CSection * pSection = m_SectionArray.GetAt(place.nSecIndex)) { | 1308 if (CSection * pSection = m_SectionArray.GetAt(place.nSecIndex)) { |
| 1309 if (CPVT_WordInfo * pWord = pSection->m_WordArray.GetAt(place.nWordIndex
)) { | 1309 if (CPVT_WordInfo * pWord = pSection->m_WordArray.GetAt(place.nWordIndex
)) { |
| 1310 wordinfo = *pWord; | 1310 wordinfo = *pWord; |
| 1311 return TRUE; | 1311 return true; |
| 1312 } | 1312 } |
| 1313 } | 1313 } |
| 1314 return FALSE; | 1314 return false; |
| 1315 } | 1315 } |
| 1316 FX_BOOL CPDF_VariableText::SetWordInfo(const CPVT_WordPlace & place, const CPVT_
WordInfo & wordinfo) | 1316 bool CPDF_VariableText::SetWordInfo(const CPVT_WordPlace & place, const CPVT_Wor
dInfo & wordinfo) |
| 1317 { | 1317 { |
| 1318 if (CSection * pSection = m_SectionArray.GetAt(place.nSecIndex)) { | 1318 if (CSection * pSection = m_SectionArray.GetAt(place.nSecIndex)) { |
| 1319 if (CPVT_WordInfo * pWord = pSection->m_WordArray.GetAt(place.nWordIndex
)) { | 1319 if (CPVT_WordInfo * pWord = pSection->m_WordArray.GetAt(place.nWordIndex
)) { |
| 1320 *pWord = wordinfo; | 1320 *pWord = wordinfo; |
| 1321 return TRUE; | 1321 return true; |
| 1322 } | 1322 } |
| 1323 } | 1323 } |
| 1324 return FALSE; | 1324 return false; |
| 1325 } | 1325 } |
| 1326 FX_BOOL CPDF_VariableText::GetLineInfo(const CPVT_WordPlace & place, CPVT_LineIn
fo & lineinfo) | 1326 bool CPDF_VariableText::GetLineInfo(const CPVT_WordPlace & place, CPVT_LineInfo
& lineinfo) |
| 1327 { | 1327 { |
| 1328 if (CSection * pSection = m_SectionArray.GetAt(place.nSecIndex)) { | 1328 if (CSection * pSection = m_SectionArray.GetAt(place.nSecIndex)) { |
| 1329 if (CLine * pLine = pSection->m_LineArray.GetAt(place.nLineIndex)) { | 1329 if (CLine * pLine = pSection->m_LineArray.GetAt(place.nLineIndex)) { |
| 1330 lineinfo = pLine->m_LineInfo; | 1330 lineinfo = pLine->m_LineInfo; |
| 1331 return TRUE; | 1331 return true; |
| 1332 } | 1332 } |
| 1333 } | 1333 } |
| 1334 return FALSE; | 1334 return false; |
| 1335 } | 1335 } |
| 1336 FX_BOOL CPDF_VariableText::GetSectionInfo(const CPVT_WordPlace & place, CPVT_Sec
tionInfo & secinfo) | 1336 bool CPDF_VariableText::GetSectionInfo(const CPVT_WordPlace & place, CPVT_Sectio
nInfo & secinfo) |
| 1337 { | 1337 { |
| 1338 if (CSection * pSection = m_SectionArray.GetAt(place.nSecIndex)) { | 1338 if (CSection * pSection = m_SectionArray.GetAt(place.nSecIndex)) { |
| 1339 secinfo = pSection->m_SecInfo; | 1339 secinfo = pSection->m_SecInfo; |
| 1340 return TRUE; | 1340 return true; |
| 1341 } | 1341 } |
| 1342 return FALSE; | 1342 return false; |
| 1343 } | 1343 } |
| 1344 CPDF_Rect CPDF_VariableText::GetContentRect() const | 1344 CPDF_Rect CPDF_VariableText::GetContentRect() const |
| 1345 { | 1345 { |
| 1346 return InToOut(CPDF_EditContainer::GetContentRect()); | 1346 return InToOut(CPDF_EditContainer::GetContentRect()); |
| 1347 } | 1347 } |
| 1348 FX_FLOAT CPDF_VariableText::GetWordFontSize(const CPVT_WordInfo & WordInfo, FX_B
OOL bFactFontSize) | 1348 FX_FLOAT CPDF_VariableText::GetWordFontSize(const CPVT_WordInfo & WordInfo, bool
bFactFontSize) |
| 1349 { | 1349 { |
| 1350 return m_bRichText && WordInfo.pWordProps ? (WordInfo.pWordProps->nScriptTyp
e == PVTWORD_SCRIPT_NORMAL || bFactFontSize ? WordInfo.pWordProps->fFontSize : W
ordInfo.pWordProps->fFontSize * PVT_HALF) : GetFontSize(); | 1350 return m_bRichText && WordInfo.pWordProps ? (WordInfo.pWordProps->nScriptTyp
e == PVTWORD_SCRIPT_NORMAL || bFactFontSize ? WordInfo.pWordProps->fFontSize : W
ordInfo.pWordProps->fFontSize * PVT_HALF) : GetFontSize(); |
| 1351 } | 1351 } |
| 1352 int32_t CPDF_VariableText::GetWordFontIndex(const CPVT_WordInfo & WordInfo) | 1352 int32_t CPDF_VariableText::GetWordFontIndex(const CPVT_WordInfo & WordInfo) |
| 1353 { | 1353 { |
| 1354 return m_bRichText && WordInfo.pWordProps ? WordInfo.pWordProps->nFontIndex
: WordInfo.nFontIndex; | 1354 return m_bRichText && WordInfo.pWordProps ? WordInfo.pWordProps->nFontIndex
: WordInfo.nFontIndex; |
| 1355 } | 1355 } |
| 1356 FX_FLOAT CPDF_VariableText::GetWordWidth(int32_t nFontIndex, FX_WORD Word, FX_WO
RD SubWord, | 1356 FX_FLOAT CPDF_VariableText::GetWordWidth(int32_t nFontIndex, FX_WORD Word, FX_WO
RD SubWord, |
| 1357 FX_FLOAT fCharSpace, int32_t nHorzScale, | 1357 FX_FLOAT fCharSpace, int32_t nHorzScale, |
| 1358 FX_FLOAT fFontSize, FX_FLOAT fWordTail, int32_t nWordStyle) | 1358 FX_FLOAT fFontSize, FX_FLOAT fWordTail, int32_t nWordStyle) |
| (...skipping 25 matching lines...) Expand all Loading... |
| 1384 return (FX_FLOAT)GetTypeDescent(nFontIndex) * fFontSize * PVT_FONTSCALE; | 1384 return (FX_FLOAT)GetTypeDescent(nFontIndex) * fFontSize * PVT_FONTSCALE; |
| 1385 } | 1385 } |
| 1386 FX_FLOAT CPDF_VariableText::GetWordAscent(const CPVT_WordInfo & WordInfo, FX_FLO
AT fFontSize) | 1386 FX_FLOAT CPDF_VariableText::GetWordAscent(const CPVT_WordInfo & WordInfo, FX_FLO
AT fFontSize) |
| 1387 { | 1387 { |
| 1388 return GetFontAscent(GetWordFontIndex(WordInfo), fFontSize); | 1388 return GetFontAscent(GetWordFontIndex(WordInfo), fFontSize); |
| 1389 } | 1389 } |
| 1390 FX_FLOAT CPDF_VariableText::GetWordDescent(const CPVT_WordInfo & WordInfo, FX_FL
OAT fFontSize) | 1390 FX_FLOAT CPDF_VariableText::GetWordDescent(const CPVT_WordInfo & WordInfo, FX_FL
OAT fFontSize) |
| 1391 { | 1391 { |
| 1392 return GetFontDescent(GetWordFontIndex(WordInfo), fFontSize); | 1392 return GetFontDescent(GetWordFontIndex(WordInfo), fFontSize); |
| 1393 } | 1393 } |
| 1394 FX_FLOAT CPDF_VariableText::GetWordAscent(const CPVT_WordInfo & WordInfo, FX_BOO
L bFactFontSize) | 1394 FX_FLOAT CPDF_VariableText::GetWordAscent(const CPVT_WordInfo & WordInfo, bool b
FactFontSize) |
| 1395 { | 1395 { |
| 1396 return GetFontAscent(GetWordFontIndex(WordInfo), GetWordFontSize(WordInfo, b
FactFontSize)); | 1396 return GetFontAscent(GetWordFontIndex(WordInfo), GetWordFontSize(WordInfo, b
FactFontSize)); |
| 1397 } | 1397 } |
| 1398 FX_FLOAT CPDF_VariableText::GetWordDescent(const CPVT_WordInfo & WordInfo, FX_BO
OL bFactFontSize) | 1398 FX_FLOAT CPDF_VariableText::GetWordDescent(const CPVT_WordInfo & WordInfo, bool
bFactFontSize) |
| 1399 { | 1399 { |
| 1400 return GetFontDescent(GetWordFontIndex(WordInfo), GetWordFontSize(WordInfo,
bFactFontSize)); | 1400 return GetFontDescent(GetWordFontIndex(WordInfo), GetWordFontSize(WordInfo,
bFactFontSize)); |
| 1401 } | 1401 } |
| 1402 FX_FLOAT CPDF_VariableText::GetLineLeading(const CPVT_SectionInfo & SecInfo) | 1402 FX_FLOAT CPDF_VariableText::GetLineLeading(const CPVT_SectionInfo & SecInfo) |
| 1403 { | 1403 { |
| 1404 return m_bRichText && SecInfo.pSecProps ? SecInfo.pSecProps->fLineLeading :
m_fLineLeading; | 1404 return m_bRichText && SecInfo.pSecProps ? SecInfo.pSecProps->fLineLeading :
m_fLineLeading; |
| 1405 } | 1405 } |
| 1406 FX_FLOAT CPDF_VariableText::GetLineIndent(const CPVT_SectionInfo & SecInfo) | 1406 FX_FLOAT CPDF_VariableText::GetLineIndent(const CPVT_SectionInfo & SecInfo) |
| 1407 { | 1407 { |
| 1408 return m_bRichText && SecInfo.pSecProps ? SecInfo.pSecProps->fLineIndent : 0
.0f; | 1408 return m_bRichText && SecInfo.pSecProps ? SecInfo.pSecProps->fLineIndent : 0
.0f; |
| 1409 } | 1409 } |
| 1410 int32_t CPDF_VariableText::GetAlignment(const CPVT_SectionInfo& SecInfo) | 1410 int32_t CPDF_VariableText::GetAlignment(const CPVT_SectionInfo& SecInfo) |
| 1411 { | 1411 { |
| 1412 return m_bRichText && SecInfo.pSecProps ? SecInfo.pSecProps->nAlignment : m_
nAlignment; | 1412 return m_bRichText && SecInfo.pSecProps ? SecInfo.pSecProps->nAlignment : m_
nAlignment; |
| 1413 } | 1413 } |
| 1414 FX_FLOAT CPDF_VariableText::GetCharSpace(const CPVT_WordInfo & WordInfo) | 1414 FX_FLOAT CPDF_VariableText::GetCharSpace(const CPVT_WordInfo & WordInfo) |
| 1415 { | 1415 { |
| 1416 return m_bRichText && WordInfo.pWordProps ? WordInfo.pWordProps->fCharSpace
: m_fCharSpace; | 1416 return m_bRichText && WordInfo.pWordProps ? WordInfo.pWordProps->fCharSpace
: m_fCharSpace; |
| 1417 } | 1417 } |
| 1418 int32_t CPDF_VariableText::GetHorzScale(const CPVT_WordInfo & WordInfo) | 1418 int32_t CPDF_VariableText::GetHorzScale(const CPVT_WordInfo & WordInfo) |
| 1419 { | 1419 { |
| 1420 return m_bRichText && WordInfo.pWordProps ? WordInfo.pWordProps->nHorzScale
: m_nHorzScale; | 1420 return m_bRichText && WordInfo.pWordProps ? WordInfo.pWordProps->nHorzScale
: m_nHorzScale; |
| 1421 } | 1421 } |
| 1422 void CPDF_VariableText::ClearSectionRightWords(const CPVT_WordPlace & place) | 1422 void CPDF_VariableText::ClearSectionRightWords(const CPVT_WordPlace & place) |
| 1423 { | 1423 { |
| 1424 CPVT_WordPlace wordplace = AjustLineHeader(place, TRUE); | 1424 CPVT_WordPlace wordplace = AjustLineHeader(place, true); |
| 1425 if (CSection * pSection = m_SectionArray.GetAt(place.nSecIndex)) { | 1425 if (CSection * pSection = m_SectionArray.GetAt(place.nSecIndex)) { |
| 1426 for (int32_t w = pSection->m_WordArray.GetSize() - 1; w > wordplace.nWor
dIndex; w--) { | 1426 for (int32_t w = pSection->m_WordArray.GetSize() - 1; w > wordplace.nWor
dIndex; w--) { |
| 1427 delete pSection->m_WordArray.GetAt(w); | 1427 delete pSection->m_WordArray.GetAt(w); |
| 1428 pSection->m_WordArray.RemoveAt(w); | 1428 pSection->m_WordArray.RemoveAt(w); |
| 1429 } | 1429 } |
| 1430 } | 1430 } |
| 1431 } | 1431 } |
| 1432 CPVT_WordPlace CPDF_VariableText::AjustLineHeader(const CPVT_WordPlace & place,
FX_BOOL bPrevOrNext) const | 1432 CPVT_WordPlace CPDF_VariableText::AjustLineHeader(const CPVT_WordPlace & place,
bool bPrevOrNext) const |
| 1433 { | 1433 { |
| 1434 if (place.nWordIndex < 0 && place.nLineIndex > 0) { | 1434 if (place.nWordIndex < 0 && place.nLineIndex > 0) { |
| 1435 return bPrevOrNext ? GetPrevWordPlace(place) : GetNextWordPlace(place); | 1435 return bPrevOrNext ? GetPrevWordPlace(place) : GetNextWordPlace(place); |
| 1436 } | 1436 } |
| 1437 return place; | 1437 return place; |
| 1438 } | 1438 } |
| 1439 FX_BOOL CPDF_VariableText::ClearEmptySection(const CPVT_WordPlace & place) | 1439 bool CPDF_VariableText::ClearEmptySection(const CPVT_WordPlace & place) |
| 1440 { | 1440 { |
| 1441 if (place.nSecIndex == 0 && m_SectionArray.GetSize() == 1) { | 1441 if (place.nSecIndex == 0 && m_SectionArray.GetSize() == 1) { |
| 1442 return FALSE; | 1442 return false; |
| 1443 } | 1443 } |
| 1444 if (CSection * pSection = m_SectionArray.GetAt(place.nSecIndex)) { | 1444 if (CSection * pSection = m_SectionArray.GetAt(place.nSecIndex)) { |
| 1445 if (pSection->m_WordArray.GetSize() == 0) { | 1445 if (pSection->m_WordArray.GetSize() == 0) { |
| 1446 delete pSection; | 1446 delete pSection; |
| 1447 m_SectionArray.RemoveAt(place.nSecIndex); | 1447 m_SectionArray.RemoveAt(place.nSecIndex); |
| 1448 return TRUE; | 1448 return true; |
| 1449 } | 1449 } |
| 1450 } | 1450 } |
| 1451 return FALSE; | 1451 return false; |
| 1452 } | 1452 } |
| 1453 void CPDF_VariableText::ClearEmptySections(const CPVT_WordRange & PlaceRange) | 1453 void CPDF_VariableText::ClearEmptySections(const CPVT_WordRange & PlaceRange) |
| 1454 { | 1454 { |
| 1455 CPVT_WordPlace wordplace; | 1455 CPVT_WordPlace wordplace; |
| 1456 for (int32_t s = PlaceRange.EndPos.nSecIndex; s > PlaceRange.BeginPos.nSecIn
dex; s--) { | 1456 for (int32_t s = PlaceRange.EndPos.nSecIndex; s > PlaceRange.BeginPos.nSecIn
dex; s--) { |
| 1457 wordplace.nSecIndex = s; | 1457 wordplace.nSecIndex = s; |
| 1458 ClearEmptySection(wordplace); | 1458 ClearEmptySection(wordplace); |
| 1459 } | 1459 } |
| 1460 } | 1460 } |
| 1461 void CPDF_VariableText::LinkLatterSection(const CPVT_WordPlace & place) | 1461 void CPDF_VariableText::LinkLatterSection(const CPVT_WordPlace & place) |
| 1462 { | 1462 { |
| 1463 CPVT_WordPlace oldplace = AjustLineHeader(place, TRUE); | 1463 CPVT_WordPlace oldplace = AjustLineHeader(place, true); |
| 1464 if (CSection * pNextSection = m_SectionArray.GetAt(place.nSecIndex + 1)) { | 1464 if (CSection * pNextSection = m_SectionArray.GetAt(place.nSecIndex + 1)) { |
| 1465 if (CSection * pSection = m_SectionArray.GetAt(oldplace.nSecIndex)) { | 1465 if (CSection * pSection = m_SectionArray.GetAt(oldplace.nSecIndex)) { |
| 1466 for (int32_t w = 0, sz = pNextSection->m_WordArray.GetSize(); w < sz
; w++) { | 1466 for (int32_t w = 0, sz = pNextSection->m_WordArray.GetSize(); w < sz
; w++) { |
| 1467 if (CPVT_WordInfo * pWord = pNextSection->m_WordArray.GetAt(w))
{ | 1467 if (CPVT_WordInfo * pWord = pNextSection->m_WordArray.GetAt(w))
{ |
| 1468 oldplace.nWordIndex ++; | 1468 oldplace.nWordIndex ++; |
| 1469 pSection->AddWord(oldplace, *pWord); | 1469 pSection->AddWord(oldplace, *pWord); |
| 1470 } | 1470 } |
| 1471 } | 1471 } |
| 1472 } | 1472 } |
| 1473 delete pNextSection; | 1473 delete pNextSection; |
| 1474 m_SectionArray.RemoveAt(place.nSecIndex + 1); | 1474 m_SectionArray.RemoveAt(place.nSecIndex + 1); |
| 1475 } | 1475 } |
| 1476 } | 1476 } |
| 1477 void CPDF_VariableText::ClearWords(const CPVT_WordRange & PlaceRange) | 1477 void CPDF_VariableText::ClearWords(const CPVT_WordRange & PlaceRange) |
| 1478 { | 1478 { |
| 1479 CPVT_WordRange NewRange; | 1479 CPVT_WordRange NewRange; |
| 1480 NewRange.BeginPos = AjustLineHeader(PlaceRange.BeginPos, TRUE); | 1480 NewRange.BeginPos = AjustLineHeader(PlaceRange.BeginPos, true); |
| 1481 NewRange.EndPos = AjustLineHeader(PlaceRange.EndPos, TRUE); | 1481 NewRange.EndPos = AjustLineHeader(PlaceRange.EndPos, true); |
| 1482 for (int32_t s = NewRange.EndPos.nSecIndex; s >= NewRange.BeginPos.nSecIndex
; s--) { | 1482 for (int32_t s = NewRange.EndPos.nSecIndex; s >= NewRange.BeginPos.nSecIndex
; s--) { |
| 1483 if (CSection * pSection = m_SectionArray.GetAt(s)) { | 1483 if (CSection * pSection = m_SectionArray.GetAt(s)) { |
| 1484 pSection->ClearWords(NewRange); | 1484 pSection->ClearWords(NewRange); |
| 1485 } | 1485 } |
| 1486 } | 1486 } |
| 1487 } | 1487 } |
| 1488 CPVT_WordPlace CPDF_VariableText::ClearLeftWord(const CPVT_WordPlace & place) | 1488 CPVT_WordPlace CPDF_VariableText::ClearLeftWord(const CPVT_WordPlace & place) |
| 1489 { | 1489 { |
| 1490 if (CSection * pSection = m_SectionArray.GetAt(place.nSecIndex)) { | 1490 if (CSection * pSection = m_SectionArray.GetAt(place.nSecIndex)) { |
| 1491 CPVT_WordPlace leftplace = GetPrevWordPlace(place); | 1491 CPVT_WordPlace leftplace = GetPrevWordPlace(place); |
| 1492 if (leftplace != place) { | 1492 if (leftplace != place) { |
| 1493 if (leftplace.nSecIndex != place.nSecIndex) { | 1493 if (leftplace.nSecIndex != place.nSecIndex) { |
| 1494 if (pSection->m_WordArray.GetSize() == 0) { | 1494 if (pSection->m_WordArray.GetSize() == 0) { |
| 1495 ClearEmptySection(place); | 1495 ClearEmptySection(place); |
| 1496 } else { | 1496 } else { |
| 1497 LinkLatterSection(leftplace); | 1497 LinkLatterSection(leftplace); |
| 1498 } | 1498 } |
| 1499 } else { | 1499 } else { |
| 1500 pSection->ClearWord(place); | 1500 pSection->ClearWord(place); |
| 1501 } | 1501 } |
| 1502 } | 1502 } |
| 1503 return leftplace; | 1503 return leftplace; |
| 1504 } | 1504 } |
| 1505 return place; | 1505 return place; |
| 1506 } | 1506 } |
| 1507 CPVT_WordPlace CPDF_VariableText::ClearRightWord(const CPVT_WordPlace & place) | 1507 CPVT_WordPlace CPDF_VariableText::ClearRightWord(const CPVT_WordPlace & place) |
| 1508 { | 1508 { |
| 1509 if (CSection * pSection = m_SectionArray.GetAt(place.nSecIndex)) { | 1509 if (CSection * pSection = m_SectionArray.GetAt(place.nSecIndex)) { |
| 1510 CPVT_WordPlace rightplace = AjustLineHeader(GetNextWordPlace(place), FAL
SE); | 1510 CPVT_WordPlace rightplace = AjustLineHeader(GetNextWordPlace(place), fal
se); |
| 1511 if (rightplace != place) { | 1511 if (rightplace != place) { |
| 1512 if(rightplace.nSecIndex != place.nSecIndex) { | 1512 if(rightplace.nSecIndex != place.nSecIndex) { |
| 1513 LinkLatterSection(place); | 1513 LinkLatterSection(place); |
| 1514 } else { | 1514 } else { |
| 1515 pSection->ClearWord(rightplace); | 1515 pSection->ClearWord(rightplace); |
| 1516 } | 1516 } |
| 1517 } | 1517 } |
| 1518 } | 1518 } |
| 1519 return place; | 1519 return place; |
| 1520 } | 1520 } |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1561 nMid = (nLeft + nRight) / 2; | 1561 nMid = (nLeft + nRight) / 2; |
| 1562 continue; | 1562 continue; |
| 1563 } else { | 1563 } else { |
| 1564 nLeft = nMid + 1; | 1564 nLeft = nMid + 1; |
| 1565 nMid = (nLeft + nRight) / 2; | 1565 nMid = (nLeft + nRight) / 2; |
| 1566 continue; | 1566 continue; |
| 1567 } | 1567 } |
| 1568 } | 1568 } |
| 1569 return (FX_FLOAT)gFontSizeSteps[nMid]; | 1569 return (FX_FLOAT)gFontSizeSteps[nMid]; |
| 1570 } | 1570 } |
| 1571 FX_BOOL»CPDF_VariableText::IsBigger(FX_FLOAT fFontSize) | 1571 bool» CPDF_VariableText::IsBigger(FX_FLOAT fFontSize) |
| 1572 { | 1572 { |
| 1573 FX_BOOL bBigger = FALSE; | 1573 bool bBigger = false; |
| 1574 CPVT_Size szTotal; | 1574 CPVT_Size szTotal; |
| 1575 for (int32_t s = 0, sz = m_SectionArray.GetSize(); s < sz; s++) { | 1575 for (int32_t s = 0, sz = m_SectionArray.GetSize(); s < sz; s++) { |
| 1576 if (CSection * pSection = m_SectionArray.GetAt(s)) { | 1576 if (CSection * pSection = m_SectionArray.GetAt(s)) { |
| 1577 CPVT_Size size = pSection->GetSectionSize(fFontSize); | 1577 CPVT_Size size = pSection->GetSectionSize(fFontSize); |
| 1578 szTotal.x = FPDF_MAX(size.x, szTotal.x); | 1578 szTotal.x = FPDF_MAX(size.x, szTotal.x); |
| 1579 szTotal.y += size.y; | 1579 szTotal.y += size.y; |
| 1580 if (IsFloatBigger(szTotal.x, GetPlateWidth()) | 1580 if (IsFloatBigger(szTotal.x, GetPlateWidth()) |
| 1581 || IsFloatBigger(szTotal.y, GetPlateHeight()) | 1581 || IsFloatBigger(szTotal.y, GetPlateHeight()) |
| 1582 ) { | 1582 ) { |
| 1583 bBigger = TRUE; | 1583 bBigger = true; |
| 1584 break; | 1584 break; |
| 1585 } | 1585 } |
| 1586 } | 1586 } |
| 1587 } | 1587 } |
| 1588 return bBigger; | 1588 return bBigger; |
| 1589 } | 1589 } |
| 1590 CPVT_FloatRect CPDF_VariableText::RearrangeSections(const CPVT_WordRange & Place
Range) | 1590 CPVT_FloatRect CPDF_VariableText::RearrangeSections(const CPVT_WordRange & Place
Range) |
| 1591 { | 1591 { |
| 1592 CPVT_WordPlace place; | 1592 CPVT_WordPlace place; |
| 1593 FX_FLOAT fPosY = 0; | 1593 FX_FLOAT fPosY = 0; |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1645 return m_pVTProvider ? m_pVTProvider->GetTypeDescent(nFontIndex) : 0; | 1645 return m_pVTProvider ? m_pVTProvider->GetTypeDescent(nFontIndex) : 0; |
| 1646 } | 1646 } |
| 1647 int32_t CPDF_VariableText::GetWordFontIndex(FX_WORD word, int32_t charset, int32
_t nFontIndex) | 1647 int32_t CPDF_VariableText::GetWordFontIndex(FX_WORD word, int32_t charset, int32
_t nFontIndex) |
| 1648 { | 1648 { |
| 1649 return m_pVTProvider ? m_pVTProvider->GetWordFontIndex(word, charset, nFontI
ndex) : -1; | 1649 return m_pVTProvider ? m_pVTProvider->GetWordFontIndex(word, charset, nFontI
ndex) : -1; |
| 1650 } | 1650 } |
| 1651 int32_t CPDF_VariableText::GetDefaultFontIndex() | 1651 int32_t CPDF_VariableText::GetDefaultFontIndex() |
| 1652 { | 1652 { |
| 1653 return m_pVTProvider ? m_pVTProvider->GetDefaultFontIndex() : -1; | 1653 return m_pVTProvider ? m_pVTProvider->GetDefaultFontIndex() : -1; |
| 1654 } | 1654 } |
| 1655 FX_BOOL»CPDF_VariableText::IsLatinWord(FX_WORD word) | 1655 bool» CPDF_VariableText::IsLatinWord(FX_WORD word) |
| 1656 { | 1656 { |
| 1657 return m_pVTProvider ? m_pVTProvider->IsLatinWord(word) : FALSE; | 1657 return m_pVTProvider ? m_pVTProvider->IsLatinWord(word) : false; |
| 1658 } | 1658 } |
| 1659 IPDF_VariableText_Iterator * CPDF_VariableText::GetIterator() | 1659 IPDF_VariableText_Iterator * CPDF_VariableText::GetIterator() |
| 1660 { | 1660 { |
| 1661 if (!m_pVTIterator) { | 1661 if (!m_pVTIterator) { |
| 1662 m_pVTIterator = new CPDF_VariableText_Iterator(this); | 1662 m_pVTIterator = new CPDF_VariableText_Iterator(this); |
| 1663 } | 1663 } |
| 1664 return m_pVTIterator; | 1664 return m_pVTIterator; |
| 1665 } | 1665 } |
| 1666 IPDF_VariableText_Provider* CPDF_VariableText::SetProvider(IPDF_VariableText
_Provider * pProvider) | 1666 IPDF_VariableText_Provider* CPDF_VariableText::SetProvider(IPDF_VariableText
_Provider * pProvider) |
| 1667 { | 1667 { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1680 void CPDF_VariableText_Iterator::SetAt(int32_t nWordIndex) | 1680 void CPDF_VariableText_Iterator::SetAt(int32_t nWordIndex) |
| 1681 { | 1681 { |
| 1682 ASSERT(m_pVT != NULL); | 1682 ASSERT(m_pVT != NULL); |
| 1683 m_CurPos = m_pVT->WordIndexToWordPlace(nWordIndex); | 1683 m_CurPos = m_pVT->WordIndexToWordPlace(nWordIndex); |
| 1684 } | 1684 } |
| 1685 void CPDF_VariableText_Iterator::SetAt(const CPVT_WordPlace & place) | 1685 void CPDF_VariableText_Iterator::SetAt(const CPVT_WordPlace & place) |
| 1686 { | 1686 { |
| 1687 ASSERT(m_pVT != NULL); | 1687 ASSERT(m_pVT != NULL); |
| 1688 m_CurPos = place; | 1688 m_CurPos = place; |
| 1689 } | 1689 } |
| 1690 FX_BOOL»CPDF_VariableText_Iterator::NextWord() | 1690 bool» CPDF_VariableText_Iterator::NextWord() |
| 1691 { | 1691 { |
| 1692 if (m_CurPos == m_pVT->GetEndWordPlace()) { | 1692 if (m_CurPos == m_pVT->GetEndWordPlace()) { |
| 1693 return FALSE; | 1693 return false; |
| 1694 } | 1694 } |
| 1695 m_CurPos = m_pVT->GetNextWordPlace(m_CurPos); | 1695 m_CurPos = m_pVT->GetNextWordPlace(m_CurPos); |
| 1696 return TRUE; | 1696 return true; |
| 1697 } | 1697 } |
| 1698 FX_BOOL»CPDF_VariableText_Iterator::PrevWord() | 1698 bool» CPDF_VariableText_Iterator::PrevWord() |
| 1699 { | 1699 { |
| 1700 if (m_CurPos == m_pVT->GetBeginWordPlace()) { | 1700 if (m_CurPos == m_pVT->GetBeginWordPlace()) { |
| 1701 return FALSE; | 1701 return false; |
| 1702 } | 1702 } |
| 1703 m_CurPos = m_pVT->GetPrevWordPlace(m_CurPos); | 1703 m_CurPos = m_pVT->GetPrevWordPlace(m_CurPos); |
| 1704 return TRUE; | 1704 return true; |
| 1705 } | 1705 } |
| 1706 FX_BOOL»CPDF_VariableText_Iterator::NextLine() | 1706 bool» CPDF_VariableText_Iterator::NextLine() |
| 1707 { | 1707 { |
| 1708 if (CSection * pSection = m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex)) { | 1708 if (CSection * pSection = m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex)) { |
| 1709 if (m_CurPos.nLineIndex < pSection->m_LineArray.GetSize() - 1) { | 1709 if (m_CurPos.nLineIndex < pSection->m_LineArray.GetSize() - 1) { |
| 1710 m_CurPos = CPVT_WordPlace(m_CurPos.nSecIndex, m_CurPos.nLineIndex +
1, -1); | 1710 m_CurPos = CPVT_WordPlace(m_CurPos.nSecIndex, m_CurPos.nLineIndex +
1, -1); |
| 1711 return TRUE; | 1711 return true; |
| 1712 } | 1712 } |
| 1713 if (m_CurPos.nSecIndex < m_pVT->m_SectionArray.GetSize() - 1) { | 1713 if (m_CurPos.nSecIndex < m_pVT->m_SectionArray.GetSize() - 1) { |
| 1714 m_CurPos = CPVT_WordPlace(m_CurPos.nSecIndex + 1, 0, -1); | 1714 m_CurPos = CPVT_WordPlace(m_CurPos.nSecIndex + 1, 0, -1); |
| 1715 return TRUE; | 1715 return true; |
| 1716 } | 1716 } |
| 1717 } | 1717 } |
| 1718 return FALSE; | 1718 return false; |
| 1719 } | 1719 } |
| 1720 FX_BOOL»CPDF_VariableText_Iterator::PrevLine() | 1720 bool» CPDF_VariableText_Iterator::PrevLine() |
| 1721 { | 1721 { |
| 1722 if (m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex)) { | 1722 if (m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex)) { |
| 1723 if (m_CurPos.nLineIndex > 0) { | 1723 if (m_CurPos.nLineIndex > 0) { |
| 1724 m_CurPos = CPVT_WordPlace(m_CurPos.nSecIndex, m_CurPos.nLineIndex -
1, -1); | 1724 m_CurPos = CPVT_WordPlace(m_CurPos.nSecIndex, m_CurPos.nLineIndex -
1, -1); |
| 1725 return TRUE; | 1725 return true; |
| 1726 } | 1726 } |
| 1727 if (m_CurPos.nSecIndex > 0) { | 1727 if (m_CurPos.nSecIndex > 0) { |
| 1728 if (CSection * pLastSection = m_pVT->m_SectionArray.GetAt(m_CurPos.n
SecIndex - 1)) { | 1728 if (CSection * pLastSection = m_pVT->m_SectionArray.GetAt(m_CurPos.n
SecIndex - 1)) { |
| 1729 m_CurPos = CPVT_WordPlace(m_CurPos.nSecIndex - 1, pLastSection->
m_LineArray.GetSize() - 1, -1); | 1729 m_CurPos = CPVT_WordPlace(m_CurPos.nSecIndex - 1, pLastSection->
m_LineArray.GetSize() - 1, -1); |
| 1730 return TRUE; | 1730 return true; |
| 1731 } | 1731 } |
| 1732 } | 1732 } |
| 1733 } | 1733 } |
| 1734 return FALSE; | 1734 return false; |
| 1735 } | 1735 } |
| 1736 FX_BOOL»CPDF_VariableText_Iterator::NextSection() | 1736 bool» CPDF_VariableText_Iterator::NextSection() |
| 1737 { | 1737 { |
| 1738 if (m_CurPos.nSecIndex < m_pVT->m_SectionArray.GetSize() - 1) { | 1738 if (m_CurPos.nSecIndex < m_pVT->m_SectionArray.GetSize() - 1) { |
| 1739 m_CurPos = CPVT_WordPlace(m_CurPos.nSecIndex + 1, 0, -1); | 1739 m_CurPos = CPVT_WordPlace(m_CurPos.nSecIndex + 1, 0, -1); |
| 1740 return TRUE; | 1740 return true; |
| 1741 } | 1741 } |
| 1742 return FALSE; | 1742 return false; |
| 1743 } | 1743 } |
| 1744 FX_BOOL»CPDF_VariableText_Iterator::PrevSection() | 1744 bool» CPDF_VariableText_Iterator::PrevSection() |
| 1745 { | 1745 { |
| 1746 ASSERT(m_pVT != NULL); | 1746 ASSERT(m_pVT != NULL); |
| 1747 if (m_CurPos.nSecIndex > 0) { | 1747 if (m_CurPos.nSecIndex > 0) { |
| 1748 m_CurPos = CPVT_WordPlace(m_CurPos.nSecIndex - 1, 0, -1); | 1748 m_CurPos = CPVT_WordPlace(m_CurPos.nSecIndex - 1, 0, -1); |
| 1749 return TRUE; | 1749 return true; |
| 1750 } | 1750 } |
| 1751 return FALSE; | 1751 return false; |
| 1752 } | 1752 } |
| 1753 FX_BOOL»CPDF_VariableText_Iterator::GetWord(CPVT_Word & word) const | 1753 bool» CPDF_VariableText_Iterator::GetWord(CPVT_Word & word) const |
| 1754 { | 1754 { |
| 1755 ASSERT(m_pVT != NULL); | 1755 ASSERT(m_pVT != NULL); |
| 1756 word.WordPlace = m_CurPos; | 1756 word.WordPlace = m_CurPos; |
| 1757 if (CSection * pSection = m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex)) { | 1757 if (CSection * pSection = m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex)) { |
| 1758 if (pSection->m_LineArray.GetAt(m_CurPos.nLineIndex)) { | 1758 if (pSection->m_LineArray.GetAt(m_CurPos.nLineIndex)) { |
| 1759 if (CPVT_WordInfo * pWord = pSection->m_WordArray.GetAt(m_CurPos.nWo
rdIndex)) { | 1759 if (CPVT_WordInfo * pWord = pSection->m_WordArray.GetAt(m_CurPos.nWo
rdIndex)) { |
| 1760 word.Word = pWord->Word; | 1760 word.Word = pWord->Word; |
| 1761 word.nCharset = pWord->nCharset; | 1761 word.nCharset = pWord->nCharset; |
| 1762 word.fWidth = m_pVT->GetWordWidth(*pWord); | 1762 word.fWidth = m_pVT->GetWordWidth(*pWord); |
| 1763 word.ptWord = m_pVT->InToOut( | 1763 word.ptWord = m_pVT->InToOut( |
| 1764 CPDF_Point(pWord->fWordX + pSection->m_SecInfo
.rcSection.left, | 1764 CPDF_Point(pWord->fWordX + pSection->m_SecInfo
.rcSection.left, |
| 1765 pWord->fWordY + pSection->m_SecInfo
.rcSection.top) ); | 1765 pWord->fWordY + pSection->m_SecInfo
.rcSection.top) ); |
| 1766 word.fAscent = m_pVT->GetWordAscent(*pWord); | 1766 word.fAscent = m_pVT->GetWordAscent(*pWord); |
| 1767 word.fDescent = m_pVT->GetWordDescent(*pWord); | 1767 word.fDescent = m_pVT->GetWordDescent(*pWord); |
| 1768 if (pWord->pWordProps) { | 1768 if (pWord->pWordProps) { |
| 1769 word.WordProps = *pWord->pWordProps; | 1769 word.WordProps = *pWord->pWordProps; |
| 1770 } | 1770 } |
| 1771 word.nFontIndex = m_pVT->GetWordFontIndex(*pWord); | 1771 word.nFontIndex = m_pVT->GetWordFontIndex(*pWord); |
| 1772 word.fFontSize = m_pVT->GetWordFontSize(*pWord); | 1772 word.fFontSize = m_pVT->GetWordFontSize(*pWord); |
| 1773 return TRUE; | 1773 return true; |
| 1774 } | 1774 } |
| 1775 } | 1775 } |
| 1776 } | 1776 } |
| 1777 return FALSE; | 1777 return false; |
| 1778 } | 1778 } |
| 1779 FX_BOOL»CPDF_VariableText_Iterator::SetWord(const CPVT_Word & word) | 1779 bool» CPDF_VariableText_Iterator::SetWord(const CPVT_Word & word) |
| 1780 { | 1780 { |
| 1781 ASSERT(m_pVT != NULL); | 1781 ASSERT(m_pVT != NULL); |
| 1782 if (CSection * pSection = m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex)) { | 1782 if (CSection * pSection = m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex)) { |
| 1783 if (CPVT_WordInfo * pWord = pSection->m_WordArray.GetAt(m_CurPos.nWordIn
dex)) { | 1783 if (CPVT_WordInfo * pWord = pSection->m_WordArray.GetAt(m_CurPos.nWordIn
dex)) { |
| 1784 if (pWord->pWordProps) { | 1784 if (pWord->pWordProps) { |
| 1785 *pWord->pWordProps = word.WordProps; | 1785 *pWord->pWordProps = word.WordProps; |
| 1786 } | 1786 } |
| 1787 return TRUE; | 1787 return true; |
| 1788 } | 1788 } |
| 1789 } | 1789 } |
| 1790 return FALSE; | 1790 return false; |
| 1791 } | 1791 } |
| 1792 FX_BOOL»CPDF_VariableText_Iterator::GetLine(CPVT_Line & line) const | 1792 bool» CPDF_VariableText_Iterator::GetLine(CPVT_Line & line) const |
| 1793 { | 1793 { |
| 1794 ASSERT(m_pVT != NULL); | 1794 ASSERT(m_pVT != NULL); |
| 1795 line.lineplace = CPVT_WordPlace(m_CurPos.nSecIndex, m_CurPos.nLineIndex, -1)
; | 1795 line.lineplace = CPVT_WordPlace(m_CurPos.nSecIndex, m_CurPos.nLineIndex, -1)
; |
| 1796 if (CSection * pSection = m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex)) { | 1796 if (CSection * pSection = m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex)) { |
| 1797 if (CLine * pLine = pSection->m_LineArray.GetAt(m_CurPos.nLineIndex)) { | 1797 if (CLine * pLine = pSection->m_LineArray.GetAt(m_CurPos.nLineIndex)) { |
| 1798 line.ptLine = m_pVT->InToOut( | 1798 line.ptLine = m_pVT->InToOut( |
| 1799 CPDF_Point(pLine->m_LineInfo.fLineX + pSection->m_
SecInfo.rcSection.left, | 1799 CPDF_Point(pLine->m_LineInfo.fLineX + pSection->m_
SecInfo.rcSection.left, |
| 1800 pLine->m_LineInfo.fLineY + pSection->m_
SecInfo.rcSection.top) ); | 1800 pLine->m_LineInfo.fLineY + pSection->m_
SecInfo.rcSection.top) ); |
| 1801 line.fLineWidth = pLine->m_LineInfo.fLineWidth; | 1801 line.fLineWidth = pLine->m_LineInfo.fLineWidth; |
| 1802 line.fLineAscent = pLine->m_LineInfo.fLineAscent; | 1802 line.fLineAscent = pLine->m_LineInfo.fLineAscent; |
| 1803 line.fLineDescent = pLine->m_LineInfo.fLineDescent; | 1803 line.fLineDescent = pLine->m_LineInfo.fLineDescent; |
| 1804 line.lineEnd = pLine->GetEndWordPlace(); | 1804 line.lineEnd = pLine->GetEndWordPlace(); |
| 1805 return TRUE; | 1805 return true; |
| 1806 } | 1806 } |
| 1807 } | 1807 } |
| 1808 return FALSE; | 1808 return false; |
| 1809 } | 1809 } |
| 1810 FX_BOOL»CPDF_VariableText_Iterator::GetSection(CPVT_Section & section) const | 1810 bool» CPDF_VariableText_Iterator::GetSection(CPVT_Section & section) const |
| 1811 { | 1811 { |
| 1812 ASSERT(m_pVT != NULL); | 1812 ASSERT(m_pVT != NULL); |
| 1813 section.secplace = CPVT_WordPlace(m_CurPos.nSecIndex, 0, -1); | 1813 section.secplace = CPVT_WordPlace(m_CurPos.nSecIndex, 0, -1); |
| 1814 if (CSection * pSection = m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex)) { | 1814 if (CSection * pSection = m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex)) { |
| 1815 section.rcSection = m_pVT->InToOut(pSection->m_SecInfo.rcSection); | 1815 section.rcSection = m_pVT->InToOut(pSection->m_SecInfo.rcSection); |
| 1816 if (pSection->m_SecInfo.pSecProps) { | 1816 if (pSection->m_SecInfo.pSecProps) { |
| 1817 section.SecProps = *pSection->m_SecInfo.pSecProps; | 1817 section.SecProps = *pSection->m_SecInfo.pSecProps; |
| 1818 } | 1818 } |
| 1819 if (pSection->m_SecInfo.pWordProps) { | 1819 if (pSection->m_SecInfo.pWordProps) { |
| 1820 section.WordProps = *pSection->m_SecInfo.pWordProps; | 1820 section.WordProps = *pSection->m_SecInfo.pWordProps; |
| 1821 } | 1821 } |
| 1822 return TRUE; | 1822 return true; |
| 1823 } | 1823 } |
| 1824 return FALSE; | 1824 return false; |
| 1825 } | 1825 } |
| 1826 FX_BOOL»CPDF_VariableText_Iterator::SetSection(const CPVT_Section & section) | 1826 bool» CPDF_VariableText_Iterator::SetSection(const CPVT_Section & section) |
| 1827 { | 1827 { |
| 1828 ASSERT(m_pVT != NULL); | 1828 ASSERT(m_pVT != NULL); |
| 1829 if (CSection * pSection = m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex)) { | 1829 if (CSection * pSection = m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex)) { |
| 1830 if (pSection->m_SecInfo.pSecProps) { | 1830 if (pSection->m_SecInfo.pSecProps) { |
| 1831 *pSection->m_SecInfo.pSecProps = section.SecProps; | 1831 *pSection->m_SecInfo.pSecProps = section.SecProps; |
| 1832 } | 1832 } |
| 1833 if (pSection->m_SecInfo.pWordProps) { | 1833 if (pSection->m_SecInfo.pWordProps) { |
| 1834 *pSection->m_SecInfo.pWordProps = section.WordProps; | 1834 *pSection->m_SecInfo.pWordProps = section.WordProps; |
| 1835 } | 1835 } |
| 1836 return TRUE; | 1836 return true; |
| 1837 } | 1837 } |
| 1838 return FALSE; | 1838 return false; |
| 1839 } | 1839 } |
| OLD | NEW |