[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