diff --git a/include/wkhtmltox/converter.hh b/include/wkhtmltox/converter.hh
index d620b1169..294e3221d 100644
--- a/include/wkhtmltox/converter.hh
+++ b/include/wkhtmltox/converter.hh
@@ -53,6 +53,7 @@ signals:
void checkboxCheckedSvgChanged(const QString & path);
void radiobuttonSvgChanged(const QString & path);
void radiobuttonCheckedSvgChanged(const QString & path);
+ void zoomFactorChanged(float zoomFactor);
public slots:
void beginConvertion();
bool convert();
diff --git a/include/wkhtmltox/utilities.hh b/include/wkhtmltox/utilities.hh
index fbcb9b100..b9dd0900b 100644
--- a/include/wkhtmltox/utilities.hh
+++ b/include/wkhtmltox/utilities.hh
@@ -33,10 +33,13 @@
*/
class DLL_PUBLIC MyLooksStyle: public QProxyStyle {
Q_OBJECT
+private:
+ float zoomFactor;
public:
typedef QProxyStyle parent_t;
MyLooksStyle();
void drawPrimitive( PrimitiveElement element, const QStyleOption * option, QPainter * painter, const QWidget * widget = 0 ) const;
+ int pixelMetric(PixelMetric metric, const QStyleOption *option, const QWidget *widget) const;
bool weAreDrawingForms;
static QSvgRenderer * checkbox;
@@ -49,6 +52,7 @@ public slots:
void setCheckboxCheckedSvg(const QString & path);
void setRadioButtonSvg(const QString & path);
void setRadioButtonCheckedSvg(const QString & path);
+ void setZoomFactor(float zoomFactor);
};
DLL_PUBLIC int handleError(bool success, int errorCode);
diff --git a/src/lib/converter.cc b/src/lib/converter.cc
index bc1fe54d9..3d734794b 100644
--- a/src/lib/converter.cc
+++ b/src/lib/converter.cc
@@ -168,6 +168,7 @@ void Converter::cancel() {
}
void Converter::emitCheckboxSvgs(const settings::LoadPage & ls) {
+ emit zoomFactorChanged(ls.zoomFactor);
emit checkboxSvgChanged(ls.checkboxSvg);
emit checkboxCheckedSvgChanged(ls.checkboxCheckedSvg);
emit radiobuttonSvgChanged(ls.radiobuttonSvg);
diff --git a/src/lib/pdf_c_bindings.cc b/src/lib/pdf_c_bindings.cc
index 852b5f64e..3d234af2b 100644
--- a/src/lib/pdf_c_bindings.cc
+++ b/src/lib/pdf_c_bindings.cc
@@ -273,6 +273,7 @@ MyPdfConverter::MyPdfConverter(settings::PdfGlobal * gs):
connect(&converter, SIGNAL(checkboxCheckedSvgChanged(const QString &)), a->style(), SLOT(setCheckboxCheckedSvg(const QString &)));
connect(&converter, SIGNAL(radiobuttonSvgChanged(const QString &)), a->style(), SLOT(setRadioButtonSvg(const QString &)));
connect(&converter, SIGNAL(radiobuttonCheckedSvgChanged(const QString &)), a->style(), SLOT(setRadioButtonCheckedSvg(const QString &)));
+ connect(&converter, SIGNAL(zoomFactorChanged(float)), a->style(), SLOT(setZoomFactor(float)));
}
MyPdfConverter::~MyPdfConverter() {
diff --git a/src/lib/utilities.cc b/src/lib/utilities.cc
index 14c1cc10e..5c099b866 100644
--- a/src/lib/utilities.cc
+++ b/src/lib/utilities.cc
@@ -93,7 +93,13 @@ void MyLooksStyle::setRadioButtonCheckedSvg(const QString & path) {
"\n", 11, 11);
}
-MyLooksStyle::MyLooksStyle(): weAreDrawingForms(false) {
+void MyLooksStyle::setZoomFactor(float zoomFactor)
+{
+ this->zoomFactor = zoomFactor;
+}
+
+MyLooksStyle::MyLooksStyle(): weAreDrawingForms(false),
+ zoomFactor(1.0) {
}
void MyLooksStyle::producingForms(bool f) {weAreDrawingForms=f;}
@@ -137,6 +143,21 @@ void MyLooksStyle::drawPrimitive( PrimitiveElement element, const QStyleOption *
}
}
+int MyLooksStyle::pixelMetric(PixelMetric metric, const QStyleOption *option, const QWidget *widget) const {
+ switch (metric)
+ {
+ case PM_ExclusiveIndicatorHeight:
+ case PM_ExclusiveIndicatorWidth:
+ case PM_IndicatorHeight:
+ case PM_IndicatorWidth:
+ case PM_CheckBoxLabelSpacing:
+ case PM_RadioButtonLabelSpacing:
+ return parent_t::pixelMetric(metric, option, widget)*zoomFactor;
+ default:
+ return parent_t::pixelMetric(metric, option, widget);
+ }
+}
+
int handleError(bool success, int errorCode) {
QHash cm;
cm[400] = "Bad Request";