| // Copyright 2016 PDFium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| |
| #ifndef CORE_FPDFAPI_FPDF_PAGE_INCLUDE_CPDF_IMAGE_H_ |
| #define CORE_FPDFAPI_FPDF_PAGE_INCLUDE_CPDF_IMAGE_H_ |
| |
| #include "core/fpdfapi/fpdf_parser/include/cpdf_stream.h" |
| #include "core/fxcrt/include/fx_system.h" |
| |
| #define PDF_IMAGE_NO_COMPRESS 0x0000 |
| #define PDF_IMAGE_LOSSY_COMPRESS 0x0001 |
| #define PDF_IMAGE_LOSSLESS_COMPRESS 0x0002 |
| #define PDF_IMAGE_MASK_LOSSY_COMPRESS 0x0004 |
| #define PDF_IMAGE_MASK_LOSSLESS_COMPRESS 0x0008 |
| |
| class CFX_DIBitmap; |
| class CFX_DIBSource; |
| class CPDF_Dictionay; |
| class CPDF_Document; |
| class CPDF_Page; |
| class IFX_FileRead; |
| class IFX_FileWrite; |
| class IFX_Pause; |
| |
| class CPDF_Image { |
| public: |
| explicit CPDF_Image(CPDF_Document* pDoc); |
| ~CPDF_Image(); |
| |
| FX_BOOL LoadImageF(CPDF_Stream* pImageStream, FX_BOOL bInline); |
| |
| void Release(); |
| |
| CPDF_Image* Clone(); |
| |
| CPDF_Dictionary* GetInlineDict() const { return m_pInlineDict; } |
| CPDF_Stream* GetStream() const { return m_pStream; } |
| CPDF_Dictionary* GetDict() const { |
| return m_pStream ? m_pStream->GetDict() : NULL; |
| } |
| CPDF_Dictionary* GetOC() const { return m_pOC; } |
| CPDF_Document* GetDocument() const { return m_pDocument; } |
| |
| int32_t GetPixelHeight() const { return m_Height; } |
| int32_t GetPixelWidth() const { return m_Width; } |
| |
| FX_BOOL IsInline() { return m_bInline; } |
| FX_BOOL IsMask() const { return m_bIsMask; } |
| FX_BOOL IsInterpol() const { return m_bInterpolate; } |
| |
| CFX_DIBSource* LoadDIBSource(CFX_DIBSource** ppMask = NULL, |
| uint32_t* pMatteColor = NULL, |
| FX_BOOL bStdCS = FALSE, |
| uint32_t GroupFamily = 0, |
| FX_BOOL bLoadMask = FALSE) const; |
| |
| void SetInlineDict(CPDF_Dictionary* pDict) { m_pInlineDict = pDict; } |
| void SetImage(const CFX_DIBitmap* pDIBitmap, int32_t iCompress); |
| void SetJpegImage(uint8_t* pImageData, uint32_t size); |
| void SetJpegImage(IFX_FileRead* pFile); |
| |
| void ResetCache(CPDF_Page* pPage, const CFX_DIBitmap* pDIBitmap); |
| |
| FX_BOOL StartLoadDIBSource(CPDF_Dictionary* pFormResource, |
| CPDF_Dictionary* pPageResource, |
| FX_BOOL bStdCS = FALSE, |
| uint32_t GroupFamily = 0, |
| FX_BOOL bLoadMask = FALSE); |
| FX_BOOL Continue(IFX_Pause* pPause); |
| CFX_DIBSource* DetachBitmap(); |
| CFX_DIBSource* DetachMask(); |
| |
| CFX_DIBSource* m_pDIBSource; |
| CFX_DIBSource* m_pMask; |
| uint32_t m_MatteColor; |
| |
| private: |
| CPDF_Dictionary* InitJPEG(uint8_t* pData, uint32_t size); |
| |
| CPDF_Stream* m_pStream; |
| FX_BOOL m_bInline; |
| CPDF_Dictionary* m_pInlineDict; |
| int32_t m_Height; |
| int32_t m_Width; |
| FX_BOOL m_bIsMask; |
| FX_BOOL m_bInterpolate; |
| CPDF_Document* m_pDocument; |
| CPDF_Dictionary* m_pOC; |
| }; |
| |
| #endif // CORE_FPDFAPI_FPDF_PAGE_INCLUDE_CPDF_IMAGE_H_ |