summaryrefslogtreecommitdiff
path: root/core/fpdfapi/parser/cpdf_parser.h
diff options
context:
space:
mode:
authorArtem Strygin <art-snake@yandex-team.ru>2018-06-26 16:01:38 +0000
committerChromium commit bot <commit-bot@chromium.org>2018-06-26 16:01:38 +0000
commite3d3ce04e585c4a6c5596056bdf1ced639c763d7 (patch)
tree55ba6fde26546f818d8ffadc879087ada34502ab /core/fpdfapi/parser/cpdf_parser.h
parent08b6819660a69cdc83bd133d1074da5813d9e414 (diff)
downloadpdfium-e3d3ce04e585c4a6c5596056bdf1ced639c763d7.tar.xz
Implement CPDF_ObjStream.
It is allow do not store raw objects streams within CPDF_Document for reduce memory usage. Change-Id: I4377bd5119d87314e76f14255171618cf6ee533d Reviewed-on: https://pdfium-review.googlesource.com/35430 Reviewed-by: dsinclair <dsinclair@chromium.org> Reviewed-by: Tom Sepez <tsepez@chromium.org> Commit-Queue: Art Snake <art-snake@yandex-team.ru>
Diffstat (limited to 'core/fpdfapi/parser/cpdf_parser.h')
-rw-r--r--core/fpdfapi/parser/cpdf_parser.h15
1 files changed, 4 insertions, 11 deletions
diff --git a/core/fpdfapi/parser/cpdf_parser.h b/core/fpdfapi/parser/cpdf_parser.h
index 5f0a4a1cf3..705fad9bdb 100644
--- a/core/fpdfapi/parser/cpdf_parser.h
+++ b/core/fpdfapi/parser/cpdf_parser.h
@@ -26,9 +26,9 @@ class CPDF_Document;
class CPDF_IndirectObjectHolder;
class CPDF_LinearizedHeader;
class CPDF_Object;
+class CPDF_ObjectStream;
class CPDF_ReadValidator;
class CPDF_SecurityHandler;
-class CPDF_StreamAcc;
class CPDF_SyntaxParser;
class IFX_SeekableReadStream;
@@ -172,7 +172,8 @@ class CPDF_Parser {
bool LoadLinearizedAllCrossRefV4(FX_FILESIZE pos);
bool LoadLinearizedAllCrossRefV5(FX_FILESIZE pos);
Error LoadLinearizedMainXRefTable();
- RetainPtr<CPDF_StreamAcc> GetObjectStream(uint32_t number);
+ const CPDF_ObjectStream* GetObjectStream(CPDF_IndirectObjectHolder* pObjList,
+ uint32_t object_number);
std::unique_ptr<CPDF_LinearizedHeader> ParseLinearizedHeader();
void SetEncryptDictionary(CPDF_Dictionary* pDict);
void ShrinkObjectMap(uint32_t size);
@@ -218,15 +219,7 @@ class CPDF_Parser {
std::unique_ptr<CPDF_LinearizedHeader> m_pLinearized;
// A map of object numbers to indirect streams.
- std::map<uint32_t, RetainPtr<CPDF_StreamAcc>> m_ObjectStreamMap;
-
- // Mapping of object numbers to offsets. The offsets are relative to the first
- // object in the stream.
- using StreamObjectCache = std::map<uint32_t, uint32_t>;
-
- // Mapping of streams to their object caches. This is valid as long as the
- // streams in |m_ObjectStreamMap| are valid.
- std::map<RetainPtr<CPDF_StreamAcc>, StreamObjectCache> m_ObjCache;
+ std::map<uint32_t, std::unique_ptr<CPDF_ObjectStream>> m_ObjectStreamMap;
// All indirect object numbers that are being parsed.
std::set<uint32_t> m_ParsingObjNums;