• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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