void QgsComposerUtils::drawText( QPainter *painter, const QRectF &rect, const QString &text, const QFont &font, const QColor &color, const Qt::AlignmentFlag halignment, const Qt::AlignmentFlag valignment, const int flags ) { if ( !painter ) { return; } //upscale using FONT_WORKAROUND_SCALE //ref: http://osgeo-org.1560.x6.nabble.com/Multi-line-labels-and-font-bug-td4157152.html QFont textFont = scaledFontPixelSize( font ); QRectF scaledRect( rect.x() * FONT_WORKAROUND_SCALE, rect.y() * FONT_WORKAROUND_SCALE, rect.width() * FONT_WORKAROUND_SCALE, rect.height() * FONT_WORKAROUND_SCALE ); painter->save(); painter->setFont( textFont ); if ( color.isValid() ) { painter->setPen( color ); } double scaleFactor = 1.0 / FONT_WORKAROUND_SCALE; painter->scale( scaleFactor, scaleFactor ); painter->drawText( scaledRect, halignment | valignment | flags, text ); painter->restore(); }
double QgsComposerUtils::textWidthMM( const QFont &font, const QString &text ) { //upscale using FONT_WORKAROUND_SCALE //ref: http://osgeo-org.1560.x6.nabble.com/Multi-line-labels-and-font-bug-td4157152.html QFont metricsFont = scaledFontPixelSize( font ); QFontMetricsF fontMetrics( metricsFont ); return ( fontMetrics.width( text ) / FONT_WORKAROUND_SCALE ); }
double QgsLayoutUtils::fontAscentMM( const QFont &font ) { //upscale using FONT_WORKAROUND_SCALE //ref: http://osgeo-org.1560.x6.nabble.com/Multi-line-labels-and-font-bug-td4157152.html QFont metricsFont = scaledFontPixelSize( font ); QFontMetricsF fontMetrics( metricsFont ); return ( fontMetrics.ascent() / FONT_WORKAROUND_SCALE ); }
double QgsComposerUtils::fontHeightCharacterMM( const QFont &font, const QChar &character ) { //upscale using FONT_WORKAROUND_SCALE //ref: http://osgeo-org.1560.x6.nabble.com/Multi-line-labels-and-font-bug-td4157152.html QFont metricsFont = scaledFontPixelSize( font ); QFontMetricsF fontMetrics( metricsFont ); return ( fontMetrics.boundingRect( character ).height() / FONT_WORKAROUND_SCALE ); }
void QgsComposerItem::drawText( QPainter* p, double x, double y, const QString& text, const QFont& font ) const { QFont textFont = scaledFontPixelSize( font ); p->save(); p->setFont( textFont ); double scaleFactor = 1.0 / FONT_WORKAROUND_SCALE; p->scale( scaleFactor, scaleFactor ); p->drawText( QPointF( x * FONT_WORKAROUND_SCALE, y * FONT_WORKAROUND_SCALE ), text ); p->restore(); }
void QgsDecorationGrid::drawText( QPainter* p, double x, double y, const QString& text, const QFont& font ) const { QFont textFont = scaledFontPixelSize( font ); p->save(); p->setFont( textFont ); p->setPen( QColor( 0, 0, 0 ) ); //draw text always in black double scaleFactor = 1.0 / FONT_WORKAROUND_SCALE; p->scale( scaleFactor, scaleFactor ); p->drawText( QPointF( x * FONT_WORKAROUND_SCALE, y * FONT_WORKAROUND_SCALE ), text ); p->restore(); }
void QgsDecorationGrid::drawText( QPainter* p, const QRectF& rect, const QString& text, const QFont& font, Qt::AlignmentFlag halignment, Qt::AlignmentFlag valignment ) const { QFont textFont = scaledFontPixelSize( font ); QRectF scaledRect( rect.x() * FONT_WORKAROUND_SCALE, rect.y() * FONT_WORKAROUND_SCALE, rect.width() * FONT_WORKAROUND_SCALE, rect.height() * FONT_WORKAROUND_SCALE ); p->save(); p->setFont( textFont ); double scaleFactor = 1.0 / FONT_WORKAROUND_SCALE; p->scale( scaleFactor, scaleFactor ); p->drawText( scaledRect, halignment | valignment | Qt::TextWordWrap, text ); p->restore(); }
double QgsComposerUtils::textHeightMM( const QFont &font, const QString &text, double multiLineHeight ) { QStringList multiLineSplit = text.split( "\n" ); int lines = multiLineSplit.size(); //upscale using FONT_WORKAROUND_SCALE //ref: http://osgeo-org.1560.x6.nabble.com/Multi-line-labels-and-font-bug-td4157152.html QFont metricsFont = scaledFontPixelSize( font ); QFontMetricsF fontMetrics( metricsFont ); double fontHeight = fontMetrics.ascent() + fontMetrics.descent(); // ignore +1 for baseline double textHeight = fontMetrics.ascent() + ( double )(( lines - 1 ) * fontHeight * multiLineHeight ); return textHeight / FONT_WORKAROUND_SCALE; }
void QgsComposerUtils::drawText( QPainter *painter, const QPointF &pos, const QString &text, const QFont &font, const QColor &color ) { if ( !painter ) { return; } //upscale using FONT_WORKAROUND_SCALE //ref: http://osgeo-org.1560.x6.nabble.com/Multi-line-labels-and-font-bug-td4157152.html QFont textFont = scaledFontPixelSize( font ); painter->save(); painter->setFont( textFont ); if ( color.isValid() ) { painter->setPen( color ); } double scaleFactor = 1.0 / FONT_WORKAROUND_SCALE; painter->scale( scaleFactor, scaleFactor ); painter->drawText( pos * FONT_WORKAROUND_SCALE, text ); painter->restore(); }
double QgsDecorationGrid::fontAscentMillimeters( const QFont& font ) const { QFont metricsFont = scaledFontPixelSize( font ); QFontMetricsF fontMetrics( metricsFont ); return ( fontMetrics.ascent() / FONT_WORKAROUND_SCALE ); }
double QgsDecorationGrid::fontHeightCharacterMM( const QFont& font, QChar c ) const { QFont metricsFont = scaledFontPixelSize( font ); QFontMetricsF fontMetrics( metricsFont ); return ( fontMetrics.boundingRect( c ).height() / FONT_WORKAROUND_SCALE ); }
double QgsDecorationGrid::textWidthMillimeters( const QFont& font, const QString& text ) const { QFont metricsFont = scaledFontPixelSize( font ); QFontMetrics fontMetrics( metricsFont ); return ( fontMetrics.width( text ) / FONT_WORKAROUND_SCALE ); }
double QgsComposerItem::fontDescentMillimeters( const QFont& font ) const { QFont metricsFont = scaledFontPixelSize( font ); QFontMetricsF fontMetrics( metricsFont ); return ( fontMetrics.descent() / FONT_WORKAROUND_SCALE ); }
double QgsComposerItem::fontHeightCharacterMM( const QFont& font, const QChar& c ) const { QFont metricsFont = scaledFontPixelSize( font ); QFontMetricsF fontMetrics( metricsFont ); return ( fontMetrics.boundingRect( c ).height() / FONT_WORKAROUND_SCALE ); }
double QgsLegendSettings::fontAscentMillimeters( const QFont& font ) const { QFont metricsFont = scaledFontPixelSize( font ); QFontMetricsF fontMetrics( metricsFont ); return ( fontMetrics.ascent() / FONT_WORKAROUND_SCALE ); }
double QgsLegendSettings::textWidthMillimeters( const QFont& font, const QString& text ) const { QFont metricsFont = scaledFontPixelSize( font ); QFontMetricsF fontMetrics( metricsFont ); return ( fontMetrics.width( text ) / FONT_WORKAROUND_SCALE ); }