PoDoFo  1.0.0-dev
PdfOutlines.h
1 
6 #ifndef PDF_OUTLINE_H
7 #define PDF_OUTLINE_H
8 
9 #include "PdfElement.h"
10 #include "PdfColor.h"
11 
12 namespace PoDoFo {
13 
14 class PdfDestination;
15 class PdfAction;
16 
21 enum class PdfOutlineFormat
22 {
23  Default = 0,
24  Italic = 1,
25  Bold = 2,
26  BoldItalic = 3,
27 };
28 
38 class PODOFO_API PdfOutlineItem : public PdfDictionaryElement
39 {
40  friend class PdfOutlines;
41  friend class PdfDocument;
42 
43 private:
49  PdfOutlineItem(PdfDocument& doc, PdfOutlineItem* parentOutline = nullptr);
50 
57  PdfOutlineItem(PdfObject& obj, PdfOutlineItem* parentOutline, PdfOutlineItem* previous);
58 
59 public:
60  virtual ~PdfOutlineItem();
61 
65  PdfOutlineItem& CreateChild(const PdfString& title);
66 
70  PdfOutlineItem& CreateNext(const PdfString& title);
71 
75  inline PdfOutlineItem* Prev() const { return m_Prev; }
76 
80  inline PdfOutlineItem* Next() const { return m_Next; }
81 
85  inline PdfOutlineItem* First() const { return m_First; }
86 
90  inline PdfOutlineItem* Last() const { return m_Last; }
91 
96  inline PdfOutlineItem* GetParentOutline() const { return m_ParentOutline; }
97 
104  void Erase();
105 
109  void SetDestination(nullable<const PdfDestination&> dest);
110 
114  nullable<const PdfDestination&> GetDestination() const;
115  nullable<PdfDestination&> GetDestination();
116 
120  void SetAction(nullable<const PdfAction&> action);
121 
125  nullable<const PdfAction&> GetAction() const;
126  nullable<PdfAction&> GetAction();
127 
131  void SetTitle(const PdfString& title);
132 
136  const PdfString& GetTitle() const;
137 
144  void SetTextFormat(PdfOutlineFormat format);
145 
149  PdfOutlineFormat GetTextFormat() const;
150 
155  void SetTextColor(const PdfColor& color);
156 
162  PdfColor GetTextColor() const;
163 
164 private:
176  void InsertChild(std::unique_ptr<PdfOutlineItem> item);
177 
178  nullable<PdfAction&> getAction();
179  nullable<PdfDestination&> getDestination();
180  void setPrevious(PdfOutlineItem* item);
181  void setNext(PdfOutlineItem* item);
182  void setLast(PdfOutlineItem* item);
183  void setFirst(PdfOutlineItem* item);
184  void insertChildInternal(PdfOutlineItem* item, bool checkParent);
185 
186 private:
187  PdfOutlineItem* m_ParentOutline;
188 
189  PdfOutlineItem* m_Prev;
190  PdfOutlineItem* m_Next;
191 
192  PdfOutlineItem* m_First;
193  PdfOutlineItem* m_Last;
194 
197 };
198 
205 class PODOFO_API PdfOutlines final : public PdfOutlineItem
206 {
207  friend class PdfDocument;
208 
209 private:
212  PdfOutlines(PdfDocument& doc);
213 
217  PdfOutlines(PdfObject& obj);
218 
219 public:
225  PdfOutlineItem& CreateRoot(const PdfString& title);
226 };
227 
228 };
229 
230 #endif // PDF_OUTLINE_H
A color object can represent either a grayscale value, a RGB color, a CMYK color.
Definition: PdfColor.h:25
PdfDocument is the core interface for working with PDF documents.
Definition: PdfDocument.h:108
This class represents a PDF indirect Object in memory.
Definition: PdfObject.h:35
A PDF outline item has an title and a destination.
Definition: PdfOutlines.h:39
PdfOutlineItem * Prev() const
Definition: PdfOutlines.h:75
PdfOutlineItem * Next() const
Definition: PdfOutlines.h:80
PdfOutlineItem * First() const
Definition: PdfOutlines.h:85
PdfOutlineItem * GetParentOutline() const
Definition: PdfOutlines.h:96
PdfOutlineItem * Last() const
Definition: PdfOutlines.h:90
The main PDF outlines dictionary.
Definition: PdfOutlines.h:206
A string that can be written to a PDF document.
Definition: PdfString.h:24
Alternative to std::optional that supports reference (but not pointer) types.
Definition: nullable.h:29
SPDX-FileCopyrightText: (C) 2022 Francesco Pretto ceztko@gmail.com SPDX-License-Identifier: LGPL-2....
Definition: basetypes.h:16
PdfOutlineFormat
The title of an outline item can be displayed in different formatting styles since PDF 1....
Definition: PdfOutlines.h:22
@ BoldItalic
Bold Italic.
@ Default
Default format.