2018-12-27 14:39:10 +01:00

88 lines
3.0 KiB
C++

/*******************************************************************************
* util/printpreview.h *
* *
* Copyright (C) 2004-2007 Trolltech ASA. All rights reserved. *
* *
* This program is free software: you can redistribute it and/or modify *
* it under the terms of the GNU Affero General Public License as *
* published by the Free Software Foundation, either version 3 of the *
* License, or (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Affero General Public License for more details. *
* *
* You should have received a copy of the GNU Affero General Public License *
* along with this program. If not, see <https://www.gnu.org/licenses/>. *
* *
*******************************************************************************/
// This file is inspired from the demonstration applications of the Qt Toolkit.
#ifndef PRINTPREVIEW_H
#define PRINTPREVIEW_H
#include <QAbstractScrollArea>
#include <QMainWindow>
#include <QPrinter>
#include <QPointF>
#include <QSizeF>
class PreviewView;
class QTextDocument;
class PrintPreview : public QMainWindow
{
Q_OBJECT
public:
PrintPreview(const QTextDocument *document, QWidget *parent);
virtual ~PrintPreview();
QSizeF paperSize;
QPointF pageTopLeft;
private slots:
void print();
void pageSetup();
private:
void setup();
QTextDocument *doc;
PreviewView *view;
QPrinter printer;
};
class PreviewView : public QAbstractScrollArea
{
Q_OBJECT
public:
PreviewView(QTextDocument *document, PrintPreview *printPrev);
inline void updateLayout() { resizeEvent(0); viewport()->update(); }
public slots:
void zoomIn();
void zoomOut();
protected:
virtual void paintEvent(QPaintEvent *e);
virtual void resizeEvent(QResizeEvent *);
virtual void mousePressEvent(QMouseEvent *e);
virtual void mouseMoveEvent(QMouseEvent *e);
virtual void mouseReleaseEvent(QMouseEvent *e);
private:
void paintPage(QPainter *painter, int page);
QTextDocument *doc;
qreal scale;
int interPageSpacing;
QPoint mousePressPos;
QPoint scrollBarValuesOnMousePress;
PrintPreview *printPreview;
};
#endif // PRINTPREVIEW_H