Index: core/src/fxcrt/fx_basic_util.cpp |
diff --git a/core/src/fxcrt/fx_basic_util.cpp b/core/src/fxcrt/fx_basic_util.cpp |
deleted file mode 100644 |
index 2422212d590b0d181088de2a7887215c4e413bc4..0000000000000000000000000000000000000000 |
--- a/core/src/fxcrt/fx_basic_util.cpp |
+++ /dev/null |
@@ -1,367 +0,0 @@ |
-// Copyright 2014 PDFium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
- |
-#include "core/include/fxcrt/fx_basic.h" |
-#include "core/include/fxcrt/fx_ext.h" |
- |
-#include <cctype> |
- |
-#if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_ |
-#include <dirent.h> |
-#include <sys/types.h> |
-#else |
-#include <direct.h> |
-#endif |
- |
-CFX_PrivateData::CFX_PrivateData() {} |
- |
-CFX_PrivateData::~CFX_PrivateData() { |
- ClearAll(); |
-} |
-void FX_PRIVATEDATA::FreeData() { |
- if (!m_pData) { |
- return; |
- } |
- if (m_bSelfDestruct) { |
- delete (CFX_DestructObject*)m_pData; |
- } else if (m_pCallback) { |
- m_pCallback(m_pData); |
- } |
-} |
-void CFX_PrivateData::AddData(void* pModuleId, |
- void* pData, |
- PD_CALLBACK_FREEDATA callback, |
- FX_BOOL bSelfDestruct) { |
- if (!pModuleId) { |
- return; |
- } |
- FX_PRIVATEDATA* pList = m_DataList.GetData(); |
- int count = m_DataList.GetSize(); |
- for (int i = 0; i < count; i++) { |
- if (pList[i].m_pModuleId == pModuleId) { |
- pList[i].FreeData(); |
- pList[i].m_pData = pData; |
- pList[i].m_pCallback = callback; |
- return; |
- } |
- } |
- FX_PRIVATEDATA data = {pModuleId, pData, callback, bSelfDestruct}; |
- m_DataList.Add(data); |
-} |
-void CFX_PrivateData::SetPrivateData(void* pModuleId, |
- void* pData, |
- PD_CALLBACK_FREEDATA callback) { |
- AddData(pModuleId, pData, callback, FALSE); |
-} |
-void CFX_PrivateData::SetPrivateObj(void* pModuleId, CFX_DestructObject* pObj) { |
- AddData(pModuleId, pObj, NULL, TRUE); |
-} |
-FX_BOOL CFX_PrivateData::RemovePrivateData(void* pModuleId) { |
- if (!pModuleId) { |
- return FALSE; |
- } |
- FX_PRIVATEDATA* pList = m_DataList.GetData(); |
- int count = m_DataList.GetSize(); |
- for (int i = 0; i < count; i++) { |
- if (pList[i].m_pModuleId == pModuleId) { |
- m_DataList.RemoveAt(i); |
- return TRUE; |
- } |
- } |
- return FALSE; |
-} |
-void* CFX_PrivateData::GetPrivateData(void* pModuleId) { |
- if (!pModuleId) { |
- return NULL; |
- } |
- FX_PRIVATEDATA* pList = m_DataList.GetData(); |
- int count = m_DataList.GetSize(); |
- for (int i = 0; i < count; i++) { |
- if (pList[i].m_pModuleId == pModuleId) { |
- return pList[i].m_pData; |
- } |
- } |
- return NULL; |
-} |
-void CFX_PrivateData::ClearAll() { |
- FX_PRIVATEDATA* pList = m_DataList.GetData(); |
- int count = m_DataList.GetSize(); |
- for (int i = 0; i < count; i++) { |
- pList[i].FreeData(); |
- } |
- m_DataList.RemoveAll(); |
-} |
-void FX_atonum(const CFX_ByteStringC& strc, FX_BOOL& bInteger, void* pData) { |
- if (!FXSYS_memchr(strc.GetPtr(), '.', strc.GetLength())) { |
- bInteger = TRUE; |
- int cc = 0, integer = 0; |
- const FX_CHAR* str = strc.GetCStr(); |
- int len = strc.GetLength(); |
- FX_BOOL bNegative = FALSE; |
- if (str[0] == '+') { |
- cc++; |
- } else if (str[0] == '-') { |
- bNegative = TRUE; |
- cc++; |
- } |
- while (cc < len && std::isdigit(str[cc])) { |
- // TODO(dsinclair): This is not the right way to handle overflow. |
- integer = integer * 10 + FXSYS_toDecimalDigit(str[cc]); |
- if (integer < 0) |
- break; |
- cc++; |
- } |
- if (bNegative) { |
- integer = -integer; |
- } |
- *(int*)pData = integer; |
- } else { |
- bInteger = FALSE; |
- *(FX_FLOAT*)pData = FX_atof(strc); |
- } |
-} |
-FX_FLOAT FX_atof(const CFX_ByteStringC& strc) { |
- if (strc.GetLength() == 0) { |
- return 0.0; |
- } |
- int cc = 0; |
- FX_BOOL bNegative = FALSE; |
- const FX_CHAR* str = strc.GetCStr(); |
- int len = strc.GetLength(); |
- if (str[0] == '+') { |
- cc++; |
- } else if (str[0] == '-') { |
- bNegative = TRUE; |
- cc++; |
- } |
- while (cc < len) { |
- if (str[cc] != '+' && str[cc] != '-') { |
- break; |
- } |
- cc++; |
- } |
- FX_FLOAT value = 0; |
- while (cc < len) { |
- if (str[cc] == '.') { |
- break; |
- } |
- value = value * 10 + FXSYS_toDecimalDigit(str[cc]); |
- cc++; |
- } |
- static const FX_FLOAT fraction_scales[] = { |
- 0.1f, 0.01f, 0.001f, 0.0001f, |
- 0.00001f, 0.000001f, 0.0000001f, 0.00000001f, |
- 0.000000001f, 0.0000000001f, 0.00000000001f}; |
- int scale = 0; |
- if (cc < len && str[cc] == '.') { |
- cc++; |
- while (cc < len) { |
- value += fraction_scales[scale] * FXSYS_toDecimalDigit(str[cc]); |
- scale++; |
- if (scale == sizeof fraction_scales / sizeof(FX_FLOAT)) { |
- break; |
- } |
- cc++; |
- } |
- } |
- return bNegative ? -value : value; |
-} |
- |
-#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ && _MSC_VER < 1900 |
-void FXSYS_snprintf(char* str, |
- size_t size, |
- _Printf_format_string_ const char* fmt, |
- ...) { |
- va_list ap; |
- va_start(ap, fmt); |
- FXSYS_vsnprintf(str, size, fmt, ap); |
- va_end(ap); |
-} |
-void FXSYS_vsnprintf(char* str, size_t size, const char* fmt, va_list ap) { |
- (void)_vsnprintf(str, size, fmt, ap); |
- if (size) { |
- str[size - 1] = 0; |
- } |
-} |
-#endif // _FXM_PLATFORM_WINDOWS_ && _MSC_VER < 1900 |
- |
-#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ |
-class CFindFileData { |
- public: |
- virtual ~CFindFileData() {} |
- HANDLE m_Handle; |
- FX_BOOL m_bEnd; |
-}; |
-class CFindFileDataA : public CFindFileData { |
- public: |
- virtual ~CFindFileDataA() {} |
- WIN32_FIND_DATAA m_FindData; |
-}; |
-class CFindFileDataW : public CFindFileData { |
- public: |
- virtual ~CFindFileDataW() {} |
- WIN32_FIND_DATAW m_FindData; |
-}; |
-#endif |
-void* FX_OpenFolder(const FX_CHAR* path) { |
-#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ |
-#ifndef _WIN32_WCE |
- CFindFileDataA* pData = new CFindFileDataA; |
- pData->m_Handle = |
- FindFirstFileExA(CFX_ByteString(path) + "/*.*", FindExInfoStandard, |
- &pData->m_FindData, FindExSearchNameMatch, NULL, 0); |
-#else |
- CFindFileDataW* pData = new CFindFileDataW; |
- pData->m_Handle = FindFirstFileW(CFX_WideString::FromLocal(path) + L"/*.*", |
- &pData->m_FindData); |
-#endif |
- if (pData->m_Handle == INVALID_HANDLE_VALUE) { |
- delete pData; |
- return NULL; |
- } |
- pData->m_bEnd = FALSE; |
- return pData; |
-#else |
- DIR* dir = opendir(path); |
- return dir; |
-#endif |
-} |
-void* FX_OpenFolder(const FX_WCHAR* path) { |
-#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ |
- CFindFileDataW* pData = new CFindFileDataW; |
- pData->m_Handle = FindFirstFileExW((CFX_WideString(path) + L"/*.*").c_str(), |
- FindExInfoStandard, &pData->m_FindData, |
- FindExSearchNameMatch, NULL, 0); |
- if (pData->m_Handle == INVALID_HANDLE_VALUE) { |
- delete pData; |
- return NULL; |
- } |
- pData->m_bEnd = FALSE; |
- return pData; |
-#else |
- DIR* dir = opendir(CFX_ByteString::FromUnicode(path)); |
- return dir; |
-#endif |
-} |
-FX_BOOL FX_GetNextFile(void* handle, |
- CFX_ByteString& filename, |
- FX_BOOL& bFolder) { |
- if (!handle) { |
- return FALSE; |
- } |
-#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ |
-#ifndef _WIN32_WCE |
- CFindFileDataA* pData = (CFindFileDataA*)handle; |
- if (pData->m_bEnd) { |
- return FALSE; |
- } |
- filename = pData->m_FindData.cFileName; |
- bFolder = pData->m_FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY; |
- if (!FindNextFileA(pData->m_Handle, &pData->m_FindData)) { |
- pData->m_bEnd = TRUE; |
- } |
- return TRUE; |
-#else |
- CFindFileDataW* pData = (CFindFileDataW*)handle; |
- if (pData->m_bEnd) { |
- return FALSE; |
- } |
- filename = CFX_ByteString::FromUnicode(pData->m_FindData.cFileName); |
- bFolder = pData->m_FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY; |
- if (!FindNextFileW(pData->m_Handle, &pData->m_FindData)) { |
- pData->m_bEnd = TRUE; |
- } |
- return TRUE; |
-#endif |
-#elif defined(__native_client__) |
- abort(); |
- return FALSE; |
-#else |
- struct dirent* de = readdir((DIR*)handle); |
- if (!de) { |
- return FALSE; |
- } |
- filename = de->d_name; |
- bFolder = de->d_type == DT_DIR; |
- return TRUE; |
-#endif |
-} |
-FX_BOOL FX_GetNextFile(void* handle, |
- CFX_WideString& filename, |
- FX_BOOL& bFolder) { |
- if (!handle) { |
- return FALSE; |
- } |
-#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ |
- CFindFileDataW* pData = (CFindFileDataW*)handle; |
- if (pData->m_bEnd) { |
- return FALSE; |
- } |
- filename = pData->m_FindData.cFileName; |
- bFolder = pData->m_FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY; |
- if (!FindNextFileW(pData->m_Handle, &pData->m_FindData)) { |
- pData->m_bEnd = TRUE; |
- } |
- return TRUE; |
-#elif defined(__native_client__) |
- abort(); |
- return FALSE; |
-#else |
- struct dirent* de = readdir((DIR*)handle); |
- if (!de) { |
- return FALSE; |
- } |
- filename = CFX_WideString::FromLocal(de->d_name); |
- bFolder = de->d_type == DT_DIR; |
- return TRUE; |
-#endif |
-} |
-void FX_CloseFolder(void* handle) { |
- if (!handle) { |
- return; |
- } |
-#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ |
- CFindFileData* pData = (CFindFileData*)handle; |
- FindClose(pData->m_Handle); |
- delete pData; |
-#else |
- closedir((DIR*)handle); |
-#endif |
-} |
-FX_WCHAR FX_GetFolderSeparator() { |
-#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ |
- return '\\'; |
-#else |
- return '/'; |
-#endif |
-} |
- |
-CFX_Matrix_3by3 CFX_Matrix_3by3::Inverse() { |
- FX_FLOAT det = |
- a * (e * i - f * h) - b * (i * d - f * g) + c * (d * h - e * g); |
- if (FXSYS_fabs(det) < 0.0000001) |
- return CFX_Matrix_3by3(); |
- |
- return CFX_Matrix_3by3( |
- (e * i - f * h) / det, -(b * i - c * h) / det, (b * f - c * e) / det, |
- -(d * i - f * g) / det, (a * i - c * g) / det, -(a * f - c * d) / det, |
- (d * h - e * g) / det, -(a * h - b * g) / det, (a * e - b * d) / det); |
-} |
- |
-CFX_Matrix_3by3 CFX_Matrix_3by3::Multiply(const CFX_Matrix_3by3& m) { |
- return CFX_Matrix_3by3( |
- a * m.a + b * m.d + c * m.g, a * m.b + b * m.e + c * m.h, |
- a * m.c + b * m.f + c * m.i, d * m.a + e * m.d + f * m.g, |
- d * m.b + e * m.e + f * m.h, d * m.c + e * m.f + f * m.i, |
- g * m.a + h * m.d + i * m.g, g * m.b + h * m.e + i * m.h, |
- g * m.c + h * m.f + i * m.i); |
-} |
- |
-CFX_Vector_3by1 CFX_Matrix_3by3::TransformVector(const CFX_Vector_3by1& v) { |
- return CFX_Vector_3by1(a * v.a + b * v.b + c * v.c, |
- d * v.a + e * v.b + f * v.c, |
- g * v.a + h * v.b + i * v.c); |
-} |