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