66 lines
1.3 KiB
C++
Executable File
66 lines
1.3 KiB
C++
Executable File
#pragma once
|
|
|
|
#include <QtCore/QSizeF>
|
|
#include <QtWidgets/QWidget>
|
|
#include <QtGui/QPixmap>
|
|
#ifdef HAVE_POPPLER_QT6
|
|
#include <poppler/qt6/poppler-qt6.h>
|
|
#endif
|
|
#include <vector>
|
|
#include <memory>
|
|
|
|
#ifdef HAVE_POPPLER_QT6
|
|
namespace Poppler
|
|
{
|
|
class Page;
|
|
class Link;
|
|
class LinkDestination;
|
|
}
|
|
#endif
|
|
|
|
namespace NGL
|
|
{
|
|
|
|
|
|
class PDFPage final : public QWidget
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
explicit PDFPage(QWidget *parent = nullptr);
|
|
virtual ~PDFPage();
|
|
|
|
#ifdef HAVE_POPPLER_QT6
|
|
void setPopplerPage(Poppler::Page *page);
|
|
void setRotation(Poppler::Page::Rotation rot);
|
|
QImage getPrintableImage(int resolution = 300) const;
|
|
Q_SIGNALS:
|
|
void linkClicked(const Poppler::LinkDestination &dest);
|
|
#endif
|
|
public:
|
|
void setZoomFactor(double zoom);
|
|
void clearPixmap();
|
|
QSize sizeHint() const override;
|
|
Q_SIGNALS:
|
|
void pageRendered();
|
|
|
|
void externalLinkClicked(const QString &url);
|
|
|
|
protected:
|
|
void paintEvent(QPaintEvent *event) override;
|
|
void mouseMoveEvent(QMouseEvent *event) override;
|
|
void mouseReleaseEvent(QMouseEvent *event) override;
|
|
private:
|
|
void rebuildInternalData();
|
|
QSizeF rotatedPageSize() const;
|
|
protected:
|
|
#ifdef HAVE_POPPLER_QT6
|
|
Poppler::Page *m_page;
|
|
std::vector<std::unique_ptr<Poppler::Link>> m_links;
|
|
QList< QRectF > m_linkRects;
|
|
Poppler::Page::Rotation m_rotation;
|
|
#endif
|
|
double m_scaleFactor;
|
|
QPixmap m_pdfPixmap;
|
|
};
|
|
}
|