OLD | NEW |
1 // Copyright 2016 PDFium Authors. All rights reserved. | 1 // Copyright 2016 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include "core/fpdfdoc/include/cpdf_variabletext.h" | 7 #include "core/fpdfdoc/include/cpdf_variabletext.h" |
8 | 8 |
9 #include "core/fpdfapi/fpdf_font/include/cpdf_font.h" | 9 #include "core/fpdfapi/fpdf_font/include/cpdf_font.h" |
10 #include "core/fpdfdoc/cpvt_wordinfo.h" | 10 #include "core/fpdfdoc/cpvt_wordinfo.h" |
11 #include "core/fpdfdoc/csection.h" | 11 #include "core/fpdfdoc/csection.h" |
12 #include "core/fpdfdoc/include/cpvt_section.h" | 12 #include "core/fpdfdoc/include/cpvt_section.h" |
13 #include "core/fpdfdoc/include/cpvt_word.h" | 13 #include "core/fpdfdoc/include/cpvt_word.h" |
14 #include "core/fpdfdoc/include/ipvt_fontmap.h" | 14 #include "core/fpdfdoc/include/ipvt_fontmap.h" |
15 | 15 |
16 namespace { | 16 namespace { |
17 | 17 |
18 const float kDefaultFontSize = 18.0f; | |
19 const float kFontScale = 0.001f; | 18 const float kFontScale = 0.001f; |
20 const uint8_t kReturnLength = 1; | 19 const uint8_t kReturnLength = 1; |
21 const float kScalePercent = 0.01f; | 20 const float kScalePercent = 0.01f; |
22 | 21 |
23 const uint8_t gFontSizeSteps[] = {4, 6, 8, 9, 10, 12, 14, 18, 20, | 22 const uint8_t gFontSizeSteps[] = {4, 6, 8, 9, 10, 12, 14, 18, 20, |
24 25, 30, 35, 40, 45, 50, 55, 60, 70, | 23 25, 30, 35, 40, 45, 50, 55, 60, 70, |
25 80, 90, 100, 110, 120, 130, 144}; | 24 80, 90, 100, 110, 120, 130, 144}; |
26 | 25 |
27 } // namespace | 26 } // namespace |
28 | 27 |
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
246 m_bMultiLine(FALSE), | 245 m_bMultiLine(FALSE), |
247 m_bLimitWidth(FALSE), | 246 m_bLimitWidth(FALSE), |
248 m_bAutoFontSize(FALSE), | 247 m_bAutoFontSize(FALSE), |
249 m_nAlignment(0), | 248 m_nAlignment(0), |
250 m_fLineLeading(0.0f), | 249 m_fLineLeading(0.0f), |
251 m_fCharSpace(0.0f), | 250 m_fCharSpace(0.0f), |
252 m_nHorzScale(100), | 251 m_nHorzScale(100), |
253 m_wSubWord(0), | 252 m_wSubWord(0), |
254 m_fFontSize(0.0f), | 253 m_fFontSize(0.0f), |
255 m_bInitial(FALSE), | 254 m_bInitial(FALSE), |
256 m_bRichText(FALSE), | |
257 m_pVTProvider(nullptr) {} | 255 m_pVTProvider(nullptr) {} |
258 | 256 |
259 CPDF_VariableText::~CPDF_VariableText() { | 257 CPDF_VariableText::~CPDF_VariableText() { |
260 ResetAll(); | 258 ResetAll(); |
261 } | 259 } |
262 | 260 |
263 void CPDF_VariableText::Initialize() { | 261 void CPDF_VariableText::Initialize() { |
264 if (!m_bInitial) { | 262 if (!m_bInitial) { |
265 CPVT_SectionInfo secinfo; | 263 CPVT_SectionInfo secinfo; |
266 if (m_bRichText) { | |
267 secinfo.pSecProps.reset(new CPVT_SecProps(0.0f, 0.0f, 0)); | |
268 secinfo.pWordProps.reset(new CPVT_WordProps( | |
269 GetDefaultFontIndex(), kDefaultFontSize, 0, ScriptType::Normal, 0)); | |
270 } | |
271 CPVT_WordPlace place; | 264 CPVT_WordPlace place; |
272 place.nSecIndex = 0; | 265 place.nSecIndex = 0; |
273 AddSection(place, secinfo); | 266 AddSection(place, secinfo); |
274 CPVT_LineInfo lineinfo; | 267 CPVT_LineInfo lineinfo; |
275 lineinfo.fLineAscent = GetFontAscent(GetDefaultFontIndex(), GetFontSize()); | 268 lineinfo.fLineAscent = GetFontAscent(GetDefaultFontIndex(), GetFontSize()); |
276 lineinfo.fLineDescent = | 269 lineinfo.fLineDescent = |
277 GetFontDescent(GetDefaultFontIndex(), GetFontSize()); | 270 GetFontDescent(GetDefaultFontIndex(), GetFontSize()); |
278 AddLine(place, lineinfo); | 271 AddLine(place, lineinfo); |
279 if (CSection* pSection = m_SectionArray.GetAt(0)) | 272 if (CSection* pSection = m_SectionArray.GetAt(0)) |
280 pSection->ResetLinePlace(); | 273 pSection->ResetLinePlace(); |
(...skipping 12 matching lines...) Expand all Loading... |
293 int32_t charset, | 286 int32_t charset, |
294 const CPVT_WordProps* pWordProps) { | 287 const CPVT_WordProps* pWordProps) { |
295 int32_t nTotlaWords = GetTotalWords(); | 288 int32_t nTotlaWords = GetTotalWords(); |
296 if (m_nLimitChar > 0 && nTotlaWords >= m_nLimitChar) | 289 if (m_nLimitChar > 0 && nTotlaWords >= m_nLimitChar) |
297 return place; | 290 return place; |
298 if (m_nCharArray > 0 && nTotlaWords >= m_nCharArray) | 291 if (m_nCharArray > 0 && nTotlaWords >= m_nCharArray) |
299 return place; | 292 return place; |
300 | 293 |
301 CPVT_WordPlace newplace = place; | 294 CPVT_WordPlace newplace = place; |
302 newplace.nWordIndex++; | 295 newplace.nWordIndex++; |
303 if (m_bRichText) { | |
304 CPVT_WordProps* pNewProps = | |
305 pWordProps ? new CPVT_WordProps(*pWordProps) : new CPVT_WordProps(); | |
306 pNewProps->nFontIndex = | |
307 GetWordFontIndex(word, charset, pWordProps->nFontIndex); | |
308 return AddWord(newplace, CPVT_WordInfo(word, charset, -1, pNewProps)); | |
309 } | |
310 int32_t nFontIndex = | 296 int32_t nFontIndex = |
311 GetSubWord() > 0 ? GetDefaultFontIndex() | 297 GetSubWord() > 0 ? GetDefaultFontIndex() |
312 : GetWordFontIndex(word, charset, GetDefaultFontIndex()); | 298 : GetWordFontIndex(word, charset, GetDefaultFontIndex()); |
313 return AddWord(newplace, CPVT_WordInfo(word, charset, nFontIndex, nullptr)); | 299 return AddWord(newplace, CPVT_WordInfo(word, charset, nFontIndex, nullptr)); |
314 } | 300 } |
315 | 301 |
316 CPVT_WordPlace CPDF_VariableText::InsertSection( | 302 CPVT_WordPlace CPDF_VariableText::InsertSection( |
317 const CPVT_WordPlace& place, | 303 const CPVT_WordPlace& place, |
318 const CPVT_SecProps* pSecProps, | 304 const CPVT_SecProps* pSecProps, |
319 const CPVT_WordProps* pWordProps) { | 305 const CPVT_WordProps* pWordProps) { |
320 int32_t nTotlaWords = GetTotalWords(); | 306 int32_t nTotlaWords = GetTotalWords(); |
321 if (m_nLimitChar > 0 && nTotlaWords >= m_nLimitChar) | 307 if (m_nLimitChar > 0 && nTotlaWords >= m_nLimitChar) |
322 return place; | 308 return place; |
323 if (m_nCharArray > 0 && nTotlaWords >= m_nCharArray) | 309 if (m_nCharArray > 0 && nTotlaWords >= m_nCharArray) |
324 return place; | 310 return place; |
325 if (!m_bMultiLine) | 311 if (!m_bMultiLine) |
326 return place; | 312 return place; |
327 | 313 |
328 CPVT_WordPlace wordplace = place; | 314 CPVT_WordPlace wordplace = place; |
329 UpdateWordPlace(wordplace); | 315 UpdateWordPlace(wordplace); |
330 CPVT_WordPlace newplace = place; | 316 CPVT_WordPlace newplace = place; |
331 if (CSection* pSection = m_SectionArray.GetAt(wordplace.nSecIndex)) { | 317 if (CSection* pSection = m_SectionArray.GetAt(wordplace.nSecIndex)) { |
332 CPVT_WordPlace NewPlace(wordplace.nSecIndex + 1, 0, -1); | 318 CPVT_WordPlace NewPlace(wordplace.nSecIndex + 1, 0, -1); |
333 CPVT_SectionInfo secinfo; | 319 CPVT_SectionInfo secinfo; |
334 if (m_bRichText) { | |
335 if (pSecProps) | |
336 secinfo.pSecProps.reset(new CPVT_SecProps(*pSecProps)); | |
337 if (pWordProps) | |
338 secinfo.pWordProps.reset(new CPVT_WordProps(*pWordProps)); | |
339 } | |
340 AddSection(NewPlace, secinfo); | 320 AddSection(NewPlace, secinfo); |
341 newplace = NewPlace; | 321 newplace = NewPlace; |
342 if (CSection* pNewSection = m_SectionArray.GetAt(NewPlace.nSecIndex)) { | 322 if (CSection* pNewSection = m_SectionArray.GetAt(NewPlace.nSecIndex)) { |
343 for (int32_t w = wordplace.nWordIndex + 1, | 323 for (int32_t w = wordplace.nWordIndex + 1, |
344 sz = pSection->m_WordArray.GetSize(); | 324 sz = pSection->m_WordArray.GetSize(); |
345 w < sz; w++) { | 325 w < sz; w++) { |
346 if (CPVT_WordInfo* pWord = pSection->m_WordArray.GetAt(w)) { | 326 if (CPVT_WordInfo* pWord = pSection->m_WordArray.GetAt(w)) { |
347 NewPlace.nWordIndex++; | 327 NewPlace.nWordIndex++; |
348 pNewSection->AddWord(NewPlace, *pWord); | 328 pNewSection->AddWord(NewPlace, *pWord); |
349 } | 329 } |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
417 } | 397 } |
418 | 398 |
419 void CPDF_VariableText::SetText(const FX_WCHAR* text, | 399 void CPDF_VariableText::SetText(const FX_WCHAR* text, |
420 int32_t charset, | 400 int32_t charset, |
421 const CPVT_SecProps* pSecProps, | 401 const CPVT_SecProps* pSecProps, |
422 const CPVT_WordProps* pWordProps) { | 402 const CPVT_WordProps* pWordProps) { |
423 DeleteWords(CPVT_WordRange(GetBeginWordPlace(), GetEndWordPlace())); | 403 DeleteWords(CPVT_WordRange(GetBeginWordPlace(), GetEndWordPlace())); |
424 CFX_WideString swText = text; | 404 CFX_WideString swText = text; |
425 CPVT_WordPlace wp(0, 0, -1); | 405 CPVT_WordPlace wp(0, 0, -1); |
426 CPVT_SectionInfo secinfo; | 406 CPVT_SectionInfo secinfo; |
427 if (m_bRichText) { | |
428 if (pSecProps) | |
429 secinfo.pSecProps.reset(new CPVT_SecProps(*pSecProps)); | |
430 if (pWordProps) | |
431 secinfo.pWordProps.reset(new CPVT_WordProps(*pWordProps)); | |
432 } | |
433 if (CSection* pSection = m_SectionArray.GetAt(0)) | 407 if (CSection* pSection = m_SectionArray.GetAt(0)) |
434 pSection->m_SecInfo = secinfo; | 408 pSection->m_SecInfo = secinfo; |
435 | 409 |
436 int32_t nCharCount = 0; | 410 int32_t nCharCount = 0; |
437 for (int32_t i = 0, sz = swText.GetLength(); i < sz; i++) { | 411 for (int32_t i = 0, sz = swText.GetLength(); i < sz; i++) { |
438 if (m_nLimitChar > 0 && nCharCount >= m_nLimitChar) | 412 if (m_nLimitChar > 0 && nCharCount >= m_nLimitChar) |
439 break; | 413 break; |
440 if (m_nCharArray > 0 && nCharCount >= m_nCharArray) | 414 if (m_nCharArray > 0 && nCharCount >= m_nCharArray) |
441 break; | 415 break; |
442 | 416 |
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
794 CFX_FloatRect CPDF_VariableText::GetContentRect() const { | 768 CFX_FloatRect CPDF_VariableText::GetContentRect() const { |
795 return InToOut(CPVT_FloatRect(CPDF_EditContainer::GetContentRect())); | 769 return InToOut(CPVT_FloatRect(CPDF_EditContainer::GetContentRect())); |
796 } | 770 } |
797 | 771 |
798 const CFX_FloatRect& CPDF_VariableText::GetPlateRect() const { | 772 const CFX_FloatRect& CPDF_VariableText::GetPlateRect() const { |
799 return CPDF_EditContainer::GetPlateRect(); | 773 return CPDF_EditContainer::GetPlateRect(); |
800 } | 774 } |
801 | 775 |
802 FX_FLOAT CPDF_VariableText::GetWordFontSize(const CPVT_WordInfo& WordInfo, | 776 FX_FLOAT CPDF_VariableText::GetWordFontSize(const CPVT_WordInfo& WordInfo, |
803 FX_BOOL bFactFontSize) { | 777 FX_BOOL bFactFontSize) { |
804 return m_bRichText && WordInfo.pWordProps | 778 return GetFontSize(); |
805 ? (WordInfo.pWordProps->nScriptType == ScriptType::Normal || | |
806 bFactFontSize | |
807 ? WordInfo.pWordProps->fFontSize | |
808 : WordInfo.pWordProps->fFontSize * VARIABLETEXT_HALF) | |
809 : GetFontSize(); | |
810 } | 779 } |
811 | 780 |
812 int32_t CPDF_VariableText::GetWordFontIndex(const CPVT_WordInfo& WordInfo) { | 781 int32_t CPDF_VariableText::GetWordFontIndex(const CPVT_WordInfo& WordInfo) { |
813 return m_bRichText && WordInfo.pWordProps ? WordInfo.pWordProps->nFontIndex | 782 return WordInfo.nFontIndex; |
814 : WordInfo.nFontIndex; | |
815 } | 783 } |
816 | 784 |
817 FX_FLOAT CPDF_VariableText::GetWordWidth(int32_t nFontIndex, | 785 FX_FLOAT CPDF_VariableText::GetWordWidth(int32_t nFontIndex, |
818 uint16_t Word, | 786 uint16_t Word, |
819 uint16_t SubWord, | 787 uint16_t SubWord, |
820 FX_FLOAT fCharSpace, | 788 FX_FLOAT fCharSpace, |
821 int32_t nHorzScale, | 789 int32_t nHorzScale, |
822 FX_FLOAT fFontSize, | 790 FX_FLOAT fFontSize, |
823 FX_FLOAT fWordTail, | 791 FX_FLOAT fWordTail, |
824 int32_t nWordStyle) { | 792 int32_t nWordStyle) { |
825 return (GetCharWidth(nFontIndex, Word, SubWord, nWordStyle) * fFontSize * | 793 return (GetCharWidth(nFontIndex, Word, SubWord, nWordStyle) * fFontSize * |
826 kFontScale + | 794 kFontScale + |
827 fCharSpace) * | 795 fCharSpace) * |
828 nHorzScale * kScalePercent + | 796 nHorzScale * kScalePercent + |
829 fWordTail; | 797 fWordTail; |
830 } | 798 } |
831 | 799 |
832 FX_FLOAT CPDF_VariableText::GetWordWidth(const CPVT_WordInfo& WordInfo) { | 800 FX_FLOAT CPDF_VariableText::GetWordWidth(const CPVT_WordInfo& WordInfo) { |
833 return GetWordWidth( | 801 return GetWordWidth( |
834 GetWordFontIndex(WordInfo), WordInfo.Word, GetSubWord(), | 802 GetWordFontIndex(WordInfo), WordInfo.Word, GetSubWord(), |
835 GetCharSpace(WordInfo), GetHorzScale(WordInfo), GetWordFontSize(WordInfo), | 803 GetCharSpace(WordInfo), GetHorzScale(WordInfo), GetWordFontSize(WordInfo), |
836 WordInfo.fWordTail, | 804 WordInfo.fWordTail, |
837 WordInfo.pWordProps ? WordInfo.pWordProps->nWordStyle : 0); | 805 WordInfo.pWordProps ? WordInfo.pWordProps->nWordStyle : 0); |
838 } | 806 } |
839 | 807 |
840 FX_FLOAT CPDF_VariableText::GetLineAscent(const CPVT_SectionInfo& SecInfo) { | 808 FX_FLOAT CPDF_VariableText::GetLineAscent(const CPVT_SectionInfo& SecInfo) { |
841 return m_bRichText && SecInfo.pWordProps | 809 return GetFontAscent(GetDefaultFontIndex(), GetFontSize()); |
842 ? GetFontAscent(SecInfo.pWordProps->nFontIndex, | |
843 SecInfo.pWordProps->fFontSize) | |
844 : GetFontAscent(GetDefaultFontIndex(), GetFontSize()); | |
845 } | 810 } |
846 | 811 |
847 FX_FLOAT CPDF_VariableText::GetLineDescent(const CPVT_SectionInfo& SecInfo) { | 812 FX_FLOAT CPDF_VariableText::GetLineDescent(const CPVT_SectionInfo& SecInfo) { |
848 return m_bRichText && SecInfo.pWordProps | 813 return GetFontDescent(GetDefaultFontIndex(), GetFontSize()); |
849 ? GetFontDescent(SecInfo.pWordProps->nFontIndex, | |
850 SecInfo.pWordProps->fFontSize) | |
851 : GetFontDescent(GetDefaultFontIndex(), GetFontSize()); | |
852 } | 814 } |
853 | 815 |
854 FX_FLOAT CPDF_VariableText::GetFontAscent(int32_t nFontIndex, | 816 FX_FLOAT CPDF_VariableText::GetFontAscent(int32_t nFontIndex, |
855 FX_FLOAT fFontSize) { | 817 FX_FLOAT fFontSize) { |
856 return (FX_FLOAT)GetTypeAscent(nFontIndex) * fFontSize * kFontScale; | 818 return (FX_FLOAT)GetTypeAscent(nFontIndex) * fFontSize * kFontScale; |
857 } | 819 } |
858 | 820 |
859 FX_FLOAT CPDF_VariableText::GetFontDescent(int32_t nFontIndex, | 821 FX_FLOAT CPDF_VariableText::GetFontDescent(int32_t nFontIndex, |
860 FX_FLOAT fFontSize) { | 822 FX_FLOAT fFontSize) { |
861 return (FX_FLOAT)GetTypeDescent(nFontIndex) * fFontSize * kFontScale; | 823 return (FX_FLOAT)GetTypeDescent(nFontIndex) * fFontSize * kFontScale; |
(...skipping 15 matching lines...) Expand all Loading... |
877 GetWordFontSize(WordInfo, bFactFontSize)); | 839 GetWordFontSize(WordInfo, bFactFontSize)); |
878 } | 840 } |
879 | 841 |
880 FX_FLOAT CPDF_VariableText::GetWordDescent(const CPVT_WordInfo& WordInfo, | 842 FX_FLOAT CPDF_VariableText::GetWordDescent(const CPVT_WordInfo& WordInfo, |
881 FX_BOOL bFactFontSize) { | 843 FX_BOOL bFactFontSize) { |
882 return GetFontDescent(GetWordFontIndex(WordInfo), | 844 return GetFontDescent(GetWordFontIndex(WordInfo), |
883 GetWordFontSize(WordInfo, bFactFontSize)); | 845 GetWordFontSize(WordInfo, bFactFontSize)); |
884 } | 846 } |
885 | 847 |
886 FX_FLOAT CPDF_VariableText::GetLineLeading(const CPVT_SectionInfo& SecInfo) { | 848 FX_FLOAT CPDF_VariableText::GetLineLeading(const CPVT_SectionInfo& SecInfo) { |
887 return m_bRichText && SecInfo.pSecProps ? SecInfo.pSecProps->fLineLeading | 849 return m_fLineLeading; |
888 : m_fLineLeading; | |
889 } | 850 } |
890 | 851 |
891 FX_FLOAT CPDF_VariableText::GetLineIndent(const CPVT_SectionInfo& SecInfo) { | 852 FX_FLOAT CPDF_VariableText::GetLineIndent(const CPVT_SectionInfo& SecInfo) { |
892 return m_bRichText && SecInfo.pSecProps ? SecInfo.pSecProps->fLineIndent | 853 return 0.0f; |
893 : 0.0f; | |
894 } | 854 } |
895 | 855 |
896 int32_t CPDF_VariableText::GetAlignment(const CPVT_SectionInfo& SecInfo) { | 856 int32_t CPDF_VariableText::GetAlignment(const CPVT_SectionInfo& SecInfo) { |
897 return m_bRichText && SecInfo.pSecProps ? SecInfo.pSecProps->nAlignment | 857 return m_nAlignment; |
898 : m_nAlignment; | |
899 } | 858 } |
900 | 859 |
901 FX_FLOAT CPDF_VariableText::GetCharSpace(const CPVT_WordInfo& WordInfo) { | 860 FX_FLOAT CPDF_VariableText::GetCharSpace(const CPVT_WordInfo& WordInfo) { |
902 return m_bRichText && WordInfo.pWordProps ? WordInfo.pWordProps->fCharSpace | 861 return m_fCharSpace; |
903 : m_fCharSpace; | |
904 } | 862 } |
905 | 863 |
906 int32_t CPDF_VariableText::GetHorzScale(const CPVT_WordInfo& WordInfo) { | 864 int32_t CPDF_VariableText::GetHorzScale(const CPVT_WordInfo& WordInfo) { |
907 return m_bRichText && WordInfo.pWordProps ? WordInfo.pWordProps->nHorzScale | 865 return m_nHorzScale; |
908 : m_nHorzScale; | |
909 } | 866 } |
910 | 867 |
911 void CPDF_VariableText::ClearSectionRightWords(const CPVT_WordPlace& place) { | 868 void CPDF_VariableText::ClearSectionRightWords(const CPVT_WordPlace& place) { |
912 CPVT_WordPlace wordplace = AdjustLineHeader(place, TRUE); | 869 CPVT_WordPlace wordplace = AdjustLineHeader(place, TRUE); |
913 if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { | 870 if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { |
914 for (int32_t w = pSection->m_WordArray.GetSize() - 1; | 871 for (int32_t w = pSection->m_WordArray.GetSize() - 1; |
915 w > wordplace.nWordIndex; w--) { | 872 w > wordplace.nWordIndex; w--) { |
916 delete pSection->m_WordArray.GetAt(w); | 873 delete pSection->m_WordArray.GetAt(w); |
917 pSection->m_WordArray.RemoveAt(w); | 874 pSection->m_WordArray.RemoveAt(w); |
918 } | 875 } |
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1150 | 1107 |
1151 CPDF_VariableText::Iterator* CPDF_VariableText::GetIterator() { | 1108 CPDF_VariableText::Iterator* CPDF_VariableText::GetIterator() { |
1152 if (!m_pVTIterator) | 1109 if (!m_pVTIterator) |
1153 m_pVTIterator.reset(new CPDF_VariableText::Iterator(this)); | 1110 m_pVTIterator.reset(new CPDF_VariableText::Iterator(this)); |
1154 return m_pVTIterator.get(); | 1111 return m_pVTIterator.get(); |
1155 } | 1112 } |
1156 | 1113 |
1157 void CPDF_VariableText::SetProvider(CPDF_VariableText::Provider* pProvider) { | 1114 void CPDF_VariableText::SetProvider(CPDF_VariableText::Provider* pProvider) { |
1158 m_pVTProvider = pProvider; | 1115 m_pVTProvider = pProvider; |
1159 } | 1116 } |
OLD | NEW |