mupdf-qt  0.1
Qt5 interface of the popular PDF library MuPDF
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Friends Pages
mupdf-outline.cpp
Go to the documentation of this file.
1 #include "mupdf-outline.h"
2 #include "mupdf-outline_p.h"
3 #include "mupdf-link.h"
4 #include "mupdf-link_p.h"
5 #include "mupdf-document_p.h"
6 #include <QString>
7 
8 namespace MuPDF
9 {
10 
11 Outline::Outline(OutlinePrivate *outlinep)
12  : d(outlinep)
13 {
14 
15 }
16 
18 {
19  delete d;
20 }
21 
22 OutlinePrivate::OutlinePrivate(DocumentPrivate *dp, fz_outline *o)
23  : documentp(dp), context(documentp->context), outline(o)
24 {
25 
26 }
27 
28 OutlinePrivate::~OutlinePrivate()
29 {
30  if (outline) {
31  deleteData();
32  documentp->outlines.removeAt(documentp->outlines.indexOf(this));
33  }
34 }
35 
40 {
41  OutlineItemPrivate *itemp = new OutlineItemPrivate(d->outline);
42  return OutlineItem(itemp);
43 }
44 
46  : d(NULL)
47 {
48 
49 }
50 
56 OutlineItem::OutlineItem(OutlineItemPrivate *itemp)
57  : d(itemp)
58 {
59 
60 }
61 
63 {
64  if (item.isValid()) {
65  d = new OutlineItemPrivate(item.d->outline);
66  } else {
67  d = NULL;
68  }
69 }
70 
72 {
73  delete d;
74  if (item.isValid()) {
75  d = new OutlineItemPrivate(item.d->outline);
76  } else {
77  d = NULL;
78  }
79  return *this;
80 }
81 
83 {
84  delete d;
85 }
86 
87 OutlineItemPrivate::OutlineItemPrivate(fz_outline *o)
88  : outline(o)
89 {
90  LinkPrivate *linkp = new LinkPrivate(outline->dest);
91 
92  switch (outline->dest.kind) {
93  case FZ_LINK_NONE:
94  link = new MuPDF::Link(linkp);
95  break;
96 
97  case FZ_LINK_GOTO:
98  link = new MuPDF::LinkGoto(linkp);
99  break;
100 
101  case FZ_LINK_URI:
102  link = new MuPDF::LinkURI(linkp);
103  break;
104 
105  case FZ_LINK_LAUNCH:
106  link = new MuPDF::LinkLaunch(linkp);
107  break;
108 
109  case FZ_LINK_NAMED:
110  link = new MuPDF::LinkNamed(linkp);
111  break;
112 
113  case FZ_LINK_GOTOR:
114  link = new MuPDF::LinkGotoR(linkp);
115  break;
116 
117  default:
118  link = NULL;
119  delete linkp;
120  break;
121  }
122 }
123 
124 OutlineItemPrivate::~OutlineItemPrivate()
125 {
126  delete link;
127 }
128 
133 {
134  return d ? true : false;
135 }
136 
143 QString OutlineItem::title() const
144 {
145  return d->outline->title;
146 }
147 
157 {
158  return d->link;
159 }
160 
170 {
171  fz_outline *outline = d->outline->next;
172  OutlineItemPrivate *itemp = NULL;
173 
174  if (outline) {
175  itemp = new OutlineItemPrivate(outline);
176  }
177 
178  return OutlineItem(itemp);
179 }
180 
190 {
191  fz_outline *outline = d->outline->down;
192  OutlineItemPrivate *itemp = NULL;
193 
194  if (outline) {
195  itemp = new OutlineItemPrivate(outline);
196  }
197 
198  return OutlineItem(itemp);
199 }
200 
201 }