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;
15
16class PODOFO_API PdfXObjectForm final : public PdfXObject, public PdfCanvas
17{
18 friend class PdfDocument;
19 friend class PdfXObject;
20 friend class PdfAnnotation;
21
22private:
28 PdfXObjectForm(PdfDocument& doc, const Rect& rect);
29
30public:
37 void FillFromPage(const PdfPage& page, bool useTrimBox = false);
38
39public:
40 PdfResources& GetOrCreateResources() override;
41
42 Rect GetRect() const override;
43
46 void SetRect(const Rect& rect);
47
48 void SetMatrix(const Matrix& m);
49
50 const Matrix& GetMatrix() const override;
51
52public:
53 inline PdfResources* GetResources() { return m_Resources.get(); }
54 inline const PdfResources* GetResources() const { return m_Resources.get(); }
55
56protected:
57 const PdfXObjectForm* GetForm() const override;
58
59private:
60 PdfXObjectForm(PdfObject& obj);
61
62private:
63 bool TryGetRotationRadians(double& teta) const override;
64 Corners GetRectRaw() const override;
65 PdfObject* getContentsObject() override;
66 PdfResources* getResources() override;
67 PdfDictionaryElement& getElement() override;
68 PdfObjectStream& GetOrCreateContentsStream(PdfStreamAppendFlags flags) override;
69 PdfObjectStream& ResetContentsStream() override;
70 void CopyContentsTo(OutputStream& stream) const override;
71 void initXObject(const Rect& rect);
72
73private:
74 // Remove some PdfCanvas methods to maintain the class API surface clean
75 PdfElement& GetElement() = delete;
76 const PdfElement& GetElement() const = delete;
77 PdfObject* GetContentsObject() = delete;
78 const PdfObject* GetContentsObject() const = delete;
79
80private:
81 Rect m_Rect;
82 Matrix m_Matrix;
83 std::unique_ptr<PdfResources> m_Resources;
84};
85
86}
87
88#endif // PDF_XOBJECT_FORM_H
All classes, functions, types and enums of PoDoFo are members of these namespace.
Definition basetypes.h:13