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_string.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_string.h"
8
9#include <stdint.h>
10
11#include <utility>
12
13#include "core/fpdfapi/parser/cpdf_encryptor.h"
14#include "core/fpdfapi/parser/fpdf_parser_decode.h"
15#include "core/fxcrt/data_vector.h"
16#include "core/fxcrt/fx_stream.h"
17
18CPDF_String::CPDF_String() = default;
19
20CPDF_String::CPDF_String(WeakPtr<ByteStringPool> pPool,
21 const ByteString& str,
22 bool bHex)
23 : m_String(str), m_bHex(bHex) {
24 if (pPool)
25 m_String = pPool->Intern(m_String);
26}
27
28CPDF_String::CPDF_String(WeakPtr<ByteStringPool> pPool, WideStringView str)
29 : m_String(PDF_EncodeText(str)) {
30 if (pPool)
31 m_String = pPool->Intern(m_String);
32}
33
34CPDF_String::~CPDF_String() = default;
35
36CPDF_Object::Type CPDF_String::GetType() const {
37 return kString;
38}
39
40RetainPtr<CPDF_Object> CPDF_String::Clone() const {
41 auto pRet = pdfium::MakeRetain<CPDF_String>();
42 pRet->m_String = m_String;
43 pRet->m_bHex = m_bHex;
44 return pRet;
45}
46
47ByteString CPDF_String::GetString() const {
48 return m_String;
49}
50
51void CPDF_String::SetString(const ByteString& str) {
52 m_String = str;
53}
54
55CPDF_String* CPDF_String::AsMutableString() {
56 return this;
57}
58
59WideString CPDF_String::GetUnicodeText() const {
60 return PDF_DecodeText(m_String.raw_span());
61}
62
63bool CPDF_String::WriteTo(IFX_ArchiveStream* archive,
64 const CPDF_Encryptor* encryptor) const {
65 DataVector<uint8_t> encrypted_data;
66 pdfium::span<const uint8_t> data = m_String.raw_span();
67 if (encryptor) {
68 encrypted_data = encryptor->Encrypt(data);
69 data = encrypted_data;
70 }
71 ByteStringView raw(data);
72 ByteString content =
73 m_bHex ? PDF_HexEncodeString(raw) : PDF_EncodeString(raw);
74 return archive->WriteString(content.AsStringView());
75}
76
77ByteString CPDF_String::EncodeString() const {
78 return m_bHex ? PDF_HexEncodeString(m_String.AsStringView())
79 : PDF_EncodeString(m_String.AsStringView());
80}
void SetString(const ByteString &str) override
~CPDF_String() override
CPDF_String * AsMutableString() override
Type GetType() const override
bool WriteTo(IFX_ArchiveStream *archive, const CPDF_Encryptor *encryptor) const override
ByteString EncodeString() const
RetainPtr< CPDF_Object > Clone() const override
WideString GetUnicodeText() const override
ByteString GetString() const override
bool WriteString(ByteStringView str)
Definition fx_stream.cpp:47