diff options
author | Artem Strygin <art-snake@yandex-team.ru> | 2018-06-26 16:01:38 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2018-06-26 16:01:38 +0000 |
commit | e3d3ce04e585c4a6c5596056bdf1ced639c763d7 (patch) | |
tree | 55ba6fde26546f818d8ffadc879087ada34502ab /core/fpdfapi/parser/cpdf_parser.h | |
parent | 08b6819660a69cdc83bd133d1074da5813d9e414 (diff) | |
download | pdfium-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.h | 15 |
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; |