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";