[QGIS Commit] r9048 - branches/advanced_printing_branch/src/app/composer

svn_qgis at osgeo.org svn_qgis at osgeo.org
Tue Aug 12 08:13:43 EDT 2008


Author: mhugent
Date: 2008-08-12 08:13:42 -0400 (Tue, 12 Aug 2008)
New Revision: 9048

Modified:
   branches/advanced_printing_branch/src/app/composer/qgscomposerlabel.cpp
   branches/advanced_printing_branch/src/app/composer/qgscomposerlabel.h
   branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.cpp
   branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.h
   branches/advanced_printing_branch/src/app/composer/qgscomposerscalebar.cpp
   branches/advanced_printing_branch/src/app/composer/qgscomposerscalebar.h
   branches/advanced_printing_branch/src/app/composer/qgscomposition.cpp
   branches/advanced_printing_branch/src/app/composer/qgscomposition.h
Log:
Text size in composer label, legend and scalebar is now in points

Modified: branches/advanced_printing_branch/src/app/composer/qgscomposerlabel.cpp
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposerlabel.cpp	2008-08-12 06:30:51 UTC (rev 9047)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposerlabel.cpp	2008-08-12 12:13:42 UTC (rev 9048)
@@ -21,7 +21,15 @@
 
 QgsComposerLabel::QgsComposerLabel( QgsComposition *composition): QgsComposerItem(composition), mMargin(0.0)
 {
-  mFont.setPointSizeF(3);
+  //default font size is 10 point
+  if(mComposition)
+    {
+      mFont.setPixelSize(mComposition->pixelFontSize(10));
+    }
+  else
+    {
+      mFont.setPixelSize(4);
+    }
 }
 
 QgsComposerLabel::~QgsComposerLabel()
@@ -55,7 +63,17 @@
 
 void QgsComposerLabel::setFont(const QFont& f)
 {
-  mFont = f;
+  //set font size in pixels for proper preview and printout
+  if(mComposition)
+    {
+      int pixelSize = mComposition->pixelFontSize(f.pointSizeF());
+      mFont = f;
+      mFont.setPixelSize(pixelSize);
+    }
+  else
+    {
+      mFont = f;
+    }
   adjustSizeToText();
 }
 
@@ -65,6 +83,18 @@
   setSceneRect(QRectF(transform().dx(), transform().dy(), fontInfo.width(mText) + 2 * mMargin, fontInfo.ascent() + 2 * mMargin));
 }
 
+QFont QgsComposerLabel::font() const
+{
+  if(mComposition) //make pixel to point conversion to show correct point value in dialogs
+    {
+      double pointSize = mComposition->pointFontSize(mFont.pixelSize());
+      QFont returnFont = mFont;
+      returnFont.setPointSize(pointSize);
+      return returnFont;
+    }
+  return mFont;
+}
+
 bool QgsComposerLabel::writeXML(QDomElement& elem, QDomDocument & doc)
 {
   if(elem.isNull())

Modified: branches/advanced_printing_branch/src/app/composer/qgscomposerlabel.h
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposerlabel.h	2008-08-12 06:30:51 UTC (rev 9047)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposerlabel.h	2008-08-12 12:13:42 UTC (rev 9048)
@@ -33,7 +33,7 @@
 
   QString text() {return mText;}
   void setText(const QString& text);
-  QFont font() {return mFont;}
+  QFont font() const;
   void setFont(const QFont& f);
   double margin(){return mMargin;}
   void setMargin(double m){mMargin = m;}

Modified: branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.cpp
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.cpp	2008-08-12 06:30:51 UTC (rev 9047)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.cpp	2008-08-12 12:13:42 UTC (rev 9048)
@@ -29,9 +29,18 @@
   mLegendModel.setLayerSet(idList);
 
   //default font size
-  mTitleFont.setPointSizeF(4);
-  mLayerFont.setPointSizeF(3);
-  mItemFont.setPointSizeF(2);
+  if(mComposition)
+    {
+      mTitleFont.setPixelSize(mComposition->pixelFontSize(14));
+      mLayerFont.setPixelSize(mComposition->pixelFontSize(12));
+      mItemFont.setPixelSize(mComposition->pixelFontSize(12));
+    }
+  else
+    {
+      mTitleFont.setPixelSize(5);
+      mLayerFont.setPixelSize(4);
+      mItemFont.setPixelSize(3);
+    }
   mSymbolWidth = 7;
   mSymbolHeight = 4;
   adjustBoxSize();
@@ -335,6 +344,93 @@
   update();
 }
 
+void QgsComposerLegend::setTitleFont(const QFont& f)
+{
+  if(mComposition)
+    {
+      int pixelSize = mComposition->pixelFontSize(f.pointSizeF());
+      mTitleFont = f;
+      mTitleFont.setPixelSize(pixelSize);
+    }
+  else
+    {
+      mTitleFont = f;
+    }
+
+  adjustBoxSize();
+  update();
+}
+
+void QgsComposerLegend::setLayerFont(const QFont& f)
+{
+  if(mComposition)
+    {
+      int pixelSize = mComposition->pixelFontSize(f.pointSizeF());
+      mLayerFont = f;
+      mLayerFont.setPixelSize(pixelSize);
+    }
+  else
+    {
+      mLayerFont = f;
+    }
+  
+  adjustBoxSize();
+  update();
+}
+
+void QgsComposerLegend::setItemFont(const QFont& f)
+{
+  if(mComposition)
+    {
+      int pixelSize = mComposition->pixelFontSize(f.pointSizeF());
+      mItemFont = f;
+      mItemFont.setPixelSize(pixelSize);
+    }
+  else
+    {
+      mItemFont = f;
+    }
+  
+  adjustBoxSize();
+  update();
+}
+
+QFont QgsComposerLegend::titleFont() const
+{
+  if(mComposition) //make pixel to point conversion to show correct point value in dialogs
+    {
+      double pointSize = mComposition->pointFontSize(mTitleFont.pixelSize());
+      QFont returnFont = mTitleFont;
+      returnFont.setPointSize(pointSize);
+      return returnFont;
+    }
+  return mTitleFont;
+}
+
+QFont QgsComposerLegend::layerFont() const
+{
+  if(mComposition) //make pixel to point conversion to show correct point value in dialogs
+    {
+      double pointSize = mComposition->pointFontSize(mLayerFont.pixelSize());
+      QFont returnFont = mLayerFont;
+      returnFont.setPointSize(pointSize);
+      return returnFont;
+    }
+  return mLayerFont;
+}
+
+QFont QgsComposerLegend::itemFont() const
+{
+  if(mComposition) //make pixel to point conversion to show correct point value in dialogs
+    {
+      double pointSize = mComposition->pointFontSize(mItemFont.pixelSize());
+      QFont returnFont = mItemFont;
+      returnFont.setPointSize(pointSize);
+      return returnFont;
+    }
+  return mItemFont;
+}
+
 bool QgsComposerLegend::writeXML(QDomElement& elem, QDomDocument & doc)
 {
   if(elem.isNull())

Modified: branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.h
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.h	2008-08-12 06:30:51 UTC (rev 9047)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.h	2008-08-12 12:13:42 UTC (rev 9048)
@@ -48,14 +48,14 @@
   void setTitle(const QString& t) {mTitle = t;}
   QString title() const {return mTitle;}
 
-  const QFont& titleFont() const {return mTitleFont;}
-  void setTitleFont(const QFont& f){mTitleFont = f;}
+  QFont titleFont() const;
+  void setTitleFont(const QFont& f);
 
-  const QFont& layerFont() const {return mLayerFont;}
-  void setLayerFont(const QFont& f){mLayerFont = f;}
+  QFont layerFont() const;
+  void setLayerFont(const QFont& f);
 
-  const QFont& itemFont() const {return mItemFont;}
-  void setItemFont(const QFont& f){mItemFont = f;}
+  QFont itemFont() const;
+  void setItemFont(const QFont& f);
 
   double boxSpace() const {return mBoxSpace;}
   void setBoxSpace(double s){mBoxSpace = s;}

Modified: branches/advanced_printing_branch/src/app/composer/qgscomposerscalebar.cpp
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposerscalebar.cpp	2008-08-12 06:30:51 UTC (rev 9047)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposerscalebar.cpp	2008-08-12 12:13:42 UTC (rev 9048)
@@ -123,7 +123,15 @@
   mBrush.setColor(QColor(0, 0, 0));
   mBrush.setStyle(Qt::SolidPattern);
 
-  mFont.setPointSizeF(4);
+  //default size 12 point
+  if(mComposition)
+    {
+      mFont.setPixelSize(mComposition->pixelFontSize(12));
+    }
+  else
+    {
+      mFont.setPixelSize(5);
+    }
 
   mLabelBarSpace = 3.0;
   mBoxContentSpace = 1.0;
@@ -255,6 +263,37 @@
     }
 }
 
+QFont QgsComposerScaleBar::font() const
+{
+#if 0 //needed by scale bar style, therefore don't convert back to points
+  if(mComposition) //make pixel to point conversion to show correct point value in dialogs
+    {
+      double pointSize = mComposition->pointFontSize(mFont.pixelSize());
+      QFont returnFont = mFont;
+      returnFont.setPointSize(pointSize);
+      return returnFont;
+    }
+#endif //0
+  return mFont;
+}
+
+void QgsComposerScaleBar::setFont(const QFont& font)
+{
+   //set font size in pixels for proper preview and printout
+  if(mComposition)
+    {
+      int pixelSize = mComposition->pixelFontSize(font.pointSizeF());
+      mFont = font;
+      mFont.setPixelSize(pixelSize);
+    }
+  else
+    {
+      mFont = font;
+    }
+  adjustBoxSize();
+  update();
+}
+
 bool QgsComposerScaleBar::writeXML(QDomElement& elem, QDomDocument & doc)
 {
   if(elem.isNull())

Modified: branches/advanced_printing_branch/src/app/composer/qgscomposerscalebar.h
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposerscalebar.h	2008-08-12 06:30:51 UTC (rev 9047)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposerscalebar.h	2008-08-12 12:13:42 UTC (rev 9048)
@@ -52,8 +52,8 @@
   QString unitLabeling() const {return mUnitLabeling;}
   void setUnitLabeling(const QString& label){mUnitLabeling = label;}
 
-  QFont font() const {return mFont;}
-  void setFont(const QFont& font){mFont = font;}
+  QFont font() const;
+  void setFont(const QFont& font);
 
   QPen pen() const {return mPen;}
   void setPen(const QPen& pen){mPen = pen;}

Modified: branches/advanced_printing_branch/src/app/composer/qgscomposition.cpp
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposition.cpp	2008-08-12 06:30:51 UTC (rev 9047)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposition.cpp	2008-08-12 12:13:42 UTC (rev 9048)
@@ -138,6 +138,19 @@
   return 0;
 }
 
+int QgsComposition::pixelFontSize(double pointSize) const
+{
+  //in QgsComposition, one unit = one mm
+  double sizeMM = pointSize * 0.3527;
+  return sizeMM;
+}
+
+double QgsComposition::pointFontSize(int pixelSize) const
+{
+  double sizePoint = pixelSize / 0.3527;
+  return sizePoint;
+}
+
 bool QgsComposition::writeXML(QDomElement& composerElem, QDomDocument& doc)
 {
   if(composerElem.isNull())

Modified: branches/advanced_printing_branch/src/app/composer/qgscomposition.h
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposition.h	2008-08-12 06:30:51 UTC (rev 9047)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposition.h	2008-08-12 12:13:42 UTC (rev 9048)
@@ -72,6 +72,14 @@
   QgsComposition::PlotStyle plotStyle() const {return mPlotStyle;}
   void setPlotStyle(QgsComposition::PlotStyle style) {mPlotStyle = style;}
 
+  /**Returns the pixel font size for a font that has point size set.
+   The result depends on the resolution (dpi) and of the preview mode. Each item that sets 
+  a font should call this function before drawing text*/
+  int pixelFontSize(double pointSize) const;
+
+  /**Does the inverse calculation and returns points for pixels (equals to mm in QgsComposition)*/
+  double pointFontSize(int pixelSize) const;
+
   /**Writes settings to xml (paper dimension)*/
   bool writeXML(QDomElement& composerElem, QDomDocument& doc);
 



More information about the QGIS-commit mailing list