| 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 "fpdfsdk/pdfwindow/PWL_Edit.h" | 7 #include "fpdfsdk/pdfwindow/PWL_Edit.h" |
| 8 | 8 |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| 11 #include "core/fpdfapi/fpdf_font/include/cpdf_font.h" | 11 #include "core/fpdfapi/fpdf_font/include/cpdf_font.h" |
| 12 #include "core/fpdfdoc/include/cpvt_word.h" | 12 #include "core/fpdfdoc/include/cpvt_word.h" |
| 13 #include "core/fxcrt/include/fx_safe_types.h" | 13 #include "core/fxcrt/include/fx_safe_types.h" |
| 14 #include "core/fxcrt/include/fx_xml.h" | 14 #include "core/fxcrt/include/fx_xml.h" |
| 15 #include "core/fxge/include/fx_ge.h" | 15 #include "core/fxge/include/fx_ge.h" |
| 16 #include "fpdfsdk/fxedit/include/fxet_edit.h" |
| 16 #include "fpdfsdk/pdfwindow/PWL_Caret.h" | 17 #include "fpdfsdk/pdfwindow/PWL_Caret.h" |
| 17 #include "fpdfsdk/pdfwindow/PWL_EditCtrl.h" | 18 #include "fpdfsdk/pdfwindow/PWL_EditCtrl.h" |
| 18 #include "fpdfsdk/pdfwindow/PWL_FontMap.h" | 19 #include "fpdfsdk/pdfwindow/PWL_FontMap.h" |
| 19 #include "fpdfsdk/pdfwindow/PWL_ScrollBar.h" | 20 #include "fpdfsdk/pdfwindow/PWL_ScrollBar.h" |
| 20 #include "fpdfsdk/pdfwindow/PWL_Utils.h" | 21 #include "fpdfsdk/pdfwindow/PWL_Utils.h" |
| 21 #include "fpdfsdk/pdfwindow/PWL_Wnd.h" | 22 #include "fpdfsdk/pdfwindow/PWL_Wnd.h" |
| 22 #include "public/fpdf_fwlevent.h" | 23 #include "public/fpdf_fwlevent.h" |
| 23 #include "third_party/base/stl_util.h" | 24 #include "third_party/base/stl_util.h" |
| 24 | 25 |
| 25 CPWL_Edit::CPWL_Edit() | 26 CPWL_Edit::CPWL_Edit() |
| (...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 251 CPVT_WordRange wrWhole = m_pEdit->GetWholeWordRange(); | 252 CPVT_WordRange wrWhole = m_pEdit->GetWholeWordRange(); |
| 252 CPVT_WordRange wrSelect = GetSelectWordRange(); | 253 CPVT_WordRange wrSelect = GetSelectWordRange(); |
| 253 CPVT_WordRange wrVisible = | 254 CPVT_WordRange wrVisible = |
| 254 (HasFlag(PES_TEXTOVERFLOW) ? wrWhole : m_pEdit->GetVisibleWordRange()); | 255 (HasFlag(PES_TEXTOVERFLOW) ? wrWhole : m_pEdit->GetVisibleWordRange()); |
| 255 CPVT_WordRange wrSelBefore(wrWhole.BeginPos, wrSelect.BeginPos); | 256 CPVT_WordRange wrSelBefore(wrWhole.BeginPos, wrSelect.BeginPos); |
| 256 CPVT_WordRange wrSelAfter(wrSelect.EndPos, wrWhole.EndPos); | 257 CPVT_WordRange wrSelAfter(wrSelect.EndPos, wrWhole.EndPos); |
| 257 | 258 |
| 258 CPVT_WordRange wrTemp = | 259 CPVT_WordRange wrTemp = |
| 259 CPWL_Utils::OverlapWordRange(GetSelectWordRange(), wrVisible); | 260 CPWL_Utils::OverlapWordRange(GetSelectWordRange(), wrVisible); |
| 260 CFX_ByteString sEditSel = | 261 CFX_ByteString sEditSel = |
| 261 CPWL_Utils::GetEditSelAppStream(m_pEdit, ptOffset, &wrTemp); | 262 CPWL_Utils::GetEditSelAppStream(m_pEdit.get(), ptOffset, &wrTemp); |
| 262 | 263 |
| 263 if (sEditSel.GetLength() > 0) | 264 if (sEditSel.GetLength() > 0) |
| 264 sText << CPWL_Utils::GetColorAppStream(PWL_DEFAULT_SELBACKCOLOR).AsStringC() | 265 sText << CPWL_Utils::GetColorAppStream(PWL_DEFAULT_SELBACKCOLOR).AsStringC() |
| 265 << sEditSel.AsStringC(); | 266 << sEditSel.AsStringC(); |
| 266 | 267 |
| 267 wrTemp = CPWL_Utils::OverlapWordRange(wrVisible, wrSelBefore); | 268 wrTemp = CPWL_Utils::OverlapWordRange(wrVisible, wrSelBefore); |
| 268 CFX_ByteString sEditBefore = CPWL_Utils::GetEditAppStream( | 269 CFX_ByteString sEditBefore = CPWL_Utils::GetEditAppStream( |
| 269 m_pEdit, ptOffset, &wrTemp, !HasFlag(PES_CHARARRAY), | 270 m_pEdit.get(), ptOffset, &wrTemp, !HasFlag(PES_CHARARRAY), |
| 270 m_pEdit->GetPasswordChar()); | 271 m_pEdit->GetPasswordChar()); |
| 271 | 272 |
| 272 if (sEditBefore.GetLength() > 0) | 273 if (sEditBefore.GetLength() > 0) |
| 273 sText << "BT\n" << CPWL_Utils::GetColorAppStream(GetTextColor()).AsStringC() | 274 sText << "BT\n" << CPWL_Utils::GetColorAppStream(GetTextColor()).AsStringC() |
| 274 << sEditBefore.AsStringC() << "ET\n"; | 275 << sEditBefore.AsStringC() << "ET\n"; |
| 275 | 276 |
| 276 wrTemp = CPWL_Utils::OverlapWordRange(wrVisible, wrSelect); | 277 wrTemp = CPWL_Utils::OverlapWordRange(wrVisible, wrSelect); |
| 277 CFX_ByteString sEditMid = CPWL_Utils::GetEditAppStream( | 278 CFX_ByteString sEditMid = CPWL_Utils::GetEditAppStream( |
| 278 m_pEdit, ptOffset, &wrTemp, !HasFlag(PES_CHARARRAY), | 279 m_pEdit.get(), ptOffset, &wrTemp, !HasFlag(PES_CHARARRAY), |
| 279 m_pEdit->GetPasswordChar()); | 280 m_pEdit->GetPasswordChar()); |
| 280 | 281 |
| 281 if (sEditMid.GetLength() > 0) | 282 if (sEditMid.GetLength() > 0) |
| 282 sText << "BT\n" | 283 sText << "BT\n" |
| 283 << CPWL_Utils::GetColorAppStream(CPWL_Color(COLORTYPE_GRAY, 1)) | 284 << CPWL_Utils::GetColorAppStream(CPWL_Color(COLORTYPE_GRAY, 1)) |
| 284 .AsStringC() | 285 .AsStringC() |
| 285 << sEditMid.AsStringC() << "ET\n"; | 286 << sEditMid.AsStringC() << "ET\n"; |
| 286 | 287 |
| 287 wrTemp = CPWL_Utils::OverlapWordRange(wrVisible, wrSelAfter); | 288 wrTemp = CPWL_Utils::OverlapWordRange(wrVisible, wrSelAfter); |
| 288 CFX_ByteString sEditAfter = CPWL_Utils::GetEditAppStream( | 289 CFX_ByteString sEditAfter = CPWL_Utils::GetEditAppStream( |
| 289 m_pEdit, ptOffset, &wrTemp, !HasFlag(PES_CHARARRAY), | 290 m_pEdit.get(), ptOffset, &wrTemp, !HasFlag(PES_CHARARRAY), |
| 290 m_pEdit->GetPasswordChar()); | 291 m_pEdit->GetPasswordChar()); |
| 291 | 292 |
| 292 if (sEditAfter.GetLength() > 0) | 293 if (sEditAfter.GetLength() > 0) |
| 293 sText << "BT\n" << CPWL_Utils::GetColorAppStream(GetTextColor()).AsStringC() | 294 sText << "BT\n" << CPWL_Utils::GetColorAppStream(GetTextColor()).AsStringC() |
| 294 << sEditAfter.AsStringC() << "ET\n"; | 295 << sEditAfter.AsStringC() << "ET\n"; |
| 295 | 296 |
| 296 if (sText.GetLength() > 0) { | 297 if (sText.GetLength() > 0) { |
| 297 CFX_FloatRect rect = GetClientRect(); | 298 CFX_FloatRect rect = GetClientRect(); |
| 298 sAppStream << "q\n/Tx BMC\n"; | 299 sAppStream << "q\n/Tx BMC\n"; |
| 299 | 300 |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 388 | 389 |
| 389 CFX_FloatRect rcClip; | 390 CFX_FloatRect rcClip; |
| 390 CPVT_WordRange wrRange = m_pEdit->GetVisibleWordRange(); | 391 CPVT_WordRange wrRange = m_pEdit->GetVisibleWordRange(); |
| 391 CPVT_WordRange* pRange = nullptr; | 392 CPVT_WordRange* pRange = nullptr; |
| 392 | 393 |
| 393 if (!HasFlag(PES_TEXTOVERFLOW)) { | 394 if (!HasFlag(PES_TEXTOVERFLOW)) { |
| 394 rcClip = GetClientRect(); | 395 rcClip = GetClientRect(); |
| 395 pRange = &wrRange; | 396 pRange = &wrRange; |
| 396 } | 397 } |
| 397 CFX_SystemHandler* pSysHandler = GetSystemHandler(); | 398 CFX_SystemHandler* pSysHandler = GetSystemHandler(); |
| 398 IFX_Edit::DrawEdit( | 399 CFX_Edit::DrawEdit( |
| 399 pDevice, pUser2Device, m_pEdit, | 400 pDevice, pUser2Device, m_pEdit.get(), |
| 400 CPWL_Utils::PWLColorToFXColor(GetTextColor(), GetTransparency()), | 401 CPWL_Utils::PWLColorToFXColor(GetTextColor(), GetTransparency()), |
| 401 CPWL_Utils::PWLColorToFXColor(GetTextStrokeColor(), GetTransparency()), | 402 CPWL_Utils::PWLColorToFXColor(GetTextStrokeColor(), GetTransparency()), |
| 402 rcClip, CFX_FloatPoint(0.0f, 0.0f), pRange, pSysHandler, m_pFormFiller); | 403 rcClip, CFX_FloatPoint(0.0f, 0.0f), pRange, pSysHandler, m_pFormFiller); |
| 403 } | 404 } |
| 404 | 405 |
| 405 FX_BOOL CPWL_Edit::OnLButtonDown(const CFX_FloatPoint& point, uint32_t nFlag) { | 406 FX_BOOL CPWL_Edit::OnLButtonDown(const CFX_FloatPoint& point, uint32_t nFlag) { |
| 406 CPWL_Wnd::OnLButtonDown(point, nFlag); | 407 CPWL_Wnd::OnLButtonDown(point, nFlag); |
| 407 | 408 |
| 408 if (HasFlag(PES_TEXTOVERFLOW) || ClientHitTest(point)) { | 409 if (HasFlag(PES_TEXTOVERFLOW) || ClientHitTest(point)) { |
| 409 if (m_bMouseDown) | 410 if (m_bMouseDown) |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 483 } | 484 } |
| 484 | 485 |
| 485 void CPWL_Edit::SetLineLeading(FX_FLOAT fLineLeading, | 486 void CPWL_Edit::SetLineLeading(FX_FLOAT fLineLeading, |
| 486 FX_BOOL bPaint /* = TRUE*/) { | 487 FX_BOOL bPaint /* = TRUE*/) { |
| 487 m_pEdit->SetLineLeading(fLineLeading, bPaint); | 488 m_pEdit->SetLineLeading(fLineLeading, bPaint); |
| 488 } | 489 } |
| 489 | 490 |
| 490 CFX_ByteString CPWL_Edit::GetSelectAppearanceStream( | 491 CFX_ByteString CPWL_Edit::GetSelectAppearanceStream( |
| 491 const CFX_FloatPoint& ptOffset) const { | 492 const CFX_FloatPoint& ptOffset) const { |
| 492 CPVT_WordRange wr = GetSelectWordRange(); | 493 CPVT_WordRange wr = GetSelectWordRange(); |
| 493 return CPWL_Utils::GetEditSelAppStream(m_pEdit, ptOffset, &wr); | 494 return CPWL_Utils::GetEditSelAppStream(m_pEdit.get(), ptOffset, &wr); |
| 494 } | 495 } |
| 495 | 496 |
| 496 CPVT_WordRange CPWL_Edit::GetSelectWordRange() const { | 497 CPVT_WordRange CPWL_Edit::GetSelectWordRange() const { |
| 497 if (m_pEdit->IsSelected()) { | 498 if (m_pEdit->IsSelected()) { |
| 498 int32_t nStart = -1; | 499 int32_t nStart = -1; |
| 499 int32_t nEnd = -1; | 500 int32_t nEnd = -1; |
| 500 | 501 |
| 501 m_pEdit->GetSel(nStart, nEnd); | 502 m_pEdit->GetSel(nStart, nEnd); |
| 502 | 503 |
| 503 CPVT_WordPlace wpStart = m_pEdit->WordIndexToWordPlace(nStart); | 504 CPVT_WordPlace wpStart = m_pEdit->WordIndexToWordPlace(nStart); |
| 504 CPVT_WordPlace wpEnd = m_pEdit->WordIndexToWordPlace(nEnd); | 505 CPVT_WordPlace wpEnd = m_pEdit->WordIndexToWordPlace(nEnd); |
| 505 | 506 |
| 506 return CPVT_WordRange(wpStart, wpEnd); | 507 return CPVT_WordRange(wpStart, wpEnd); |
| 507 } | 508 } |
| 508 | 509 |
| 509 return CPVT_WordRange(); | 510 return CPVT_WordRange(); |
| 510 } | 511 } |
| 511 | 512 |
| 512 CFX_ByteString CPWL_Edit::GetTextAppearanceStream( | 513 CFX_ByteString CPWL_Edit::GetTextAppearanceStream( |
| 513 const CFX_FloatPoint& ptOffset) const { | 514 const CFX_FloatPoint& ptOffset) const { |
| 514 CFX_ByteTextBuf sRet; | 515 CFX_ByteTextBuf sRet; |
| 515 CFX_ByteString sEdit = CPWL_Utils::GetEditAppStream(m_pEdit, ptOffset); | 516 CFX_ByteString sEdit = CPWL_Utils::GetEditAppStream(m_pEdit.get(), ptOffset); |
| 516 if (sEdit.GetLength() > 0) { | 517 if (sEdit.GetLength() > 0) { |
| 517 sRet << "BT\n" << CPWL_Utils::GetColorAppStream(GetTextColor()).AsStringC() | 518 sRet << "BT\n" << CPWL_Utils::GetColorAppStream(GetTextColor()).AsStringC() |
| 518 << sEdit.AsStringC() << "ET\n"; | 519 << sEdit.AsStringC() << "ET\n"; |
| 519 } | 520 } |
| 520 return sRet.MakeString(); | 521 return sRet.MakeString(); |
| 521 } | 522 } |
| 522 | 523 |
| 523 CFX_ByteString CPWL_Edit::GetCaretAppearanceStream( | 524 CFX_ByteString CPWL_Edit::GetCaretAppearanceStream( |
| 524 const CFX_FloatPoint& ptOffset) const { | 525 const CFX_FloatPoint& ptOffset) const { |
| 525 if (m_pEditCaret) | 526 if (m_pEditCaret) |
| 526 return m_pEditCaret->GetCaretAppearanceStream(ptOffset); | 527 return m_pEditCaret->GetCaretAppearanceStream(ptOffset); |
| 527 | 528 |
| 528 return CFX_ByteString(); | 529 return CFX_ByteString(); |
| 529 } | 530 } |
| 530 | 531 |
| 531 CFX_FloatPoint CPWL_Edit::GetWordRightBottomPoint( | 532 CFX_FloatPoint CPWL_Edit::GetWordRightBottomPoint( |
| 532 const CPVT_WordPlace& wpWord) { | 533 const CPVT_WordPlace& wpWord) { |
| 533 CFX_FloatPoint pt(0.0f, 0.0f); | 534 CFX_FloatPoint pt(0.0f, 0.0f); |
| 534 | 535 |
| 535 IFX_Edit_Iterator* pIterator = m_pEdit->GetIterator(); | 536 CFX_Edit_Iterator* pIterator = m_pEdit->GetIterator(); |
| 536 CPVT_WordPlace wpOld = pIterator->GetAt(); | 537 CPVT_WordPlace wpOld = pIterator->GetAt(); |
| 537 pIterator->SetAt(wpWord); | 538 pIterator->SetAt(wpWord); |
| 538 CPVT_Word word; | 539 CPVT_Word word; |
| 539 if (pIterator->GetWord(word)) { | 540 if (pIterator->GetWord(word)) { |
| 540 pt = CFX_FloatPoint(word.ptWord.x + word.fWidth, | 541 pt = CFX_FloatPoint(word.ptWord.x + word.fWidth, |
| 541 word.ptWord.y + word.fDescent); | 542 word.ptWord.y + word.fDescent); |
| 542 } | 543 } |
| 543 | 544 |
| 544 pIterator->SetAt(wpOld); | 545 pIterator->SetAt(wpOld); |
| 545 | 546 |
| (...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 816 if (HasFlag(PES_SPELLCHECK)) { | 817 if (HasFlag(PES_SPELLCHECK)) { |
| 817 m_pEdit->RefreshWordRange(CombineWordRange(GetLatinWordsRange(oldplace), | 818 m_pEdit->RefreshWordRange(CombineWordRange(GetLatinWordsRange(oldplace), |
| 818 GetLatinWordsRange(place))); | 819 GetLatinWordsRange(place))); |
| 819 } | 820 } |
| 820 | 821 |
| 821 if (m_pEditNotify) { | 822 if (m_pEditNotify) { |
| 822 m_pEditNotify->OnInsertWord(place, oldplace); | 823 m_pEditNotify->OnInsertWord(place, oldplace); |
| 823 } | 824 } |
| 824 } | 825 } |
| 825 | 826 |
| 826 void CPWL_Edit::OnSetText(const CPVT_WordPlace& place, | |
| 827 const CPVT_WordPlace& oldplace) {} | |
| 828 | |
| 829 void CPWL_Edit::OnInsertText(const CPVT_WordPlace& place, | 827 void CPWL_Edit::OnInsertText(const CPVT_WordPlace& place, |
| 830 const CPVT_WordPlace& oldplace) { | 828 const CPVT_WordPlace& oldplace) { |
| 831 if (HasFlag(PES_SPELLCHECK)) { | 829 if (HasFlag(PES_SPELLCHECK)) { |
| 832 m_pEdit->RefreshWordRange(CombineWordRange(GetLatinWordsRange(oldplace), | 830 m_pEdit->RefreshWordRange(CombineWordRange(GetLatinWordsRange(oldplace), |
| 833 GetLatinWordsRange(place))); | 831 GetLatinWordsRange(place))); |
| 834 } | 832 } |
| 835 | 833 |
| 836 if (m_pEditNotify) { | 834 if (m_pEditNotify) { |
| 837 m_pEditNotify->OnInsertText(place, oldplace); | 835 m_pEditNotify->OnInsertText(place, oldplace); |
| 838 } | 836 } |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 879 } | 877 } |
| 880 | 878 |
| 881 #define PWL_ISARABICWORD(word) \ | 879 #define PWL_ISARABICWORD(word) \ |
| 882 ((word >= 0x0600 && word <= 0x06FF) || (word >= 0xFB50 && word <= 0xFEFC)) | 880 ((word >= 0x0600 && word <= 0x06FF) || (word >= 0xFB50 && word <= 0xFEFC)) |
| 883 | 881 |
| 884 CPVT_WordRange CPWL_Edit::GetSameWordsRange(const CPVT_WordPlace& place, | 882 CPVT_WordRange CPWL_Edit::GetSameWordsRange(const CPVT_WordPlace& place, |
| 885 FX_BOOL bLatin, | 883 FX_BOOL bLatin, |
| 886 FX_BOOL bArabic) const { | 884 FX_BOOL bArabic) const { |
| 887 CPVT_WordRange range; | 885 CPVT_WordRange range; |
| 888 | 886 |
| 889 IFX_Edit_Iterator* pIterator = m_pEdit->GetIterator(); | 887 CFX_Edit_Iterator* pIterator = m_pEdit->GetIterator(); |
| 890 CPVT_Word wordinfo; | 888 CPVT_Word wordinfo; |
| 891 CPVT_WordPlace wpStart(place), wpEnd(place); | 889 CPVT_WordPlace wpStart(place), wpEnd(place); |
| 892 pIterator->SetAt(place); | 890 pIterator->SetAt(place); |
| 893 | 891 |
| 894 if (bLatin) { | 892 if (bLatin) { |
| 895 while (pIterator->NextWord()) { | 893 while (pIterator->NextWord()) { |
| 896 if (!pIterator->GetWord(wordinfo) || | 894 if (!pIterator->GetWord(wordinfo) || |
| 897 !FX_EDIT_ISLATINWORD(wordinfo.Word)) { | 895 !FX_EDIT_ISLATINWORD(wordinfo.Word)) { |
| 898 break; | 896 break; |
| 899 } | 897 } |
| (...skipping 30 matching lines...) Expand all Loading... |
| 930 } | 928 } |
| 931 | 929 |
| 932 range.Set(wpStart, wpEnd); | 930 range.Set(wpStart, wpEnd); |
| 933 return range; | 931 return range; |
| 934 } | 932 } |
| 935 | 933 |
| 936 void CPWL_Edit::GeneratePageObjects( | 934 void CPWL_Edit::GeneratePageObjects( |
| 937 CPDF_PageObjectHolder* pObjectHolder, | 935 CPDF_PageObjectHolder* pObjectHolder, |
| 938 const CFX_FloatPoint& ptOffset, | 936 const CFX_FloatPoint& ptOffset, |
| 939 CFX_ArrayTemplate<CPDF_TextObject*>& ObjArray) { | 937 CFX_ArrayTemplate<CPDF_TextObject*>& ObjArray) { |
| 940 IFX_Edit::GeneratePageObjects( | 938 CFX_Edit::GeneratePageObjects( |
| 941 pObjectHolder, m_pEdit, ptOffset, nullptr, | 939 pObjectHolder, m_pEdit.get(), ptOffset, nullptr, |
| 942 CPWL_Utils::PWLColorToFXColor(GetTextColor(), GetTransparency()), | 940 CPWL_Utils::PWLColorToFXColor(GetTextColor(), GetTransparency()), |
| 943 ObjArray); | 941 ObjArray); |
| 944 } | 942 } |
| 945 | 943 |
| 946 void CPWL_Edit::GeneratePageObjects(CPDF_PageObjectHolder* pObjectHolder, | 944 void CPWL_Edit::GeneratePageObjects(CPDF_PageObjectHolder* pObjectHolder, |
| 947 const CFX_FloatPoint& ptOffset) { | 945 const CFX_FloatPoint& ptOffset) { |
| 948 CFX_ArrayTemplate<CPDF_TextObject*> ObjArray; | 946 CFX_ArrayTemplate<CPDF_TextObject*> ObjArray; |
| 949 IFX_Edit::GeneratePageObjects( | 947 CFX_Edit::GeneratePageObjects( |
| 950 pObjectHolder, m_pEdit, ptOffset, nullptr, | 948 pObjectHolder, m_pEdit.get(), ptOffset, nullptr, |
| 951 CPWL_Utils::PWLColorToFXColor(GetTextColor(), GetTransparency()), | 949 CPWL_Utils::PWLColorToFXColor(GetTextColor(), GetTransparency()), |
| 952 ObjArray); | 950 ObjArray); |
| 953 } | 951 } |
| OLD | NEW |