[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: branches/KDE/3.5/kdeedu/kalzium/src
From: Carsten Niehaus <cniehaus () gmx ! de>
Date: 2005-08-02 15:53:39
Message-ID: 1122998019.246739.23641.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 442404 by cniehaus:
* Make the detailgraphicaloverview-widget also use optimum-sized strings
M +25 -17 detailedgraphicaloverview.cpp
M +10 -0 kalziumutils.cpp
M +19 -2 kalziumutils.h
--- branches/KDE/3.5/kdeedu/kalzium/src/detailedgraphicaloverview.cpp #442403:442404
@@ -14,16 +14,19 @@
***************************************************************************/
#include "detailedgraphicaloverview.h"
#include "element.h"
+#include "kalziumutils.h"
//KDE-Includes
#include <kdebug.h>
#include <klocale.h>
#include <kglobalsettings.h>
+#include <kglobal.h>
//QT-Includes
#include <qpainter.h>
#include <qstring.h>
#include <qpixmap.h>
+#include <qrect.h>
DetailedGraphicalOverview::DetailedGraphicalOverview( Element *el, QWidget *parent, const char *name )
: QWidget( parent, name )
@@ -91,7 +94,6 @@
fC.setBold( true );
QFontMetrics fmA = QFontMetrics( fA );
QFontMetrics fmB = QFontMetrics( fB );
- QFontMetrics fmC = QFontMetrics( fC );
//coordinates for element symbol: near the center
int xA = 4 * w / 10;
@@ -101,18 +103,6 @@
int xB = xA - fmB.width( QString::number( m_element->number() ) );
int yB = yA - fmA.height() + fmB.height();
- //coordinates for element name: lower left
- int xC1 = 8;
- int yC1 = h - 8;
-
- //coordinates for oxidation: right side, above atomic mass
- int xC2 = w - fmC.width( m_element->oxstage() ) - 8;
- int yC2 = h - fmC.height() - 8;
-
- //coordinates for mass: lower right corner
- int xC3 = w - fmC.width( QString::number( m_element->mass() ) ) - 8;
- int yC3 = h - 8;
-
//Element Symbol
p.setFont( fA );
p.drawText( xA, yA , m_element->symbol() );
@@ -121,14 +111,32 @@
p.setFont( fB );
p.drawText( xB, yB, QString::number( m_element->number() ));
+ QRect rect( 0, 20, w/2, h );
+
+ p.setFont( fC );
+
+ int size = KalziumUtils::maxSize(m_element->elname(), rect , fC, &p);
+ int size2 = KalziumUtils::maxSize(m_element->oxstage(), rect, fC, &p);
+ int size3 = KalziumUtils::maxSize(QString::number( m_element->mass() ), rect , fC, &p);
+
//Name and other data
+ fC.setPointSize( size );
p.setFont( fC );
+
//Name
- p.drawText( xC1, yC1, m_element->elname() );
- //Oxidationszahlen
- p.drawText( xC2, yC2, m_element->oxstage() );
+ p.drawText( 1, 0, w/2, h, Qt::AlignLeft, m_element->elname() );
+
+ //Oxidationstates
+ fC.setPointSize( size2 );
+ p.setFont( fC );
+ int offsetOx = KalziumUtils::StringHeight( QString::number( m_element->mass() ), fC, &p );
+ p.drawText( 1, h-offsetOx, w/2, offsetOx, Qt::AlignLeft, m_element->oxstage() );
+
//Mass
- p.drawText( xC3, yC3, QString::number( m_element->mass() ));
+ fC.setPointSize( size3 );
+ p.setFont( fC );
+ int offset = KalziumUtils::StringHeight( QString::number( m_element->mass() ), fC, &p );
+ p.drawText( w/2, h-offset, w/2, offset, Qt::AlignRight, QString::number( m_element->mass() ) );
//TODO until I found again what those symbols mean disable this
//drawBiologicalSymbol( &p );
--- branches/KDE/3.5/kdeedu/kalzium/src/kalziumutils.cpp #442403:442404
@@ -30,6 +30,16 @@
return size;
}
+int KalziumUtils::StringHeight( const QString& string, const QFont& font, QPainter* p )
+{
+ return p->boundingRect( QRect(), Qt::AlignAuto, string ).height();
+}
+
+int KalziumUtils::StringWidth( const QString& string, const QFont& font, QPainter* p )
+{
+ return p->boundingRect( QRect(), Qt::AlignAuto, string ).width();
+}
+
double KalziumUtils::strippedValue( double num )
{
if ( !finite( num ) )
--- branches/KDE/3.5/kdeedu/kalzium/src/kalziumutils.h #442403:442404
@@ -18,10 +18,27 @@
static int maxSize( const QString& string, const QRect& rect, QFont font, QPainter* painter );
/**
- * calculate the 4-digit value of the value @p w
+ * calculate the 4-digit value of the value @p w. For
+ * example, 12.3456 will be returned as 12.35
+ * @param value the value which will be stripped
* @return the 4-digit value
*/
- static double strippedValue( double w );
+ static double strippedValue( double value );
+
+ /**
+ * @param string the string which is measured
+ * @param font the used font
+ * @param painter the used painter
+ * @return the width of the string @p string
+ */
+ static int StringWidth( const QString& string, const QFont& font, QPainter* painter );
+ /**
+ * @param string the string which is measured
+ * @param font the used font
+ * @param painter the used painter
+ * @return the height of the string @p string
+ */
+ static int StringHeight( const QString& string, const QFont& font, QPainter* painter );
};
#endif // KALZIUMUTILS_H
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic