diff options
author | Gehad elrobey <gehadelrobey@gmail.com> | 2015-07-10 20:34:25 +0200 |
---|---|---|
committer | Lubomir I. Ivanov <neolit123@gmail.com> | 2015-07-20 15:27:41 +0300 |
commit | 142fd950c8d69dc4d4aad4034fe65ca400d37783 (patch) | |
tree | eeba4c4164030c04ef21f719fb6067f68fb3eac4 | |
parent | 4e1a5d954b3cceafce3fb2e4534d7e5c9bd5c770 (diff) | |
download | subsurface-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.cpp | 24 | ||||
-rw-r--r-- | printer.h | 4 |
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; @@ -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(); |