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