diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | ce4a32fe52ef09d8f5ff1dd22c001110902b60a2 (patch) | |
tree | 5ac38a06f3dde268dc7927dc155896926aaf7012 /kate/part/katefont.cpp | |
download | tdelibs-ce4a32fe52ef09d8f5ff1dd22c001110902b60a2.tar.gz tdelibs-ce4a32fe52ef09d8f5ff1dd22c001110902b60a2.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdelibs@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kate/part/katefont.cpp')
-rw-r--r-- | kate/part/katefont.cpp | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/kate/part/katefont.cpp b/kate/part/katefont.cpp new file mode 100644 index 000000000..efab0268c --- /dev/null +++ b/kate/part/katefont.cpp @@ -0,0 +1,127 @@ +/* This file is part of the KDE libraries + Copyright (C) 2002 Christian Couder <christian@kdevelop.org> + Copyright (C) 2001 Christoph Cullmann <cullmann@kde.org> + Copyright (C) 2001 Joseph Wenninger <jowenn@kde.org> + Copyright (C) 1999 Jochen Wilhelmy <digisnap@cs.tu-berlin.de> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License version 2 as published by the Free Software Foundation. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "katefont.h" + +#include <kglobalsettings.h> + +#include <qfontinfo.h> + +// +// KateFontMetrics implementation +// + +KateFontMetrics::KateFontMetrics(const QFont& f) : QFontMetrics(f) +{ + for (int i=0; i<256; i++) warray[i]=0; +} + +KateFontMetrics::~KateFontMetrics() +{ + for (int i=0; i<256; i++) + delete[] warray[i]; +} + +short * KateFontMetrics::createRow (short *wa, uchar row) +{ + wa=warray[row]=new short[256]; + + for (int i=0; i<256; i++) wa[i]=-1; + + return wa; +} + +int KateFontMetrics::width(QChar c) +{ + uchar cell=c.cell(); + uchar row=c.row(); + short *wa=warray[row]; + + if (!wa) + wa = createRow (wa, row); + + if (wa[cell]<0) wa[cell]=(short) QFontMetrics::width(c); + + return (int)wa[cell]; +} + +// +// KateFontStruct implementation +// + +KateFontStruct::KateFontStruct() +: myFont(KGlobalSettings::fixedFont()), + myFontBold(KGlobalSettings::fixedFont()), + myFontItalic(KGlobalSettings::fixedFont()), + myFontBI(KGlobalSettings::fixedFont()), + myFontMetrics(myFont), + myFontMetricsBold(myFontBold), + myFontMetricsItalic(myFontItalic), + myFontMetricsBI(myFontBI), + m_fixedPitch (false) +{ + updateFontData (); +} + +KateFontStruct::~KateFontStruct() +{ +} + +void KateFontStruct::updateFontData () +{ + int maxAscent = myFontMetrics.ascent(); + int maxDescent = myFontMetrics.descent(); + + fontHeight = maxAscent + maxDescent + 1; + fontAscent = maxAscent; + + m_fixedPitch = QFontInfo( myFont ).fixedPitch(); +} + +void KateFontStruct::setFont (const QFont & font) +{ + QFontMetrics testFM (font); + + // no valid font tried + if ((testFM.ascent() + testFM.descent() + 1) < 1) + return; + + myFont = font; + + myFontBold = QFont (font); + myFontBold.setBold (true); + + myFontItalic = QFont (font); + myFontItalic.setItalic (true); + + myFontBI = QFont (font); + myFontBI.setBold (true); + myFontBI.setItalic (true); + + myFontMetrics = KateFontMetrics (myFont); + myFontMetricsBold = KateFontMetrics (myFontBold); + myFontMetricsItalic = KateFontMetrics (myFontItalic); + myFontMetricsBI = KateFontMetrics (myFontBI); + + updateFontData (); +} + +// kate: space-indent on; indent-width 2; replace-tabs on; |