[qet] [746] Le rendu et le positionnement des textes statiques sont desormais identiques entre l 'editeur d'element et l'editeur de schemas.

[ Thread Index | Date Index | More lists.tuxfamily.org/qet Archives ]


Revision: 746
Author:   xavier
Date:     2009-09-01 22:56:47 +0200 (Tue, 01 Sep 2009)
Log Message:
-----------
Le rendu et le positionnement des textes statiques sont desormais identiques entre l'editeur d'element et l'editeur de schemas.

Modified Paths:
--------------
    branches/0.3/sources/customelement.cpp

Modified: branches/0.3/sources/customelement.cpp
===================================================================
--- branches/0.3/sources/customelement.cpp	2009-08-31 21:26:08 UTC (rev 745)
+++ branches/0.3/sources/customelement.cpp	2009-09-01 20:56:47 UTC (rev 746)
@@ -548,8 +548,35 @@
 	
 	qp.save();
 	setPainterStyle(e, qp);
-	qp.setFont(QETApp::diagramTextsFont(size));
-	qp.drawText(QPointF(pos_x, pos_y), e.attribute("text"));
+	
+	// determine la police a utiliser et en recupere les metriques associees
+	QFont used_font = QETApp::diagramTextsFont(size);
+	QFontMetrics qfm(used_font);
+	
+	// instancie un QTextDocument (comme la classe QGraphicsTextItem) pour
+	// generer le rendu graphique du texte
+	QTextDocument text_document;
+	text_document.setPlainText(e.attribute("text"));
+	
+	/*
+		deplace le systeme de coordonnees du QPainter pour effectuer le rendu au
+		bon endroit ; note : on soustrait l'ascent() de la police pour
+		determiner le coin superieur gauche du texte alors que la position
+		indiquee correspond a la baseline QPointF
+	*/
+	QPointF qpainter_offset(pos_x, pos_y - qfm.ascent());
+	
+	// ajuste le decalage selon la marge du document texte
+#if QT_VERSION >= 0x040500
+	text_document.setDocumentMargin(0.0);
+#else
+	// il semblerait qu'avant Qt 4.5, le documentMargin vaille 2.0 (et pas 4.0)
+	qpainter_offset.ry() -= 2.0;
+#endif
+	
+	qp.translate(qpainter_offset);
+	text_document.drawContents(&qp);
+	
 	qp.restore();
 	return(true);
 }


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/