1 // Copyright 2016 PDFium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 7 #ifndef CORE_FPDFAPI_PARSER_CPDF_STREAM_ACC_H_ 8 #define CORE_FPDFAPI_PARSER_CPDF_STREAM_ACC_H_ 9 10 #include <memory> 11 12 #include "core/fpdfapi/parser/cpdf_dictionary.h" 13 #include "core/fpdfapi/parser/cpdf_stream.h" 14 #include "core/fxcrt/fx_string.h" 15 #include "core/fxcrt/fx_system.h" 16 17 class CPDF_StreamAcc { 18 public: 19 CPDF_StreamAcc(); 20 ~CPDF_StreamAcc(); 21 22 CPDF_StreamAcc(const CPDF_StreamAcc&) = delete; 23 CPDF_StreamAcc& operator=(const CPDF_StreamAcc&) = delete; 24 25 void LoadAllData(const CPDF_Stream* pStream, 26 bool bRawAccess = false, 27 uint32_t estimated_size = 0, 28 bool bImageAcc = false); 29 30 const CPDF_Stream* GetStream() const { return m_pStream; } 31 CPDF_Dictionary* GetDict() const { 32 return m_pStream ? m_pStream->GetDict() : nullptr; 33 } 34 35 const uint8_t* GetData() const; 36 uint32_t GetSize() const; 37 const CFX_ByteString& GetImageDecoder() const { return m_ImageDecoder; } 38 const CPDF_Dictionary* GetImageParam() const { return m_pImageParam; } 39 std::unique_ptr<uint8_t, FxFreeDeleter> DetachData(); 40 41 protected: 42 uint8_t* m_pData; 43 uint32_t m_dwSize; 44 bool m_bNewBuf; 45 CFX_ByteString m_ImageDecoder; 46 CPDF_Dictionary* m_pImageParam; 47 const CPDF_Stream* m_pStream; 48 uint8_t* m_pSrcData; 49 }; 50 51 #endif // CORE_FPDFAPI_PARSER_CPDF_STREAM_ACC_H_ 52