mirror of
https://github.com/subsurface/subsurface.git
synced 2024-12-01 06:30:26 +00:00
feda96cec5
This is wrong because we don't really need to scale. We already have the estimated page dimentions in pixels, so taking the quotient of the printer DPI and screen DPI and then scaling (probably up) our rendered widgets via the QPainter introduces blur (due to the oversampling), and a performance penalty. By rendering at the exact dimensions we ensure that the widgets are crisp at a 100% printout. Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
49 lines
1.2 KiB
C++
49 lines
1.2 KiB
C++
#ifndef PRINTLAYOUT_H
|
|
#define PRINTLAYOUT_H
|
|
|
|
#include <QObject>
|
|
#include <QList>
|
|
#include <QVector>
|
|
#include <QRect>
|
|
|
|
class QPrinter;
|
|
class QTableView;
|
|
class PrintDialog;
|
|
class TablePrintModel;
|
|
class ProfilePrintModel;
|
|
struct dive;
|
|
|
|
class PrintLayout : public QObject {
|
|
Q_OBJECT
|
|
|
|
public:
|
|
PrintLayout(PrintDialog *, QPrinter *, struct options *);
|
|
void print();
|
|
|
|
private:
|
|
PrintDialog *dialog;
|
|
QPrinter *printer;
|
|
struct options *printOptions;
|
|
|
|
int screenDpiX, screenDpiY, printerDpi, pageW, pageH;
|
|
QRect pageRect;
|
|
|
|
QVector<QString> tablePrintColumnNames;
|
|
unsigned int tablePrintHeadingBackground;
|
|
QList<unsigned int> tablePrintColumnWidths;
|
|
unsigned int profilePrintTableMaxH;
|
|
QList<unsigned int> profilePrintColumnWidths, profilePrintRowHeights;
|
|
|
|
void setup();
|
|
int estimateTotalDives() const;
|
|
void printProfileDives(int divesPerRow, int divesPerColumn);
|
|
QTableView *createProfileTable(ProfilePrintModel *model, const int tableW, const qreal fitNotesToHeight = 0.0);
|
|
void printTable();
|
|
void addTablePrintDataRow(TablePrintModel *model, int row, struct dive *dive) const;
|
|
void addTablePrintHeadingRow(TablePrintModel *model, int row) const;
|
|
|
|
signals:
|
|
void signalProgress(int);
|
|
};
|
|
|
|
#endif // PRINTLAYOUT_H
|