| 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 "core/fxcrt/include/fx_ext.h" | 7 #include "core/fxcrt/include/fx_ext.h" | 
| 8 #include "xfa/fgas/crt/fgas_codepage.h" | 8 #include "xfa/fgas/crt/fgas_codepage.h" | 
| 9 #include "xfa/fgas/crt/fgas_language.h" | 9 #include "xfa/fgas/crt/fgas_language.h" | 
| 10 | 10 | 
| (...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 302     {0xf637e157, 0x478},  {0xfc213f3a, 0x2717}, {0xff654d14, 0x3b5}, | 302     {0xf637e157, 0x478},  {0xfc213f3a, 0x2717}, {0xff654d14, 0x3b5}, | 
| 303 }; | 303 }; | 
| 304 uint16_t FX_GetCodePageFromStringA(const FX_CHAR* pStr, int32_t iLength) { | 304 uint16_t FX_GetCodePageFromStringA(const FX_CHAR* pStr, int32_t iLength) { | 
| 305   FXSYS_assert(pStr != NULL); | 305   FXSYS_assert(pStr != NULL); | 
| 306   if (iLength < 0) { | 306   if (iLength < 0) { | 
| 307     iLength = FXSYS_strlen(pStr); | 307     iLength = FXSYS_strlen(pStr); | 
| 308   } | 308   } | 
| 309   if (iLength == 0) { | 309   if (iLength == 0) { | 
| 310     return 0xFFFF; | 310     return 0xFFFF; | 
| 311   } | 311   } | 
| 312   uint32_t uHash = FX_HashCode_String_GetA(pStr, iLength, TRUE); | 312   uint32_t uHash = FX_HashCode_GetA(CFX_ByteStringC(pStr, iLength), true); | 
| 313   int32_t iStart = 0, iMid; | 313   int32_t iStart = 0; | 
| 314   int32_t iEnd = sizeof(g_FXCPHashTable) / sizeof(FX_STR2CPHASH) - 1; | 314   int32_t iEnd = sizeof(g_FXCPHashTable) / sizeof(FX_STR2CPHASH) - 1; | 
| 315   FXSYS_assert(iEnd >= 0); | 315   FXSYS_assert(iEnd >= 0); | 
| 316   do { | 316   do { | 
| 317     iMid = (iStart + iEnd) / 2; | 317     int32_t iMid = (iStart + iEnd) / 2; | 
| 318     const FX_STR2CPHASH& cp = g_FXCPHashTable[iMid]; | 318     const FX_STR2CPHASH& cp = g_FXCPHashTable[iMid]; | 
| 319     if (uHash == cp.uHash) { | 319     if (uHash == cp.uHash) { | 
| 320       return (uint16_t)cp.uCodePage; | 320       return (uint16_t)cp.uCodePage; | 
| 321     } else if (uHash < cp.uHash) { | 321     } else if (uHash < cp.uHash) { | 
| 322       iEnd = iMid - 1; | 322       iEnd = iMid - 1; | 
| 323     } else { | 323     } else { | 
| 324       iStart = iMid + 1; | 324       iStart = iMid + 1; | 
| 325     } | 325     } | 
| 326   } while (iStart <= iEnd); | 326   } while (iStart <= iEnd); | 
| 327   return 0xFFFF; | 327   return 0xFFFF; | 
| 328 } | 328 } | 
| 329 uint16_t FX_GetCodePageFormStringW(const FX_WCHAR* pStr, int32_t iLength) { | 329 uint16_t FX_GetCodePageFormStringW(const FX_WCHAR* pStr, int32_t iLength) { | 
| 330   if (iLength < 0) { | 330   if (iLength < 0) { | 
| 331     iLength = FXSYS_wcslen(pStr); | 331     iLength = FXSYS_wcslen(pStr); | 
| 332   } | 332   } | 
| 333   if (iLength == 0) { | 333   if (iLength == 0) { | 
| 334     return 0xFFFF; | 334     return 0xFFFF; | 
| 335   } | 335   } | 
| 336   CFX_ByteString csStr; | 336   CFX_ByteString csStr; | 
| 337   FX_CHAR* pBuf = csStr.GetBuffer(iLength + 1); | 337   FX_CHAR* pBuf = csStr.GetBuffer(iLength + 1); | 
| 338   for (int32_t i = 0; i < iLength; ++i) { | 338   for (int32_t i = 0; i < iLength; ++i) { | 
| 339     *pBuf++ = (FX_CHAR)*pStr++; | 339     *pBuf++ = (FX_CHAR)*pStr++; | 
| 340   } | 340   } | 
| 341   csStr.ReleaseBuffer(iLength); | 341   csStr.ReleaseBuffer(iLength); | 
| 342   return FX_GetCodePageFromStringA(csStr.c_str(), iLength); | 342   return FX_GetCodePageFromStringA(csStr.c_str(), iLength); | 
| 343 } | 343 } | 
| OLD | NEW | 
|---|