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 <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <cctype> | 10 #include <cctype> |
(...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
354 return NULL; | 354 return NULL; |
355 } | 355 } |
356 FXSYS_memcpy(m_pData->m_String, pOldData->m_String, | 356 FXSYS_memcpy(m_pData->m_String, pOldData->m_String, |
357 (nOldLen + 1) * sizeof(FX_WCHAR)); | 357 (nOldLen + 1) * sizeof(FX_WCHAR)); |
358 m_pData->m_nDataLength = nOldLen; | 358 m_pData->m_nDataLength = nOldLen; |
359 pOldData->Release(); | 359 pOldData->Release(); |
360 return m_pData->m_String; | 360 return m_pData->m_String; |
361 } | 361 } |
362 | 362 |
363 // static | 363 // static |
364 CFX_WideString CFX_WideString::FromLocal(const CFX_ByteString& str) { | 364 CFX_WideString CFX_WideString::FromLocal(const CFX_ByteStringC& str) { |
365 return FromCodePage(str, 0); | 365 return FromCodePage(str, 0); |
366 } | 366 } |
367 | 367 |
368 // static | 368 // static |
369 CFX_WideString CFX_WideString::FromCodePage(const CFX_ByteString& str, | 369 CFX_WideString CFX_WideString::FromCodePage(const CFX_ByteStringC& str, |
370 uint16_t codepage) { | 370 uint16_t codepage) { |
371 return CFX_CharMap::GetWideString(codepage, str); | 371 return CFX_CharMap::GetWideString(codepage, str); |
372 } | 372 } |
373 | 373 |
374 // static | 374 // static |
375 CFX_WideString CFX_WideString::FromUTF8(const CFX_ByteStringC& str) { | 375 CFX_WideString CFX_WideString::FromUTF8(const CFX_ByteStringC& str) { |
376 if (str.IsEmpty()) | 376 if (str.IsEmpty()) |
377 return CFX_WideString(); | 377 return CFX_WideString(); |
378 | 378 |
379 CFX_UTF8Decoder decoder; | 379 CFX_UTF8Decoder decoder; |
(...skipping 623 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1003 } | 1003 } |
1004 int CFX_WideString::GetInteger() const { | 1004 int CFX_WideString::GetInteger() const { |
1005 return m_pData ? FXSYS_wtoi(m_pData->m_String) : 0; | 1005 return m_pData ? FXSYS_wtoi(m_pData->m_String) : 0; |
1006 } | 1006 } |
1007 FX_FLOAT CFX_WideString::GetFloat() const { | 1007 FX_FLOAT CFX_WideString::GetFloat() const { |
1008 return m_pData ? FX_wtof(m_pData->m_String, m_pData->m_nDataLength) : 0.0f; | 1008 return m_pData ? FX_wtof(m_pData->m_String, m_pData->m_nDataLength) : 0.0f; |
1009 } | 1009 } |
1010 | 1010 |
1011 // static | 1011 // static |
1012 CFX_ByteString CFX_CharMap::GetByteString(uint16_t codepage, | 1012 CFX_ByteString CFX_CharMap::GetByteString(uint16_t codepage, |
1013 const CFX_WideString& wstr) { | 1013 const CFX_WideStringC& wstr) { |
1014 FXSYS_assert(IsValidCodePage(codepage)); | 1014 FXSYS_assert(IsValidCodePage(codepage)); |
1015 int src_len = wstr.GetLength(); | 1015 int src_len = wstr.GetLength(); |
1016 int dest_len = FXSYS_WideCharToMultiByte(codepage, 0, wstr.c_str(), src_len, | 1016 int dest_len = FXSYS_WideCharToMultiByte(codepage, 0, wstr.c_str(), src_len, |
1017 nullptr, 0, nullptr, nullptr); | 1017 nullptr, 0, nullptr, nullptr); |
1018 CFX_ByteString bstr; | 1018 CFX_ByteString bstr; |
1019 if (dest_len) { | 1019 if (dest_len) { |
1020 FX_CHAR* dest_buf = bstr.GetBuffer(dest_len); | 1020 FX_CHAR* dest_buf = bstr.GetBuffer(dest_len); |
1021 FXSYS_WideCharToMultiByte(codepage, 0, wstr.c_str(), src_len, dest_buf, | 1021 FXSYS_WideCharToMultiByte(codepage, 0, wstr.c_str(), src_len, dest_buf, |
1022 dest_len, nullptr, nullptr); | 1022 dest_len, nullptr, nullptr); |
1023 bstr.ReleaseBuffer(dest_len); | 1023 bstr.ReleaseBuffer(dest_len); |
1024 } | 1024 } |
1025 return bstr; | 1025 return bstr; |
1026 } | 1026 } |
1027 | 1027 |
1028 // static | 1028 // static |
1029 CFX_WideString CFX_CharMap::GetWideString(uint16_t codepage, | 1029 CFX_WideString CFX_CharMap::GetWideString(uint16_t codepage, |
1030 const CFX_ByteString& bstr) { | 1030 const CFX_ByteStringC& bstr) { |
1031 FXSYS_assert(IsValidCodePage(codepage)); | 1031 FXSYS_assert(IsValidCodePage(codepage)); |
1032 int src_len = bstr.GetLength(); | 1032 int src_len = bstr.GetLength(); |
1033 int dest_len = | 1033 int dest_len = |
1034 FXSYS_MultiByteToWideChar(codepage, 0, bstr, src_len, nullptr, 0); | 1034 FXSYS_MultiByteToWideChar(codepage, 0, bstr.c_str(), src_len, nullptr, 0); |
1035 CFX_WideString wstr; | 1035 CFX_WideString wstr; |
1036 if (dest_len) { | 1036 if (dest_len) { |
1037 FX_WCHAR* dest_buf = wstr.GetBuffer(dest_len); | 1037 FX_WCHAR* dest_buf = wstr.GetBuffer(dest_len); |
1038 FXSYS_MultiByteToWideChar(codepage, 0, bstr, src_len, dest_buf, dest_len); | 1038 FXSYS_MultiByteToWideChar(codepage, 0, bstr.c_str(), src_len, dest_buf, |
| 1039 dest_len); |
1039 wstr.ReleaseBuffer(dest_len); | 1040 wstr.ReleaseBuffer(dest_len); |
1040 } | 1041 } |
1041 return wstr; | 1042 return wstr; |
1042 } | 1043 } |
OLD | NEW |