| // Copyright 2017 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_FXGE_DIB_CFX_FILTEREDDIB_H_ |
| #define CORE_FXGE_DIB_CFX_FILTEREDDIB_H_ |
| |
| #include <vector> |
| |
| #include "core/fxcrt/cfx_retain_ptr.h" |
| #include "core/fxge/dib/cfx_dibsource.h" |
| |
| class CFX_FilteredDIB : public CFX_DIBSource { |
| public: |
| template <typename T, typename... Args> |
| friend CFX_RetainPtr<T> pdfium::MakeRetain(Args&&... args); |
| |
| ~CFX_FilteredDIB() override; |
| |
| virtual FXDIB_Format GetDestFormat() = 0; |
| virtual uint32_t* GetDestPalette() = 0; |
| virtual void TranslateScanline(const uint8_t* src_buf, |
| std::vector<uint8_t>* dest_buf) const = 0; |
| virtual void TranslateDownSamples(uint8_t* dest_buf, |
| const uint8_t* src_buf, |
| int pixels, |
| int Bpp) const = 0; |
| |
| void LoadSrc(const CFX_RetainPtr<CFX_DIBSource>& pSrc); |
| |
| protected: |
| CFX_FilteredDIB(); |
| |
| // CFX_DIBSource |
| const uint8_t* GetScanline(int line) const override; |
| void DownSampleScanline(int line, |
| uint8_t* dest_scan, |
| int dest_bpp, |
| int dest_width, |
| bool bFlipX, |
| int clip_left, |
| int clip_width) const override; |
| |
| CFX_RetainPtr<CFX_DIBSource> m_pSrc; |
| mutable std::vector<uint8_t> m_Scanline; |
| }; |
| |
| #endif // CORE_FXGE_DIB_CFX_FILTEREDDIB_H_ |