PoDoFo 1.2.0
Loading...
Searching...
No Matches
PdfXObjectForm.h
1// SPDX-FileCopyrightText: 2007 Dominik Seichter <domseichter@web.de>
2// SPDX-FileCopyrightText: 2021 Francesco Pretto <ceztko@gmail.com>
3// SPDX-License-Identifier: LGPL-2.0-or-later OR MPL-2.0
4
5#ifndef PDF_XOBJECT_FORM_H
6#define PDF_XOBJECT_FORM_H
7
8#include "PdfXObject.h"
9#include "PdfCanvas.h"
10#include "PdfResources.h"
11
12namespace PoDoFo {
13
14class PdfPage;
15class PdfObjectRelocationMap;
16
18{
19 None = 0,
20 _Reserved1 = 1,
21 _Reserved2 = 2,
22 UseTrimBox = 4,
23 _Reserved8 = 8,
24};
25
26class PODOFO_API PdfXObjectForm final : public PdfXObject, public PdfCanvas
27{
28 friend class PdfDocument;
29 friend class PdfXObject;
30 friend class PdfAnnotation;
31
32private:
38 PdfXObjectForm(PdfDocument& doc, const Rect& rect);
39
40public:
41 [[deprecated("Use the FillFromPage methods with flags instead")]]
42 void FillFromPage(const PdfPage& page, bool useTrimBox);
43
51 void FillFromPage(const PdfPage& page, PdfFillFormFlags flags = PdfFillFormFlags::None, PdfObjectRelocationMap* map = nullptr);
52 void FillFromPage(const PdfPage& page, PdfObjectRelocationMap* map);
53
54public:
55 PdfResources& GetOrCreateResources() override;
56
57 Rect GetRect() const override;
58
61 void SetRect(const Rect& rect);
62
63 void SetMatrix(const Matrix& m);
64
65 const Matrix& GetMatrix() const override;
66
67public:
68 inline PdfResources* GetResources() { return m_Resources.get(); }
69 inline const PdfResources* GetResources() const { return m_Resources.get(); }
70
71protected:
72 PdfXObjectForm* getForm() const override;
73
74private:
75 PdfXObjectForm(PdfObject& obj);
76
77private:
78 bool TryGetRotationRadians(double& teta) const override;
79 Corners GetRectRaw() const override;
80 PdfObject* getContentsObject() override;
81 PdfResources* getResources() override;
82 PdfDictionaryElement& getElement() override;
83 PdfObjectStream& GetOrCreateContentsStream(PdfStreamAppendFlags flags) override;
84 PdfObjectStream& ResetContentsStream() override;
85 void CopyContentsTo(OutputStream& stream) const override;
86 void initXObject(const Rect& rect);
87
88private:
89 // Remove some PdfCanvas methods to maintain the class API surface clean
90 PdfElement& GetElement() = delete;
91 const PdfElement& GetElement() const = delete;
92 PdfObject* GetContentsObject() = delete;
93 const PdfObject* GetContentsObject() const = delete;
94
95private:
96 Rect m_Rect;
97 Matrix m_Matrix;
98 std::unique_ptr<PdfResources> m_Resources;
99};
100
101}
102
103ENABLE_BITMASK_OPERATORS(PoDoFo::PdfFillFormFlags);
104
105#endif // PDF_XOBJECT_FORM_H
All classes, functions, types and enums of PoDoFo are members of these namespace.
Definition basetypes.h:13
@ None
Do not add a default appearance.
PdfFillFormFlags
Definition PdfXObjectForm.h:18
@ UseTrimBox
Default, intersects with /TrimBox.