Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
cpdf_number.cpp
Go to the documentation of this file.
1// Copyright 2016 The PDFium Authors
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
7#include "core/fpdfapi/parser/cpdf_number.h"
8
9#include <sstream>
10
11#include "core/fpdfapi/edit/cpdf_contentstream_write_utils.h"
12#include "core/fxcrt/fx_stream.h"
13#include "core/fxcrt/fx_string_wrappers.h"
14
15namespace {
16
17ByteString FloatToString(float value) {
18 fxcrt::ostringstream sstream;
19 WriteFloat(sstream, value);
20 return ByteString(sstream);
21}
22
23} // namespace
24
25CPDF_Number::CPDF_Number() = default;
26
27CPDF_Number::CPDF_Number(int value) : number_(value) {}
28
29CPDF_Number::CPDF_Number(float value) : number_(value) {}
30
31CPDF_Number::CPDF_Number(ByteStringView str) : number_(str) {}
32
33CPDF_Number::~CPDF_Number() = default;
34
35CPDF_Object::Type CPDF_Number::GetType() const {
36 return kNumber;
37}
38
39RetainPtr<CPDF_Object> CPDF_Number::Clone() const {
40 return number_.IsInteger()
41 ? pdfium::MakeRetain<CPDF_Number>(number_.GetSigned())
42 : pdfium::MakeRetain<CPDF_Number>(number_.GetFloat());
43}
44
45float CPDF_Number::GetNumber() const {
46 return number_.GetFloat();
47}
48
49int CPDF_Number::GetInteger() const {
50 return number_.GetSigned();
51}
52
53CPDF_Number* CPDF_Number::AsMutableNumber() {
54 return this;
55}
56
57void CPDF_Number::SetString(const ByteString& str) {
58 number_ = FX_Number(str.AsStringView());
59}
60
61ByteString CPDF_Number::GetString() const {
62 return number_.IsInteger() ? ByteString::FormatInteger(number_.GetSigned())
63 : FloatToString(GetNumber());
64}
65
66bool CPDF_Number::WriteTo(IFX_ArchiveStream* archive,
67 const CPDF_Encryptor* encryptor) const {
68 return archive->WriteString(" ") &&
69 archive->WriteString(GetString().AsStringView());
70}
fxcrt::ByteString ByteString
Definition bytestring.h:180
bool WriteTo(IFX_ArchiveStream *archive, const CPDF_Encryptor *encryptor) const override
float GetNumber() const override
int GetInteger() const override
RetainPtr< CPDF_Object > Clone() const override
void SetString(const ByteString &str) override
~CPDF_Number() override
ByteString GetString() const override
CPDF_Number * AsMutableNumber() override
Type GetType() const override
bool WriteString(ByteStringView str)
Definition fx_stream.cpp:46
fxcrt::ByteStringView ByteStringView