/* This file is part of the KDE libraries Copyright (C) 2002 Christian Couder <christian@tdevelop.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 <tqfontinfo.h> // // KateFontMetrics implementation // KateFontMetrics::KateFontMetrics(const TQFont& f) : TQFontMetrics(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(TQChar 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) TQFontMetrics::width(c); return (int)wa[cell]; } // // KateFontStruct implementation // KateFontStruct::KateFontStruct() : myFont(TDEGlobalSettings::fixedFont()), myFontBold(TDEGlobalSettings::fixedFont()), myFontItalic(TDEGlobalSettings::fixedFont()), myFontBI(TDEGlobalSettings::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 = TQFontInfo( myFont ).fixedPitch(); } void KateFontStruct::setFont (const TQFont & font) { TQFontMetrics testFM (font); // no valid font tried if ((testFM.ascent() + testFM.descent() + 1) < 1) return; myFont = font; myFontBold = TQFont (font); myFontBold.setBold (true); myFontItalic = TQFont (font); myFontItalic.setItalic (true); myFontBI = TQFont (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;