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