summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--printer.cpp26
-rw-r--r--printer.h4
2 files changed, 13 insertions, 17 deletions
diff --git a/printer.cpp b/printer.cpp
index f21ff478d..9e5a34b57 100644
--- a/printer.cpp
+++ b/printer.cpp
@@ -6,20 +6,10 @@
#include <QWebElementCollection>
#include <QWebElement>
-#define A4_300DPI_WIDTH 2480
-#define A4_300DPI_HIGHT 3508
-
Printer::Printer(QPrinter *printer, print_options *printOptions)
{
this->printer = printer;
this->printOptions = printOptions;
-
- //override these settings for now.
- printer->setFullPage(true);
- printer->setOrientation(QPrinter::Portrait);
- printer->setPaperSize(QPrinter::A4);
- printer->setPrintRange(QPrinter::AllPages);
- printer->setResolution(300);
done = 0;
}
@@ -51,12 +41,10 @@ void Printer::render()
// render the Qwebview
QPainter painter;
- QSize size(A4_300DPI_WIDTH, A4_300DPI_HIGHT);
- QRect viewPort(0, 0, size.width(), size.height());
+ QRect viewPort(0, 0, pageSize.width(), pageSize.height());
painter.begin(printer);
painter.setRenderHint(QPainter::Antialiasing);
painter.setRenderHint(QPainter::SmoothPixmapTransform);
- webView->page()->setViewportSize(size);
int divesPerPage;
switch (printOptions->p_template) {
@@ -91,8 +79,8 @@ void Printer::render()
}
// scroll the webview to the next page
- webView->page()->mainFrame()->scroll(0, size.height());
- viewPort.adjust(0, size.height(), 0, size.height());
+ webView->page()->mainFrame()->scroll(0, pageSize.height());
+ viewPort.adjust(0, pageSize.height(), 0, pageSize.height());
// rendering progress is 4/5 of total work
emit(progessUpdated((i * 80.0 / Pages) + done));
@@ -123,8 +111,14 @@ void Printer::templateProgessUpdated(int value)
void Printer::print()
{
TemplateLayout t(printOptions);
- connect(&t, SIGNAL(progressUpdated(int)), this, SLOT(templateProgessUpdated(int)));
webView = new QWebView();
+ connect(&t, SIGNAL(progressUpdated(int)), this, SLOT(templateProgessUpdated(int)));
+
+ dpi = printer->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);
+ webView->page()->setViewportSize(pageSize);
webView->setHtml(t.generate());
render();
}
diff --git a/printer.h b/printer.h
index 5bb6e4169..cba82e607 100644
--- a/printer.h
+++ b/printer.h
@@ -16,9 +16,11 @@ private:
QPrinter *printer;
QWebView *webView;
print_options *printOptions;
+ QSize pageSize;
+ int done;
+ int dpi;
void render();
void putProfileImage(QRect box, QRect viewPort, QPainter *painter, struct dive *dive, QPointer<ProfileWidget2> profile);
- int done;
private slots:
void templateProgessUpdated(int value);