8#include "PdfPatternDefinition.h"
12 class PODOFO_API PdfPattern :
public PdfDictionaryElement
14 friend class PdfTilingPattern;
15 friend class PdfShadingPattern;
17 PdfPattern(PdfDocument& doc, PdfPatternDefinitionPtr&& definition);
18 PdfPattern(PdfObject& obj, PdfPatternDefinitionPtr&& definition);
21 static bool TryCreateFromObject(PdfObject& obj, std::unique_ptr<PdfPattern>& pattern);
23 static bool TryCreateFromObject(
const PdfObject& obj, std::unique_ptr<const PdfPattern>& pattern);
25 template <
typename PatternT>
26 static bool TryCreateFromObject(PdfObject& obj, std::unique_ptr<PatternT>& pattern);
28 template <
typename PatternT>
29 static bool TryCreateFromObject(
const PdfObject& obj, std::unique_ptr<const PatternT>& pattern);
31 PdfPatternType GetType()
const {
return m_Definition->GetType(); }
32 const PdfPatternDefinition& GetDefinition()
const {
return *m_Definition; }
36 static PdfPattern* createFromObject(
const PdfObject& obj, PdfPatternType reqType, PdfPatternType& detectedType);
37 template <
typename TPattern>
38 static constexpr PdfPatternType GetPatternType();
44 class PODOFO_API PdfTilingPattern :
public PdfPattern,
public PdfCanvas
46 friend class PdfColouredTilingPattern;
47 friend class PdfUncolouredTilingPattern;
50 PdfTilingPattern(PdfDocument& doc, std::shared_ptr<PdfTilingPatternDefinition>&& definition);
51 PdfTilingPattern(PdfObject& obj, PdfPatternDefinitionPtr&& definition);
54 const PdfTilingPatternDefinition& GetDefinition()
const;
55 std::shared_ptr<const PdfTilingPatternDefinition> GetDefinitionPtr()
const;
56 inline PdfResources* GetResources() {
return m_Resources.get(); }
57 inline const PdfResources* GetResources()
const {
return m_Resources.get(); }
60 PdfObjectStream& GetOrCreateContentsStream(PdfStreamAppendFlags flags)
override;
61 PdfResources& GetOrCreateResources()
override;
62 PdfObjectStream& ResetContentsStream()
override;
63 void CopyContentsTo(OutputStream& stream)
const override;
64 Corners GetRectRaw()
const override;
65 bool TryGetRotationRadians(
double& teta)
const override;
66 PdfObject* getContentsObject()
override;
67 PdfResources* getResources()
override;
68 PdfDictionaryElement& getElement()
override;
72 PdfElement& GetElement() =
delete;
73 const PdfElement& GetElement()
const =
delete;
74 PdfObject* GetContentsObject() =
delete;
75 const PdfObject* GetContentsObject()
const =
delete;
78 std::unique_ptr<PdfResources> m_Resources;
81 class PODOFO_API PdfColouredTilingPattern final :
public PdfTilingPattern
83 friend class PdfDocument;
84 friend class PdfPattern;
87 PdfColouredTilingPattern(PdfDocument& doc, std::shared_ptr<PdfColouredTilingPatternDefinition>&& definition);
88 PdfColouredTilingPattern(PdfObject& obj);
91 const PdfColouredTilingPatternDefinition& GetDefinition()
const;
92 std::shared_ptr<const PdfColouredTilingPatternDefinition> GetDefinitionPtr()
const;
95 class PODOFO_API PdfUncolouredTilingPattern final :
public PdfTilingPattern
97 friend class PdfDocument;
98 friend class PdfPattern;
101 PdfUncolouredTilingPattern(PdfDocument& doc, std::shared_ptr<PdfUncolouredTilingPatternDefinition>&& definition);
102 PdfUncolouredTilingPattern(PdfObject& obj);
105 const PdfUncolouredTilingPatternDefinition& GetDefinition()
const;
106 std::shared_ptr<const PdfUncolouredTilingPatternDefinition> GetDefinitionPtr()
const;
109 class PODOFO_API PdfShadingPattern final :
public PdfPattern
111 friend class PdfDocument;
112 friend class PdfPattern;
115 PdfShadingPattern(PdfDocument& doc, PdfShadingPatternDefinitionPtr&& definition);
116 PdfShadingPattern(PdfObject& obj);
119 const PdfShadingPatternDefinition& GetDefinition()
const;
123 class PODOFO_API PdfShadingDictionary final :
public PdfDictionaryElement
125 friend class PdfDocument;
128 PdfShadingDictionary(PdfDocument& doc, PdfShadingDefinitionPtr&& definition);
131 const PdfShadingDefinition& GetDefinition()
const {
return *m_Definition; }
138 template<
typename PatternT>
139 inline bool PdfPattern::TryCreateFromObject(PdfObject& obj, std::unique_ptr<PatternT>& pattern)
141 PdfPatternType detectedType;
142 pattern.reset((PatternT*)createFromObject(obj, GetPatternType<PatternT>(), detectedType));
143 return pattern !=
nullptr;
146 template<
typename PatternT>
147 inline bool PdfPattern::TryCreateFromObject(
const PdfObject& obj, std::unique_ptr<const PatternT>& pattern)
149 PdfPatternType detectedType;
150 pattern.reset((
const PatternT*)createFromObject(obj, GetPatternType<PatternT>(), detectedType));
151 return pattern !=
nullptr;
154 template<
typename TPattern>
155 constexpr PdfPatternType PdfPattern::GetPatternType()
157 if (std::is_same_v<TPattern, PdfColouredTilingPattern>)
158 return PdfPatternType::Tiling;
159 else if (std::is_same_v<TPattern, PdfUncolouredTilingPattern>)
160 return PdfPatternType::Tiling;
161 else if (std::is_same_v<TPattern, PdfShadingPattern>)
162 return PdfPatternType::Shading;
164 return PdfPatternType::Unknown;
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:403
std::shared_ptr< const PdfShadingDefinition > PdfShadingDefinitionPtr
Convenience alias for a constant PdfShadingDefinition shared ptr.
Definition PdfPatternDefinition.h:180
std::shared_ptr< const PdfShadingPatternDefinition > PdfShadingPatternDefinitionPtr
Convenience alias for a constant PdfShadingPatternDefinition shared ptr.
Definition PdfPatternDefinition.h:409