[qet] [744] Amelioration du positionnement des textes dans l'editeur

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


Revision: 744
Author:   xavier
Date:     2009-08-26 01:31:31 +0200 (Wed, 26 Aug 2009)
Log Message:
-----------
Amelioration du positionnement des textes dans l'editeur
Harmonisation des boundingRect des classes PartText{Field,}

Modified Paths:
--------------
    branches/0.3/sources/editor/parttext.cpp
    branches/0.3/sources/editor/parttextfield.cpp

Modified: branches/0.3/sources/editor/parttext.cpp
===================================================================
--- branches/0.3/sources/editor/parttext.cpp	2009-08-25 23:25:28 UTC (rev 743)
+++ branches/0.3/sources/editor/parttext.cpp	2009-08-25 23:31:31 UTC (rev 744)
@@ -31,6 +31,7 @@
 	QGraphicsTextItem(parent, scene),
 	CustomElementPart(editor)
 {
+	document() -> setDocumentMargin(1.0);
 	setDefaultTextColor(Qt::black);
 	setFont(QETApp::diagramTextsFont());
 	setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
@@ -69,8 +70,8 @@
 */
 const QDomElement PartText::toXml(QDomDocument &xml_document) const {
 	QDomElement xml_element = xml_document.createElement("text");
-	xml_element.setAttribute("x", QString("%1").arg((scenePos() + margin()).x()));
-	xml_element.setAttribute("y", QString("%1").arg((scenePos() + margin()).y()));
+	xml_element.setAttribute("x", QString("%1").arg(pos().x()));
+	xml_element.setAttribute("y", QString("%1").arg(pos().y()));
 	xml_element.setAttribute("text", toPlainText());
 	xml_element.setAttribute("size", font().pointSize());
 	return(xml_element);
@@ -84,8 +85,8 @@
 }
 
 /**
-	Retourne la position du texte, l'origine etant le point en bas a gauche du
-	texte (et pas du cadre)
+	Retourne la position du texte, l'origine etant le point a gauche du texte,
+	sur la baseline de la premiere ligne
 	@return la position du texte
 */
 QPointF PartText::pos() const {
@@ -116,8 +117,10 @@
 	QFont used_font = font();
 	QFontMetrics qfm(used_font);
 	QPointF margin(
-		(boundingRect().width () - qfm.width(toPlainText())) / 2.0,
-		((boundingRect().height() - used_font.pointSizeF()) / 3.0) + used_font.pointSizeF()
+		// marge autour du texte
+		document() -> documentMargin(),
+		// marge au-dessus du texte + distance entre le plafond du texte et la baseline
+		document() -> documentMargin() + qfm.ascent()
 	);
 	return(margin);
 }
@@ -228,7 +231,7 @@
 */
 QRectF PartText::boundingRect() const {
 	QRectF r = QGraphicsTextItem::boundingRect();
-	r.adjust(0.0, -2.0, 0.0, 0.0);
+	r.adjust(0.0, -1.1, 0.0, 0.0);
 	return(r);
 }
 

Modified: branches/0.3/sources/editor/parttextfield.cpp
===================================================================
--- branches/0.3/sources/editor/parttextfield.cpp	2009-08-25 23:25:28 UTC (rev 743)
+++ branches/0.3/sources/editor/parttextfield.cpp	2009-08-25 23:31:31 UTC (rev 744)
@@ -71,8 +71,8 @@
 */
 const QDomElement PartTextField::toXml(QDomDocument &xml_document) const {
 	QDomElement xml_element = xml_document.createElement("input");
-	xml_element.setAttribute("x", QString("%1").arg((scenePos() + margin()).x()));
-	xml_element.setAttribute("y", QString("%1").arg((scenePos() + margin()).y()));
+	xml_element.setAttribute("x", QString("%1").arg(pos().x()));
+	xml_element.setAttribute("y", QString("%1").arg(pos().y()));
 	xml_element.setAttribute("text", toPlainText());
 	xml_element.setAttribute("size", font().pointSize());
 	if (follow_parent_rotations) xml_element.setAttribute("rotate", "true");
@@ -87,8 +87,8 @@
 }
 
 /**
-	Retourne la position du texte, l'origine etant le point en bas a gauche du
-	texte (et pas du cadre)
+	Retourne la position du texte, l'origine etant le milieu du bord gauche du
+	champ
 	@return la position du texte
 */
 QPointF PartTextField::pos() const {
@@ -132,13 +132,7 @@
 	@return Les coordonnees du point situe en bas a gauche du texte.
 */
 QPointF PartTextField::margin() const {
-	QFont used_font = font();
-	QFontMetrics qfm(used_font);
-	QPointF margin(
-		(boundingRect().width () - qfm.width(toPlainText())) / 2.0,
-		((boundingRect().height() - used_font.pointSizeF()) / 3.0) + used_font.pointSizeF()
-	);
-	return(margin);
+	return(QPointF(0.0, boundingRect().height() / 2.0));
 }
 
 /**
@@ -253,7 +247,7 @@
 */
 QRectF PartTextField::boundingRect() const {
 	QRectF r = QGraphicsTextItem::boundingRect();
-	r.adjust(0.0, -2.0, 0.0, 0.0);
+	r.adjust(0.0, -1.1, 0.0, 0.0);
 	return(r);
 }
 


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