38
Model::FitzPage::FitzPage(const FitzDocument* parent, fz_page* page) :
41
void loadOutline(fz_outline* outline, QStandardItem* parent)
43
QStandardItem* item = new QStandardItem(QString::fromUtf8(outline->title));
44
item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
46
if(outline->dest.kind != FZ_LINK_NONE)
48
const int page = outline->dest.ld.gotor.page + 1;
50
item->setData(page, Qt::UserRole + 1);
52
QStandardItem* pageItem = item->clone();
53
pageItem->setText(QString::number(page));
54
pageItem->setTextAlignment(Qt::AlignRight);
56
parent->appendRow(QList< QStandardItem* >() << item << pageItem);
60
parent->appendRow(item);
63
if(outline->next != 0)
65
loadOutline(outline->next, parent);
68
if(outline->down != 0)
70
loadOutline(outline->down, item);
79
model::FitzPage::FitzPage(const FitzDocument* parent, fz_page* page) :
44
Model::FitzPage::~FitzPage()
85
model::FitzPage::~FitzPage()
46
87
fz_free_page(m_parent->m_document, m_page);
49
QSizeF Model::FitzPage::size() const
90
QSizeF model::FitzPage::size() const
51
92
QMutexLocker mutexLocker(&m_parent->m_mutex);
56
97
return QSize(qCeil(qAbs(rect.x1 - rect.x0)), qCeil(qAbs(rect.y1 - rect.y0)));
59
QImage Model::FitzPage::render(qreal horizontalResolution, qreal verticalResolution, Rotation rotation, const QRect& boundingRect) const
100
QImage model::FitzPage::render(qreal horizontalResolution, qreal verticalResolution, Rotation rotation, const QRect& boundingRect) const
61
102
QMutexLocker mutexLocker(&m_parent->m_mutex);
181
Model::FitzDocument::~FitzDocument()
222
model::FitzDocument::~FitzDocument()
183
224
fz_close_document(m_document);
184
225
fz_free_context(m_context);
187
int Model::FitzDocument::numberOfPages() const
228
int model::FitzDocument::numberOfPages() const
189
230
QMutexLocker mutexLocker(&m_mutex);
191
232
return fz_count_pages(m_document);
194
Model::Page* Model::FitzDocument::page(int index) const
235
model::Page* model::FitzDocument::page(int index) const
196
237
QMutexLocker mutexLocker(&m_mutex);
200
241
return page != 0 ? new FitzPage(this, page) : 0;
203
bool Model::FitzDocument::canBePrintedUsingCUPS() const
244
bool model::FitzDocument::canBePrintedUsingCUPS() const
205
246
QMutexLocker mutexLocker(&m_mutex);
207
248
return pdf_specifics(m_document) != 0;
210
void Model::FitzDocument::setPaperColor(const QColor& paperColor)
251
void model::FitzDocument::setPaperColor(const QColor& paperColor)
212
253
m_paperColor = paperColor;
215
static void loadOutline(fz_outline* outline, QStandardItem* parent)
217
QStandardItem* item = new QStandardItem(QString::fromUtf8(outline->title));
218
item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
220
if(outline->dest.kind != FZ_LINK_NONE)
222
const int page = outline->dest.ld.gotor.page + 1;
224
item->setData(page, Qt::UserRole + 1);
226
QStandardItem* pageItem = item->clone();
227
pageItem->setText(QString::number(page));
228
pageItem->setTextAlignment(Qt::AlignRight);
230
parent->appendRow(QList< QStandardItem* >() << item << pageItem);
234
parent->appendRow(item);
237
if(outline->next != 0)
239
loadOutline(outline->next, parent);
242
if(outline->down != 0)
244
loadOutline(outline->down, item);
248
void Model::FitzDocument::loadOutline(QStandardItemModel* outlineModel) const
256
void model::FitzDocument::loadOutline(QStandardItemModel* outlineModel) const
250
258
Document::loadOutline(outlineModel);
277
285
fz_free_context(m_context);
280
Model::Document* FitzPlugin::loadDocument(const QString& filePath) const
288
model::Document* FitzPlugin::loadDocument(const QString& filePath) const
282
290
fz_context* context = fz_clone_context(m_context);
283
291
fz_document* document = fz_open_document(context, QFile::encodeName(filePath));
292
return new Model::FitzDocument(context, document);
300
return new model::FitzDocument(context, document);
295
303
void FitzPlugin::lock(void* user, int lock)
302
310
reinterpret_cast< FitzPlugin* >(user)->m_mutex[lock].unlock();
305
315
#if QT_VERSION < QT_VERSION_CHECK(5,0,0)
307
Q_EXPORT_PLUGIN2(qpdfview_fitz, FitzPlugin)
317
Q_EXPORT_PLUGIN2(qpdfview_fitz, qpdfview::FitzPlugin)
309
319
#endif // QT_VERSION