Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
cpdf_patterncs.cpp
Go to the documentation of this file.
1// Copyright 2014 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#include "core/fpdfapi/page/cpdf_patterncs.h"
8
9#include <optional>
10
11#include "core/fpdfapi/page/cpdf_docpagedata.h"
12#include "core/fpdfapi/parser/cpdf_array.h"
13#include "core/fpdfapi/parser/cpdf_document.h"
14#include "core/fxcrt/notreached.h"
15
16CPDF_PatternCS::CPDF_PatternCS() : CPDF_BasedCS(Family::kPattern) {}
17
18CPDF_PatternCS::~CPDF_PatternCS() = default;
19
20void CPDF_PatternCS::InitializeStockPattern() {
22}
23
24uint32_t CPDF_PatternCS::v_Load(CPDF_Document* pDoc,
25 const CPDF_Array* pArray,
26 std::set<const CPDF_Object*>* pVisited) {
27 RetainPtr<const CPDF_Object> pBaseCS = pArray->GetDirectObjectAt(1);
28 if (HasSameArray(pBaseCS.Get()))
29 return 0;
30
31 auto* pDocPageData = CPDF_DocPageData::FromDocument(pDoc);
32 m_pBaseCS =
33 pDocPageData->GetColorSpaceGuarded(pBaseCS.Get(), nullptr, pVisited);
34 if (!m_pBaseCS)
35 return 1;
36
37 if (m_pBaseCS->GetFamily() == Family::kPattern)
38 return 0;
39
40 if (m_pBaseCS->ComponentCount() > kMaxPatternColorComps) {
41 return 0;
42 }
43
44 return m_pBaseCS->ComponentCount() + 1;
45}
46
47std::optional<FX_RGB_STRUCT<float>> CPDF_PatternCS::GetRGB(
48 pdfium::span<const float> pBuf) const {
50}
51
52const CPDF_PatternCS* CPDF_PatternCS::AsPatternCS() const {
53 return this;
54}
55
56std::optional<FX_RGB_STRUCT<float>> CPDF_PatternCS::GetPatternRGB(
57 const PatternValue& value) const {
58 if (!m_pBaseCS) {
59 return std::nullopt;
60 }
61
62 return m_pBaseCS->GetRGB(value.GetComps());
63}
std::vector< RetainPtr< CPDF_Object > >::const_iterator const_iterator
Definition cpdf_array.h:29
CPDF_BasedCS(Family family)
bool HasSameArray(const CPDF_Object *pObj) const
void SetComponentsForStockCS(uint32_t nComponents)
static CPDF_DocPageData * FromDocument(const CPDF_Document *pDoc)
uint32_t v_Load(CPDF_Document *pDoc, const CPDF_Array *pArray, std::set< const CPDF_Object * > *pVisited) override
~CPDF_PatternCS() override
std::optional< FX_RGB_STRUCT< float > > GetPatternRGB(const PatternValue &value) const
void InitializeStockPattern()
std::optional< FX_RGB_STRUCT< float > > GetRGB(pdfium::span< const float > pBuf) const override
const CPDF_PatternCS * AsPatternCS() const override
#define NOTREACHED_NORETURN()
Definition notreached.h:22