[Marble-commits] KDE/kdeedu/marble/src/lib/routing
Dennis Nienhüser
earthwings at gentoo.org
Wed Mar 31 17:16:50 CEST 2010
SVN commit 1109638 by nienhueser:
Choose a suitable font size that fits in the pixmap circle.
M +25 -3 RouteSkeleton.cpp
--- trunk/KDE/kdeedu/marble/src/lib/routing/RouteSkeleton.cpp #1109637:1109638
@@ -29,6 +29,8 @@
RouteSkeleton::AvoidFeatures m_avoidFeatures;
+ int m_fontSize;
+
/** Determines a suitable index for inserting a via point */
int viaIndex(const GeoDataCoordinates &position) const;
@@ -37,7 +39,8 @@
RouteSkeletonPrivate::RouteSkeletonPrivate() :
m_routePreference(RouteSkeleton::CarFastest),
- m_avoidFeatures(RouteSkeleton::AvoidNone)
+ m_avoidFeatures(RouteSkeleton::AvoidNone),
+ m_fontSize(0)
{
// nothing to do
}
@@ -152,10 +155,29 @@
painter.drawEllipse(1,1,13,13);
painter.setBrush(QColor(Qt::black));
- // Paint a character denoting the position (0=A, 1=B, 2=C, ...)
char text = char('A' + position);
- painter.drawText(2,2,12,12, Qt::AlignCenter, QString(text));
+ // Choose a suitable font size once (same for all pixmaps)
+ if (d->m_fontSize == 0) {
+ QFont font = painter.font();
+ d->m_fontSize = 20;
+ while (d->m_fontSize-- > 0) {
+ font.setPointSize(d->m_fontSize);
+ QFontMetrics fontMetric(font);
+ if (fontMetric.width(text) <= 12 && fontMetric.height() <= 12) {
+ break;
+ }
+ }
+ }
+
+ Q_ASSERT(d->m_fontSize);
+ QFont font = painter.font();
+ font.setPointSize(d->m_fontSize);
+ painter.setFont(font);
+
+ // Paint a character denoting the position (0=A, 1=B, 2=C, ...)
+ painter.drawText(2, 2, 12, 12, Qt::AlignCenter, QString(text));
+
d->m_pixmapCache.insert(position, QPixmap::fromImage(result));
return pixmap(position);
}
More information about the Marble-commits
mailing list