]> git.mxchange.org Git - flightgear.git/commitdiff
Improve rendering of longer parking names.
authorJames Turner <zakalawe@mac.com>
Sat, 16 Jul 2016 16:49:12 +0000 (17:49 +0100)
committerRoland Haeder <roland@mxchange.org>
Thu, 22 Sep 2016 21:27:47 +0000 (23:27 +0200)
src/GUI/AirportDiagram.cxx

index f5eaf7a073a8fbdec6154dd1c1a469eb1d3db984..6e07fb94bbb154a123ec23a0567b0f535558eec3 100644 (file)
@@ -399,13 +399,27 @@ void AirportDiagram::drawParking(QPainter* painter, const ParkingData& p) const
 
     painter->drawPath(useLeftIcon ? m_parkingIconLeftPath : m_parkingIconPath);
 
-    painter->fillRect(labelRect, Qt::white);
+    // ensure the selection colour is quite visible, by not filling
+    // with white when selected
+    if (p.parking != m_selectedParking) {
+        painter->fillRect(labelRect, Qt::white);
+    }
+
+    QFont f = painter->font();
+    f.setPixelSize(20);
+    painter->setFont(f);
+
+    QString parkingName = QString::fromStdString(p.parking->name());
+    int textFlags = Qt::AlignVCenter | Qt::AlignHCenter | Qt::TextWordWrap;
+    QRectF bounds = painter->boundingRect(labelRect, textFlags, parkingName);
+    if (bounds.height() > labelRect.height()) {
+        f.setPixelSize(10);
+        painter->setFont(f);
+    }
 
     // draw text
     painter->setPen(Qt::black);
-    painter->drawText(labelRect,
-                      Qt::AlignVCenter | Qt::AlignHCenter,
-                      QString::fromStdString(p.parking->name()));
+    painter->drawText(labelRect, textFlags, parkingName);
 }
 
 AirportDiagram::ParkingData AirportDiagram::findParkingData(const FGParkingRef &pk) const
@@ -424,10 +438,6 @@ void AirportDiagram::drawParkings(QPainter* painter) const
     painter->save();
     QTransform t = painter->transform();
 
-    QFont f = painter->font();
-    f.setPixelSize(16);
-    painter->setFont(f);
-
     Q_FOREACH(const ParkingData& p, m_parking) {
         if (p.parking == m_selectedParking) {
             continue; // skip and draw last
@@ -505,7 +515,6 @@ void AirportDiagram::mouseReleaseEvent(QMouseEvent* me)
         }
     }
 
-
     Q_FOREACH(const HelipadData& pad, m_helipads) {
         QPainterPath pp = pathForHelipad(pad, t);
         if (pp.contains(me->pos())) {