diff options
author | Artem Strygin <art-snake@yandex-team.ru> | 2018-06-29 12:56:29 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2018-06-29 12:56:29 +0000 |
commit | c4642d4ffe8e6d315663119b5317d3a889e59f1a (patch) | |
tree | 3d7d5a98c91c1ced90da0b73ac6fa61b3434cc8b /core/fpdfapi/parser/cpdf_hint_tables.h | |
parent | 20c3677acc37c959034d6111c0cab2e681b13717 (diff) | |
download | pdfium-c4642d4ffe8e6d315663119b5317d3a889e59f1a.tar.xz |
Implement CPDF_HintsTable::PageInfo.
Merge page info data from Hints Table into CPDF_HintsTable::PageInfo class.
Change-Id: I468996346ee153e3fa8ada6a83770614362d1b92
Reviewed-on: https://pdfium-review.googlesource.com/15813
Commit-Queue: Art Snake <art-snake@yandex-team.ru>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Diffstat (limited to 'core/fpdfapi/parser/cpdf_hint_tables.h')
-rw-r--r-- | core/fpdfapi/parser/cpdf_hint_tables.h | 48 |
1 files changed, 44 insertions, 4 deletions
diff --git a/core/fpdfapi/parser/cpdf_hint_tables.h b/core/fpdfapi/parser/cpdf_hint_tables.h index c51d95a255..0db190b189 100644 --- a/core/fpdfapi/parser/cpdf_hint_tables.h +++ b/core/fpdfapi/parser/cpdf_hint_tables.h @@ -20,6 +20,46 @@ class CPDF_ReadValidator; class CPDF_HintTables { public: + class PageInfo { + public: + PageInfo(); + ~PageInfo(); + + void set_objects_count(uint32_t objects_count) { + m_nObjectsCount = objects_count; + } + uint32_t objects_count() const { return m_nObjectsCount; } + + void set_page_offset(FX_FILESIZE offset) { m_szOffset = offset; } + FX_FILESIZE page_offset() const { return m_szOffset; } + + void set_page_length(uint32_t length) { m_dwLength = length; } + uint32_t page_length() const { return m_dwLength; } + + void set_start_obj_num(uint32_t start_obj_num) { + m_dwStartObjNum = start_obj_num; + } + uint32_t start_obj_num() const { return m_dwStartObjNum; } + + void AddIdentifier(uint32_t Identifier) { + m_dwIdentifierArray.push_back(Identifier); + } + + const std::vector<uint32_t>& Identifiers() const { + return m_dwIdentifierArray; + } + + private: + uint32_t m_nObjectsCount = 0; + FX_FILESIZE m_szOffset = 0; + uint32_t m_dwLength = 0; + uint32_t m_dwStartObjNum = 0; + std::vector<uint32_t> m_dwIdentifierArray; + + PageInfo(const PageInfo& other) = delete; + PageInfo& operator=(const PageInfo&) = delete; + }; + CPDF_HintTables(CPDF_ReadValidator* pValidator, CPDF_LinearizedHeader* pLinearized); virtual ~CPDF_HintTables(); @@ -33,6 +73,8 @@ class CPDF_HintTables { bool LoadHintStream(CPDF_Stream* pHintStream); + const std::vector<PageInfo>& PageInfos() const { return m_PageInfos; } + protected: bool ReadPageHintTable(CFX_BitStream* hStream); bool ReadSharedObjHintTable(CFX_BitStream* hStream, uint32_t offset); @@ -51,11 +93,9 @@ class CPDF_HintTables { uint32_t m_nFirstPageSharedObjs; FX_FILESIZE m_szFirstPageObjOffset; - std::vector<uint32_t> m_dwDeltaNObjsArray; - std::vector<uint32_t> m_dwNSharedObjsArray; + + std::vector<PageInfo> m_PageInfos; std::vector<uint32_t> m_dwSharedObjNumArray; - std::vector<uint32_t> m_dwIdentifierArray; - std::vector<FX_FILESIZE> m_szPageOffsetArray; std::vector<FX_FILESIZE> m_szSharedObjOffsetArray; }; |