Chromium Code Reviews| Index: core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp |
| diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp |
| index 3f9f4ccc8285e709ad79fc4b9a15826621f3efca..5a66d11c9198bd67cbdc7cf3ad0dbf4576fd3698 100644 |
| --- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp |
| +++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp |
| @@ -39,31 +39,12 @@ void CPDF_Object::Destroy() |
| delete this; |
| } |
| } |
| + |
| CFX_ByteString CPDF_Object::GetString() const |
| { |
| - switch (m_Type) { |
| - case PDFOBJ_BOOLEAN: |
| - return ((CPDF_Boolean*)this)->m_bValue ? "true" : "false"; |
| - case PDFOBJ_NUMBER: |
| - return ((CPDF_Number*)this)->GetString(); |
| - case PDFOBJ_STRING: |
| - return ((CPDF_String*)this)->m_String; |
| - case PDFOBJ_NAME: |
| - return ((CPDF_Name*)this)->m_Name; |
| - case PDFOBJ_REFERENCE: { |
| - CPDF_Reference* pRef = (CPDF_Reference*)(void*)this; |
| - if (pRef->m_pObjList == NULL) { |
| - break; |
| - } |
| - CPDF_Object* pObj = pRef->m_pObjList->GetIndirectObject(pRef->m_RefObjNum); |
| - if (pObj == NULL) { |
| - return CFX_ByteString(); |
| - } |
| - return pObj->GetString(); |
| - } |
| - } |
| return CFX_ByteString(); |
| } |
| + |
| CFX_ByteStringC CPDF_Object::GetConstString() const |
| { |
| switch (m_Type) { |
| @@ -341,6 +322,11 @@ void CPDF_Object::SetUnicodeText(const FX_WCHAR* pUnicodes, int len) |
| } |
| } |
| +CFX_ByteString CPDF_Boolean::GetString() const |
| +{ |
| + return m_bValue ? "true" : "false"; |
| +} |
| + |
| CPDF_Number::CPDF_Number(int value) |
| : CPDF_Object(PDFOBJ_NUMBER), m_bInteger(TRUE), m_Integer(value) { |
| } |
| @@ -377,6 +363,17 @@ void CPDF_Number::SetNumber(FX_FLOAT value) |
| CPDF_String::CPDF_String(const CFX_WideString& str) : CPDF_Object(PDFOBJ_STRING), m_bHex(FALSE) { |
| m_String = PDF_EncodeText(str); |
| } |
| + |
| +CFX_ByteString CPDF_String::GetString() const |
| +{ |
| + return m_String; |
| +} |
| + |
| +CFX_ByteString CPDF_Name::GetString() const |
| +{ |
| + return m_Name; |
| +} |
| + |
| CPDF_Array::~CPDF_Array() |
| { |
| int size = m_Objects.GetSize(); |
| @@ -421,14 +418,13 @@ CPDF_Object* CPDF_Array::GetElementValue(FX_DWORD i) const |
| } |
| return ((CPDF_Object*)m_Objects.GetAt(i))->GetDirect(); |
|
Tom Sepez
2015/07/16 20:24:46
Given that m_Objects is of type CFX_PtrArray, and
|
| } |
| -CFX_ByteString CPDF_Array::GetString(FX_DWORD i) const |
| +CFX_ByteString CPDF_Array::GetStringAt(FX_DWORD i) const |
| { |
| if (i < (FX_DWORD)m_Objects.GetSize()) { |
| CPDF_Object* p = (CPDF_Object*)m_Objects.GetAt(i); |
|
Tom Sepez
2015/07/16 20:24:46
nit: I'd really like this block to be a one-liner,
|
| return p->GetString(); |
| } |
| - else |
| - return CFX_ByteString(); |
| + return CFX_ByteString(); |
| } |
| CFX_ByteStringC CPDF_Array::GetConstString(FX_DWORD i) const |
| { |
| @@ -436,8 +432,7 @@ CFX_ByteStringC CPDF_Array::GetConstString(FX_DWORD i) const |
| CPDF_Object* p = (CPDF_Object*)m_Objects.GetAt(i); |
| return p->GetConstString(); |
| } |
| - else |
| - return CFX_ByteStringC(); |
| + return CFX_ByteStringC(); |
| } |
| int CPDF_Array::GetInteger(FX_DWORD i) const |
| { |
| @@ -566,6 +561,7 @@ FX_BOOL CPDF_Array::Identical(CPDF_Array* pOther) const |
| } |
| return TRUE; |
| } |
| + |
| CPDF_Dictionary::~CPDF_Dictionary() |
| { |
| FX_POSITION pos = m_Map.GetStartPosition(); |
| @@ -600,7 +596,7 @@ CPDF_Object* CPDF_Dictionary::GetElementValue(const CFX_ByteStringC& key) const |
| m_Map.Lookup(key, (void*&)p); |
| return p ? p->GetDirect() : NULL; |
| } |
| -CFX_ByteString CPDF_Dictionary::GetString(const CFX_ByteStringC& key) const |
| +CFX_ByteString CPDF_Dictionary::GetStringAt(const CFX_ByteStringC& key) const |
| { |
| CPDF_Object* p = NULL; |
| m_Map.Lookup(key, (void*&)p); |
| @@ -634,7 +630,8 @@ CFX_WideString CPDF_Dictionary::GetUnicodeText(const CFX_ByteStringC& key, CFX_C |
| } |
| return CFX_WideString(); |
| } |
| -CFX_ByteString CPDF_Dictionary::GetString(const CFX_ByteStringC& key, const CFX_ByteStringC& def) const |
| +CFX_ByteString CPDF_Dictionary::GetStringAt(const CFX_ByteStringC& key, |
| + const CFX_ByteStringC& def) const |
| { |
| CPDF_Object* p = NULL; |
| m_Map.Lookup(key, (void*&)p); |
| @@ -857,6 +854,7 @@ void CPDF_Dictionary::SetAtMatrix(const CFX_ByteStringC& key, const CFX_AffineMa |
| pArray->AddNumber(matrix.f); |
| SetAt(key, pArray); |
| } |
| + |
| CPDF_Stream::CPDF_Stream(uint8_t* pData, FX_DWORD size, CPDF_Dictionary* pDict) |
| : CPDF_Object(PDFOBJ_STREAM) { |
| m_pDict = pDict; |
| @@ -1127,6 +1125,7 @@ void CPDF_StreamAcc::LoadAllData(const CPDF_Stream* pStream, FX_BOOL bRawAccess, |
| m_pSrcData = NULL; |
| m_bNewBuf = m_pData != pStream->m_pDataBuf; |
| } |
| + |
| CPDF_StreamAcc::~CPDF_StreamAcc() |
| { |
| if (m_bNewBuf && m_pData) { |
| @@ -1173,6 +1172,17 @@ void CPDF_Reference::SetRef(CPDF_IndirectObjects* pDoc, FX_DWORD objnum) |
| m_pObjList = pDoc; |
| m_RefObjNum = objnum; |
| } |
| + |
| +CFX_ByteString CPDF_Reference::GetString() const |
| +{ |
| + if (m_pObjList) { |
| + CPDF_Object* pObj = m_pObjList->GetIndirectObject(m_RefObjNum); |
| + if (pObj) |
| + return pObj->GetString(); |
| + } |
| + return CFX_ByteString(); |
| +} |
| + |
| CPDF_IndirectObjects::CPDF_IndirectObjects(CPDF_Parser* pParser) |
| { |
| m_pParser = pParser; |