7#ifndef PDF_FIELD_CHILDREN_COLLECTION_H
8#define PDF_FIELD_CHILDREN_COLLECTION_H
11#include <podofo/auxiliary/Rect.h>
18 class PODOFO_API PdfFieldChildrenCollectionBase
20 friend class PdfField;
23 PdfFieldChildrenCollectionBase(PdfField& field);
26 PdfField& CreateChild();
27 PdfField& CreateChild(PdfPage& page,
const Rect& rect);
29 PdfField& GetFieldAt(
unsigned index);
31 const PdfField& GetFieldAt(
unsigned index)
const;
33 PdfField& GetField(
const PdfReference& ref);
35 const PdfField& GetField(
const PdfReference& ref)
const;
37 void RemoveFieldAt(
unsigned index);
39 void RemoveField(
const PdfReference& ref);
41 unsigned GetCount()
const;
43 bool HasKidsArray()
const;
46 using FieldList = std::vector<std::shared_ptr<PdfField>>;
48 template <
typename TField,
typename TListIterator>
51 friend class PdfFieldChildrenCollectionBase;
53 using difference_type = void;
54 using value_type = TField*;
56 using reference = void;
57 using iterator_category = std::forward_iterator_tag;
61 Iterator(
const TListIterator& iterator) : m_iterator(iterator) { }
63 Iterator(
const Iterator&) =
default;
64 Iterator& operator=(
const Iterator&) =
default;
65 bool operator==(
const Iterator& rhs)
const
67 return m_iterator == rhs.m_iterator;
69 bool operator!=(
const Iterator& rhs)
const
71 return m_iterator != rhs.m_iterator;
73 Iterator& operator++()
78 Iterator operator++(
int)
84 value_type operator*()
86 return m_iterator.get();
88 value_type operator->()
90 return m_iterator.get();
93 TListIterator m_iterator;
96 using iterator = Iterator<PdfField, FieldList::iterator>;
97 using const_iterator = Iterator<const PdfField, FieldList::const_iterator>;
102 const_iterator begin()
const;
103 const_iterator end()
const;
107 PdfField& AddChild(
const std::shared_ptr<PdfField>& field);
109 PdfArray* getKidsArray()
const;
111 PdfField& getFieldAt(
unsigned index)
const;
112 PdfField& getField(
const PdfReference& ref)
const;
113 void fixIndices(
unsigned index);
116 using FieldMap = std::map<PdfReference, unsigned>;
122 PdfArray* m_kidsArray;
126 template <
typename TField>
127 class PdfFieldChildrenCollection final : PdfFieldChildrenCollectionBase
SPDX-FileCopyrightText: (C) 2022 Francesco Pretto ceztko@gmail.com SPDX-License-Identifier: LGPL-2....
Definition basetypes.h:16