14d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Copyright 2016 PDFium Authors. All rights reserved. 24d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Use of this source code is governed by a BSD-style license that can be 34d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// found in the LICENSE file. 44d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 54d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 64d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 74d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fpdfapi/parser/cpdf_string.h" 84d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 94d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include <utility> 104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fpdfapi/parser/fpdf_parser_decode.h" 124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "third_party/base/ptr_util.h" 134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCPDF_String::CPDF_String() : m_bHex(false) {} 154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCPDF_String::CPDF_String(CFX_WeakPtr<CFX_ByteStringPool> pPool, 174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_ByteString& str, 184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bHex) 194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann : m_String(str), m_bHex(bHex) { 204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pPool) 214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_String = pPool->Intern(m_String); 224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCPDF_String::CPDF_String(CFX_WeakPtr<CFX_ByteStringPool> pPool, 254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_WideString& str) 264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann : m_String(PDF_EncodeText(str)), m_bHex(false) { 274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pPool) 284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_String = pPool->Intern(m_String); 294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCPDF_String::~CPDF_String() {} 324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCPDF_Object::Type CPDF_String::GetType() const { 344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return STRING; 354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannstd::unique_ptr<CPDF_Object> CPDF_String::Clone() const { 384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann auto pRet = pdfium::MakeUnique<CPDF_String>(); 394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRet->m_String = m_String; 404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pRet->m_bHex = m_bHex; 414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return std::move(pRet); 424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCFX_ByteString CPDF_String::GetString() const { 454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_String; 464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CPDF_String::SetString(const CFX_ByteString& str) { 494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_String = str; 504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CPDF_String::IsString() const { 534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCPDF_String* CPDF_String::AsString() { 574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return this; 584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannconst CPDF_String* CPDF_String::AsString() const { 614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return this; 624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCFX_WideString CPDF_String::GetUnicodeText() const { 654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return PDF_DecodeText(m_String); 664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 67