xref: /aosp_15_r20/external/pdfium/core/fpdfapi/page/cpdf_sampledfunc.h (revision 3ac0a46f773bac49fa9476ec2b1cf3f8da5ec3a4)
1 // Copyright 2017 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_SAMPLEDFUNC_H_
8 #define CORE_FPDFAPI_PAGE_CPDF_SAMPLEDFUNC_H_
9 
10 #include <vector>
11 
12 #include "core/fpdfapi/page/cpdf_function.h"
13 #include "core/fxcrt/retain_ptr.h"
14 
15 class CPDF_StreamAcc;
16 
17 class CPDF_SampledFunc final : public CPDF_Function {
18  public:
19   struct SampleEncodeInfo {
20     float encode_max;
21     float encode_min;
22     uint32_t sizes;
23   };
24 
25   struct SampleDecodeInfo {
26     float decode_max;
27     float decode_min;
28   };
29 
30   CPDF_SampledFunc();
31   ~CPDF_SampledFunc() override;
32 
33   // CPDF_Function:
34   bool v_Init(const CPDF_Object* pObj, VisitedSet* pVisited) override;
35   bool v_Call(pdfium::span<const float> inputs,
36               pdfium::span<float> results) const override;
37 
GetEncodeInfo()38   const std::vector<SampleEncodeInfo>& GetEncodeInfo() const {
39     return m_EncodeInfo;
40   }
GetBitsPerSample()41   uint32_t GetBitsPerSample() const { return m_nBitsPerSample; }
42 
43 #if defined(_SKIA_SUPPORT_)
44   RetainPtr<CPDF_StreamAcc> GetSampleStream() const;
45 #endif
46 
47  private:
48   std::vector<SampleEncodeInfo> m_EncodeInfo;
49   std::vector<SampleDecodeInfo> m_DecodeInfo;
50   uint32_t m_nBitsPerSample = 0;
51   uint32_t m_SampleMax = 0;
52   RetainPtr<CPDF_StreamAcc> m_pSampleStream;
53 };
54 
55 #endif  // CORE_FPDFAPI_PAGE_CPDF_SAMPLEDFUNC_H_
56