summaryrefslogtreecommitdiff
path: root/core/fxcrt/fx_basic_util.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/fxcrt/fx_basic_util.cpp')
-rw-r--r--core/fxcrt/fx_basic_util.cpp118
1 files changed, 0 insertions, 118 deletions
diff --git a/core/fxcrt/fx_basic_util.cpp b/core/fxcrt/fx_basic_util.cpp
index d8cf087b73..a636b6cb42 100644
--- a/core/fxcrt/fx_basic_util.cpp
+++ b/core/fxcrt/fx_basic_util.cpp
@@ -5,128 +5,10 @@
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
#include <algorithm>
-#include <cctype>
-#include <limits>
-#include <memory>
-#include "core/fxcrt/fx_extension.h"
#include "core/fxcrt/fx_stream.h"
-#include "core/fxcrt/fx_system.h"
#include "third_party/base/ptr_util.h"
-namespace {
-
-const 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};
-
-float FractionalScale(size_t scale_factor, int value) {
- return fraction_scales[scale_factor] * value;
-}
-
-} // namespace
-
-bool FX_atonum(const CFX_ByteStringC& strc, void* pData) {
- if (strc.Contains('.')) {
- float* pFloat = static_cast<float*>(pData);
- *pFloat = FX_atof(strc);
- return false;
- }
-
- // Note, numbers in PDF are typically of the form 123, -123, etc. But,
- // for things like the Permissions on the encryption hash the number is
- // actually an unsigned value. We use a uint32_t so we can deal with the
- // unsigned and then check for overflow if the user actually signed the value.
- // The Permissions flag is listed in Table 3.20 PDF 1.7 spec.
- pdfium::base::CheckedNumeric<uint32_t> integer = 0;
- bool bNegative = false;
- bool bSigned = false;
- FX_STRSIZE cc = 0;
- if (strc[0] == '+') {
- cc++;
- bSigned = true;
- } else if (strc[0] == '-') {
- bNegative = true;
- bSigned = true;
- cc++;
- }
-
- while (cc < strc.GetLength() && std::isdigit(strc[cc])) {
- integer = integer * 10 + FXSYS_DecimalCharToInt(strc.CharAt(cc));
- if (!integer.IsValid())
- break;
- cc++;
- }
-
- // We have a sign, and the value was greater then a regular integer
- // we've overflowed, reset to the default value.
- if (bSigned) {
- if (bNegative) {
- if (integer.ValueOrDefault(0) >
- static_cast<uint32_t>(std::numeric_limits<int>::max()) + 1) {
- integer = 0;
- }
- } else if (integer.ValueOrDefault(0) >
- static_cast<uint32_t>(std::numeric_limits<int>::max())) {
- integer = 0;
- }
- }
-
- // Switch back to the int space so we can flip to a negative if we need.
- uint32_t uValue = integer.ValueOrDefault(0);
- int32_t value = static_cast<int>(uValue);
- if (bNegative)
- value = -value;
-
- int* pInt = static_cast<int*>(pData);
- *pInt = value;
- return true;
-}
-
-float FX_atof(const CFX_ByteStringC& strc) {
- if (strc.IsEmpty())
- return 0.0;
-
- int cc = 0;
- bool bNegative = false;
- int len = strc.GetLength();
- if (strc[0] == '+') {
- cc++;
- } else if (strc[0] == '-') {
- bNegative = true;
- cc++;
- }
- while (cc < len) {
- if (strc[cc] != '+' && strc[cc] != '-')
- break;
- cc++;
- }
- float value = 0;
- while (cc < len) {
- if (strc[cc] == '.')
- break;
- value = value * 10 + FXSYS_DecimalCharToInt(strc.CharAt(cc));
- cc++;
- }
- int scale = 0;
- if (cc < len && strc[cc] == '.') {
- cc++;
- while (cc < len) {
- value += FractionalScale(scale, FXSYS_DecimalCharToInt(strc.CharAt(cc)));
- scale++;
- if (scale == FX_ArraySize(fraction_scales))
- break;
- cc++;
- }
- }
- return bNegative ? -value : value;
-}
-
-float FX_atof(const CFX_WideStringC& wsStr) {
- return FX_atof(FX_UTF8Encode(wsStr).c_str());
-}
-
FX_FileHandle* FX_OpenFolder(const char* path) {
#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
auto pData = pdfium::MakeUnique<CFindFileDataA>();