PoDoFo 1.0.0-dev
Loading...
Searching...
No Matches
PdfXObjectForm.h
1
7#ifndef PDF_XOBJECT_FORM_H
8#define PDF_XOBJECT_FORM_H
9
10#include "PdfXObject.h"
11#include "PdfCanvas.h"
12#include "PdfResources.h"
13
14namespace PoDoFo {
15
16class PdfPage;
17
18class PODOFO_API PdfXObjectForm final : public PdfXObject, public PdfCanvas
19{
20 friend class PdfDocument;
21 friend class PdfXObject;
22 friend class PdfAnnotation;
23
24private:
31 PdfXObjectForm(PdfDocument& doc, const Rect& rect);
32
33public:
40 void FillFromPage(const PdfPage& page, bool useTrimBox = false);
41
42public:
43 PdfResources& GetOrCreateResources() override;
44
45 Rect GetRect() const override;
46
50 void SetRect(const Rect& rect);
51
52 void SetMatrix(const Matrix& m);
53
54 const Matrix& GetMatrix() const override;
55
56public:
57 inline PdfResources* GetResources() { return m_Resources.get(); }
58 inline const PdfResources* GetResources() const { return m_Resources.get(); }
59
60protected:
61 const PdfXObjectForm* GetForm() const override;
62
63private:
64 PdfXObjectForm(PdfObject& obj);
65
66private:
67 bool TryGetRotationRadians(double& teta) const override;
68 Corners GetRectRaw() const override;
69 PdfObject* getContentsObject() override;
70 PdfResources* getResources() override;
71 PdfDictionaryElement& getElement() override;
72 PdfObjectStream& GetOrCreateContentsStream(PdfStreamAppendFlags flags) override;
73 PdfObjectStream& ResetContentsStream() override;
74 void CopyContentsTo(OutputStream& stream) const override;
75 void initXObject(const Rect& rect);
76 void initAfterPageInsertion(const PdfPage& page);
77
78private:
79 // Remove some PdfCanvas methods to maintain the class API surface clean
80 PdfElement& GetElement() = delete;
81 const PdfElement& GetElement() const = delete;
82 PdfObject* GetContentsObject() = delete;
83 const PdfObject* GetContentsObject() const = delete;
84
85private:
86 Rect m_Rect;
87 Matrix m_Matrix;
88 std::unique_ptr<PdfResources> m_Resources;
89};
90
91}
92
93#endif // PDF_XOBJECT_FORM_H
SPDX-FileCopyrightText: (C) 2022 Francesco Pretto ceztko@gmail.com SPDX-License-Identifier: LGPL-2....
Definition basetypes.h:16