PoDoFo 1.0.0-dev
Loading...
Searching...
No Matches
PdfPattern.h
1
7#ifndef PDF_PATTERN_H
8#define PDF_PATTERN_H
9
10#include "PdfCanvas.h"
11#include "PdfPatternDefinition.h"
12
13namespace PoDoFo
14{
15 class PODOFO_API PdfPattern : public PdfDictionaryElement
16 {
17 friend class PdfTilingPattern;
18 friend class PdfShadingPattern;
19 private:
20 PdfPattern(PdfDocument& doc, PdfPatternDefinitionPtr&& definition);
21
22 public:
23 const PdfPatternDefinition& GetDefinition() const { return *m_Definition; }
24 PdfPatternDefinitionPtr GetDefinitionPtr() const { return m_Definition; }
25 protected:
26 PdfPatternDefinitionPtr m_Definition;
27 };
28
29 class PODOFO_API PdfTilingPattern : public PdfPattern, public PdfCanvas
30 {
31 friend class PdfColouredTilingPattern;
32 friend class PdfUncolouredTilingPattern;
33
34 private:
35 PdfTilingPattern(PdfDocument& doc, std::shared_ptr<PdfTilingPatternDefinition>&& definition);
36
37 public:
38 const PdfTilingPatternDefinition& GetDefinition() const;
39 std::shared_ptr<const PdfTilingPatternDefinition> GetDefinitionPtr() const;
40 inline PdfResources* GetResources() { return m_Resources.get(); }
41 inline const PdfResources* GetResources() const { return m_Resources.get(); }
42
43 private:
44 PdfObjectStream& GetOrCreateContentsStream(PdfStreamAppendFlags flags) override;
45 PdfResources& GetOrCreateResources() override;
46 PdfObjectStream& ResetContentsStream() override;
47 void CopyContentsTo(OutputStream& stream) const override;
48 Corners GetRectRaw() const override;
49 bool TryGetRotationRadians(double& teta) const override;
50 PdfObject* getContentsObject() override;
51 PdfResources* getResources() override;
52 PdfDictionaryElement& getElement() override;
53
54 private:
55 // Remove some PdfCanvas methods to maintain the class API surface clean
56 PdfElement& GetElement() = delete;
57 const PdfElement& GetElement() const = delete;
58 PdfObject* GetContentsObject() = delete;
59 const PdfObject* GetContentsObject() const = delete;
60
61 private:
62 std::unique_ptr<PdfResources> m_Resources;
63 };
64
65 class PODOFO_API PdfColouredTilingPattern final : public PdfTilingPattern
66 {
67 friend class PdfDocument;
68
69 private:
70 PdfColouredTilingPattern(PdfDocument& doc, std::shared_ptr<PdfColouredTilingPatternDefinition> definition);
71
72 public:
73 const PdfColouredTilingPatternDefinition& GetDefinition() const;
74 std::shared_ptr<const PdfColouredTilingPatternDefinition> GetDefinitionPtr() const;
75 };
76
77 class PODOFO_API PdfUncolouredTilingPattern final : public PdfTilingPattern
78 {
79 friend class PdfDocument;
80
81 private:
82 PdfUncolouredTilingPattern(PdfDocument& doc, std::shared_ptr<PdfUncolouredTilingPatternDefinition> definition);
83
84 public:
85 const PdfUncolouredTilingPatternDefinition& GetDefinition() const;
86 std::shared_ptr<const PdfUncolouredTilingPatternDefinition> GetDefinitionPtr() const;
87 };
88
89 class PODOFO_API PdfShadingPattern final : public PdfPattern
90 {
91 friend class PdfDocument;
92
93 private:
94 PdfShadingPattern(PdfDocument& doc, PdfShadingPatternDefinitionPtr definition);
95
96 public:
97 const PdfShadingPatternDefinition& GetDefinition() const;
98 PdfShadingPatternDefinitionPtr GetDefinitionPtr() const;
99 };
100
101 class PODOFO_API PdfShadingDictionary final : public PdfDictionaryElement
102 {
103 friend class PdfDocument;
104
105 private:
106 PdfShadingDictionary(PdfDocument& doc, PdfShadingDefinitionPtr definition);
107
108 public:
109 const PdfShadingDefinition& GetDefinition() const { return *m_Definition; }
110 PdfShadingDefinitionPtr GetDefinitionPtr() const { return m_Definition; }
111
112 private:
113 PdfShadingDefinitionPtr m_Definition;
114 };
115}
116
117#endif // PDF_PATTERN_H
SPDX-FileCopyrightText: (C) 2022 Francesco Pretto ceztko@gmail.com SPDX-License-Identifier: LGPL-2....
Definition basetypes.h:16
std::shared_ptr< const PdfPatternDefinition > PdfPatternDefinitionPtr
Convenience alias for a constant PdfTilingPatternDefinition shared ptr.
Definition PdfPatternDefinition.h:406
std::shared_ptr< const PdfShadingDefinition > PdfShadingDefinitionPtr
Convenience alias for a constant PdfShadingDefinition shared ptr.
Definition PdfPatternDefinition.h:167
std::shared_ptr< const PdfShadingPatternDefinition > PdfShadingPatternDefinitionPtr
Convenience alias for a constant PdfShadingPatternDefinition shared ptr.
Definition PdfPatternDefinition.h:414