summaryrefslogtreecommitdiffstats
path: root/kalzium/src/kalziumutils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kalzium/src/kalziumutils.cpp')
-rw-r--r--kalzium/src/kalziumutils.cpp88
1 files changed, 88 insertions, 0 deletions
diff --git a/kalzium/src/kalziumutils.cpp b/kalzium/src/kalziumutils.cpp
new file mode 100644
index 00000000..2e4dd127
--- /dev/null
+++ b/kalzium/src/kalziumutils.cpp
@@ -0,0 +1,88 @@
+/***************************************************************************
+ copyright : (C) 2005 by Carsten Niehaus
+ email : cniehaus@kde.org
+ ***************************************************************************/
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+#include "kalziumutils.h"
+
+#include <kdebug.h>
+#include <kglobal.h>
+#include <klocale.h>
+#include <qfont.h>
+#include <qrect.h>
+#include <qpainter.h>
+#include <qglobal.h>
+
+#include <math.h>
+#if defined(Q_OS_SOLARIS)
+#include <ieeefp.h>
+#endif
+
+int KalziumUtils::maxSize( const QString& string, const QRect& rect, QFont font, QPainter* p, int minFontSize, int maxFontSize )
+{
+ bool goodSizeFound = false;
+ int size = maxFontSize;
+ QRect r;
+
+ do
+ {
+ font.setPointSize( size );
+ p->setFont( font );
+ r = p->boundingRect( QRect(), Qt::AlignAuto, string );
+ r.moveBy( rect.left(), rect.top() );
+
+ if ( rect.contains( r ) )
+ goodSizeFound = true;
+ else
+ size--;
+ }
+ while ( !goodSizeFound && ( size > minFontSize ) );
+
+ 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 ) )
+ return num;
+
+ double power;
+ power = 1e-6;
+ while ( power < num )
+ power *= 10;
+
+ num = num / power * 10000;
+ num = qRound( num );
+
+ return num * power / 10000;
+}
+
+QString KalziumUtils::localizedValue( double val, int precision, unsigned long options )
+{
+ QString str = KGlobal::locale()->formatNumber( val, precision );
+ while( str.endsWith("0") )
+ str.truncate( str.length()-1);
+ if ( str.endsWith( KGlobal::locale()->decimalSymbol() ) )
+ {
+ // we do not want trailing ',' values so readd trailing 0
+ str.append( '0' ); //
+ }
+ return str;
+}