Files
qt-migration-legatus/qt6-after/qt6-migrated-legatus/Z/src/nglwidgets/nglpdfpage.h
T

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;
};
}