aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Lubomir I. Ivanov <neolit123@gmail.com>2013-07-10 16:04:00 +0300
committerGravatar Lubomir I. Ivanov <neolit123@gmail.com>2013-07-10 16:18:16 +0300
commit20804b16d333f0a9d8b9f5e6eba05eddd60cc68e (patch)
tree283106304ecc3c434fba10cba3279e623492b9d2
parent41bad7695ee40571062a370610e6ca518295e3c7 (diff)
downloadsubsurface-20804b16d333f0a9d8b9f5e6eba05eddd60cc68e.tar.gz
Print: add a setup() method to PrintLayout
The setup() method will be called each time to obtain the current printer settings. Also it calculates required scalling based on screen agains printer DPI. Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
-rw-r--r--qt-ui/printdialog.cpp5
-rw-r--r--qt-ui/printlayout.cpp17
-rw-r--r--qt-ui/printlayout.h4
3 files changed, 25 insertions, 1 deletions
diff --git a/qt-ui/printdialog.cpp b/qt-ui/printdialog.cpp
index 9774a79f6..5652101ff 100644
--- a/qt-ui/printdialog.cpp
+++ b/qt-ui/printdialog.cpp
@@ -43,6 +43,9 @@ void PrintDialog::runDialog()
void PrintDialog::printClicked(void)
{
- // nop for now
+ // temporary
+ printer.setOutputFileName("print.pdf");
+ printer.setOutputFormat(QPrinter::PdfFormat);
+ // ---------
printLayout->print();
}
diff --git a/qt-ui/printlayout.cpp b/qt-ui/printlayout.cpp
index 7716883e8..be5d955ea 100644
--- a/qt-ui/printlayout.cpp
+++ b/qt-ui/printlayout.cpp
@@ -1,4 +1,6 @@
#include <QPainter>
+#include <QDesktopWidget>
+#include <QApplication>
#include "mainwindow.h"
#include "printlayout.h"
@@ -21,6 +23,8 @@ PrintLayout::PrintLayout(PrintDialog *dialogPtr, QPrinter *printerPtr, struct op
void PrintLayout::print()
{
+ // we call setup each time to check if the printer properties have changed
+ setup();
switch (printOptions->type) {
case options::PRETTY:
printSixDives();
@@ -34,6 +38,19 @@ void PrintLayout::print()
}
}
+void PrintLayout::setup()
+{
+ QDesktopWidget *desktop = QApplication::desktop();
+ screenDpiX = desktop->physicalDpiX();
+ screenDpiY = desktop->physicalDpiX();
+
+ printerDpi = printer->resolution();
+ pageRect = printer->pageRect();
+
+ scaleX = (qreal)printerDpi/(qreal)screenDpiX;
+ scaleY = (qreal)printerDpi/(qreal)screenDpiY;
+}
+
void PrintLayout::printSixDives()
{
// nop
diff --git a/qt-ui/printlayout.h b/qt-ui/printlayout.h
index e9129bff6..120f50d61 100644
--- a/qt-ui/printlayout.h
+++ b/qt-ui/printlayout.h
@@ -20,7 +20,11 @@ private:
struct options *printOptions;
QPainter painter;
+ int screenDpiX, screenDpiY, printerDpi;
+ qreal scaleX, scaleY;
+ QRect pageRect;
+ void setup();
void printSixDives();
void printTwoDives();
void printTable();