From adc6c5c69cf74ec2656b2fb9adf49bd05f0144d3 Mon Sep 17 00:00:00 2001 From: telwertowski Date: Fri, 7 Oct 2005 04:55:03 +0000 Subject: [PATCH] Use different print font scaling factor for Mac. Define factor in header file so it can be adjusted with one edit. git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@4041 c8812cc2-4d05-0410-92ff-de0c093fc19c --- src/qgscomposerlabel.cpp | 2 +- src/qgscomposermap.cpp | 3 +-- src/qgscomposerscalebar.cpp | 2 +- src/qgscomposervectorlegend.cpp | 3 +-- src/qgscomposition.h | 17 ++++++++++++++++- 5 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/qgscomposerlabel.cpp b/src/qgscomposerlabel.cpp index bd254631b6b..7eab2448b95 100644 --- a/src/qgscomposerlabel.cpp +++ b/src/qgscomposerlabel.cpp @@ -158,7 +158,7 @@ void QgsComposerLabel::draw ( QPainter & painter ) // In any case, each font scales in in different way even if painter.scale() // is used instead of font size!!! -> Postscript is never exactly the same as // in preview. - double factor = 2.45; + double factor = QgsComposition::psFontScaleFactor(); double pssize = factor * 72.0 * mFont.pointSizeFloat() / mComposition->resolution(); double psscale = pssize/size; diff --git a/src/qgscomposermap.cpp b/src/qgscomposermap.cpp index 984b1085fbe..f5d04762317 100644 --- a/src/qgscomposermap.cpp +++ b/src/qgscomposermap.cpp @@ -178,8 +178,7 @@ void QgsComposerMap::draw ( QPainter *painter, QgsRect *extent, QgsMapToPixel *t if ( vector->labelOn() ) { double fontScale = 25.4 * mFontScale * mComposition->scale() / 72; if ( plotStyle() == QgsComposition::Postscript ) { - // I have no idea why 2.54 - it is an empirical value - fontScale = 2.54 * 72.0 / mComposition->resolution(); + fontScale = QgsComposition::psFontScaleFactor() * 72.0 / mComposition->resolution(); } vector->drawLabels ( painter, extent, transform, device, fontScale ); } diff --git a/src/qgscomposerscalebar.cpp b/src/qgscomposerscalebar.cpp index a5f41ab9b9c..53dfd6c0ed4 100644 --- a/src/qgscomposerscalebar.cpp +++ b/src/qgscomposerscalebar.cpp @@ -220,7 +220,7 @@ QRect QgsComposerScalebar::render ( QPainter *p ) // In any case, each font scales in in different way even if painter.scale() // is used instead of font size!!! -> Postscript is never exactly the same as // in preview. - double factor = 2.45; + double factor = QgsComposition::psFontScaleFactor(); double pssize = factor * 72.0 * mFont.pointSizeFloat() / mComposition->resolution(); double psscale = pssize/size; diff --git a/src/qgscomposervectorlegend.cpp b/src/qgscomposervectorlegend.cpp index a0d3d8e83c6..9362f75c9e0 100644 --- a/src/qgscomposervectorlegend.cpp +++ b/src/qgscomposervectorlegend.cpp @@ -210,13 +210,12 @@ QRect QgsComposerVectorLegend::render ( QPainter *p ) // Fonts for rendering - // I have no idea why 2.54 - it is an empirical value // TODO: For output to Postscript the font must be scaled. But how? // The factor is an empirical value. // In any case, each font scales in in different way even if painter.scale() // is used instead of font size!!! -> Postscript is never exactly the same as // in preview. - double psFontFactor = 2.45; + double psFontFactor = QgsComposition::psFontScaleFactor(); double psTitleSize = psFontFactor * 72.0 * mTitleFont.pointSizeFloat() / mComposition->resolution(); double psSectionSize = psFontFactor * 72.0 * mSectionFont.pointSizeFloat() / mComposition->resolution(); diff --git a/src/qgscomposition.h b/src/qgscomposition.h index acff423565c..a09f41b4066 100644 --- a/src/qgscomposition.h +++ b/src/qgscomposition.h @@ -99,6 +99,21 @@ public: Postscript // Fonts need different scaling! }; + /** \brief Font scaling factor for PostScript output + * + * For output to Postscript the font must be scaled. But how? + * The factor is an empirical value. In any case, each font scales + * in in different way even if painter.scale() is used instead of + * font size!!! -> Postscript is never exactly the same as in preview. + */ + static const double psFontScaleFactor() { +#ifdef Q_OS_MACX + return 1.85; +#else + return 2.45; // I have no idea why 2.45 - it is an empirical value +#endif + } + /** \brief Composition ID */ int id ( void ); @@ -290,7 +305,7 @@ private: /** \brief Temporary item used as pointer to new objecs which must be drawn */ QCanvasItem *mNewCanvasItem; - /** \breif Resolution in DPI */ + /** \brief Resolution in DPI */ int mResolution; /** \brief canvas scale */