Home | History | Annotate | Download | only in parser
      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