1 // Copyright 2016 The PDFium Authors 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_PAGE_CPDF_TRANSFERFUNCDIB_H_ 8 #define CORE_FPDFAPI_PAGE_CPDF_TRANSFERFUNCDIB_H_ 9 10 #include <stdint.h> 11 12 #include "core/fxcrt/data_vector.h" 13 #include "core/fxcrt/raw_span.h" 14 #include "core/fxcrt/retain_ptr.h" 15 #include "core/fxcrt/span.h" 16 #include "core/fxge/dib/cfx_dibbase.h" 17 18 class CPDF_TransferFunc; 19 20 class CPDF_TransferFuncDIB final : public CFX_DIBBase { 21 public: 22 CONSTRUCT_VIA_MAKE_RETAIN; 23 24 // CFX_DIBBase: 25 pdfium::span<const uint8_t> GetScanline(int line) const override; 26 27 private: 28 CPDF_TransferFuncDIB(RetainPtr<const CFX_DIBBase> src, 29 RetainPtr<CPDF_TransferFunc> transfer_func); 30 ~CPDF_TransferFuncDIB() override; 31 32 void TranslateScanline(pdfium::span<const uint8_t> src_span) const; 33 FXDIB_Format GetDestFormat() const; 34 35 RetainPtr<const CFX_DIBBase> const src_; 36 RetainPtr<CPDF_TransferFunc> const transfer_func_; 37 const pdfium::raw_span<const uint8_t> r_samples_; 38 const pdfium::raw_span<const uint8_t> g_samples_; 39 const pdfium::raw_span<const uint8_t> b_samples_; 40 mutable DataVector<uint8_t> scanline_; 41 }; 42 43 #endif // CORE_FPDFAPI_PAGE_CPDF_TRANSFERFUNCDIB_H_ 44