summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Gehad elrobey <gehadelrobey@gmail.com>2015-07-10 20:34:25 +0200
committerGravatar Lubomir I. Ivanov <neolit123@gmail.com>2015-07-20 15:27:41 +0300
commit142fd950c8d69dc4d4aad4034fe65ca400d37783 (patch)
treeeeba4c4164030c04ef21f719fb6067f68fb3eac4
parent4e1a5d954b3cceafce3fb2e4534d7e5c9bd5c770 (diff)
downloadsubsurface-142fd950c8d69dc4d4aad4034fe65ca400d37783.tar.gz
Printing: change QPrinter to parent class QPaintDevice
Use general class QPaintDevice to be used for printing and previewing instances, printing uses a QPrinter object while previewing uses a QPixmap instance. We use static_cast to use the needed object. Signed-off-by: Gehad elrobey <gehadelrobey@gmail.com> Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
-rw-r--r--printer.cpp24
-rw-r--r--printer.h4
2 files changed, 15 insertions, 13 deletions
diff --git a/printer.cpp b/printer.cpp
index e1179319e..da5d5142d 100644
--- a/printer.cpp
+++ b/printer.cpp
@@ -6,9 +6,9 @@
#include <QWebElementCollection>
#include <QWebElement>
-Printer::Printer(QPrinter *printer, print_options *printOptions, template_options *templateOptions)
+Printer::Printer(QPaintDevice *paintDevice, print_options *printOptions, template_options *templateOptions)
{
- this->printer = printer;
+ this->paintDevice = paintDevice;
this->printOptions = printOptions;
this->templateOptions = templateOptions;
dpi = 0;
@@ -49,7 +49,7 @@ void Printer::render(int Pages = 0)
// render the Qwebview
QPainter painter;
QRect viewPort(0, 0, pageSize.width(), pageSize.height());
- painter.begin(printer);
+ painter.begin(paintDevice);
painter.setRenderHint(QPainter::Antialiasing);
painter.setRenderHint(QPainter::SmoothPixmapTransform);
@@ -81,7 +81,7 @@ void Printer::render(int Pages = 0)
// rendering progress is 4/5 of total work
emit(progessUpdated((i * 80.0 / Pages) + done));
if (i < Pages - 1)
- printer->newPage();
+ static_cast<QPrinter*>(paintDevice)->newPage();
}
painter.end();
@@ -106,19 +106,21 @@ void Printer::templateProgessUpdated(int value)
void Printer::print()
{
+ QPrinter *printerPtr;
+ printerPtr = static_cast<QPrinter*>(paintDevice);
+
TemplateLayout t(printOptions, templateOptions);
connect(&t, SIGNAL(progressUpdated(int)), this, SLOT(templateProgessUpdated(int)));
-
- dpi = printer->resolution();
+ dpi = printerPtr->resolution();
//rendering resolution = selected paper size in inchs * printer dpi
- pageSize.setHeight(printer->pageLayout().paintRect(QPageLayout::Inch).height() * dpi);
- pageSize.setWidth(printer->pageLayout().paintRect(QPageLayout::Inch).width() * dpi);
+ pageSize.setHeight(printerPtr->pageLayout().paintRect(QPageLayout::Inch).height() * dpi);
+ pageSize.setWidth(printerPtr->pageLayout().paintRect(QPageLayout::Inch).width() * dpi);
webView->page()->setViewportSize(pageSize);
webView->setHtml(t.generate());
- if (printOptions->color_selected && printer->colorMode()) {
- printer->setColorMode(QPrinter::Color);
+ if (printOptions->color_selected && printerPtr->colorMode()) {
+ printerPtr->setColorMode(QPrinter::Color);
} else {
- printer->setColorMode(QPrinter::GrayScale);
+ printerPtr->setColorMode(QPrinter::GrayScale);
}
// apply user settings
int divesPerPage;
diff --git a/printer.h b/printer.h
index 6c826aa0a..caeb14a1f 100644
--- a/printer.h
+++ b/printer.h
@@ -14,7 +14,7 @@ class Printer : public QObject {
Q_OBJECT
private:
- QPrinter *printer;
+ QPaintDevice *paintDevice;
QWebView *webView;
print_options *printOptions;
template_options *templateOptions;
@@ -28,7 +28,7 @@ private slots:
void templateProgessUpdated(int value);
public:
- Printer(QPrinter *printer, print_options *printOptions, template_options *templateOptions);
+ Printer(QPaintDevice *paintDevice, print_options *printOptions, template_options *templateOptions);
~Printer();
void print();