subsurface/printer.h
Gehad elrobey 6a9c4cb9d7 Printing: don't break dives into successive pages
While rendering a template with "0" dives per page value, try to fit
as many dives per page but don't break a dive into 2 pages.

Use a dynamically sized view port to fit the rendered area only,
and don't render the full page.

All the Template elements that shouldn't be broken should have
the CSS class "dontbreak".

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Gehad elrobey <gehadelrobey@gmail.com>
2015-08-15 15:04:45 +03:00

49 lines
980 B
C++

#ifndef PRINTER_H
#define PRINTER_H
#include <QPrinter>
#include <QWebView>
#include <QRect>
#include <QPainter>
#include "profile/profilewidget2.h"
#include "printoptions.h"
#include "templateedit.h"
class Printer : public QObject {
Q_OBJECT
public:
enum PrintMode {
PRINT,
PREVIEW
};
private:
QPaintDevice *paintDevice;
QWebView *webView;
print_options *printOptions;
template_options *templateOptions;
QSize pageSize;
PrintMode printMode;
int done;
int dpi;
void render(int Pages);
void flowRender();
void putProfileImage(QRect box, QRect viewPort, QPainter *painter, struct dive *dive, QPointer<ProfileWidget2> profile);
private slots:
void templateProgessUpdated(int value);
public:
Printer(QPaintDevice *paintDevice, print_options *printOptions, template_options *templateOptions, PrintMode printMode);
~Printer();
void print();
void print_statistics();
void previewOnePage();
signals:
void progessUpdated(int value);
};
#endif //PRINTER_H