From d796c9dd933ab96ec83b9a634feedd5d32e1ba3f Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Tue, 8 Nov 2011 12:31:36 -0600 Subject: Test conversion to TQt3 from Qt3 8c6fc1f8e35fd264dd01c582ca5e7549b32ab731 --- examples/qfd/fontdisplayer.cpp | 155 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 155 insertions(+) create mode 100644 examples/qfd/fontdisplayer.cpp (limited to 'examples/qfd/fontdisplayer.cpp') diff --git a/examples/qfd/fontdisplayer.cpp b/examples/qfd/fontdisplayer.cpp new file mode 100644 index 000000000..eecb16143 --- /dev/null +++ b/examples/qfd/fontdisplayer.cpp @@ -0,0 +1,155 @@ +/**************************************************************************** +** +** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved. +** +** This file is part of an example program for TQt. This example +** program may be used, distributed and modified without limitation. +** +*****************************************************************************/ + +#include "fontdisplayer.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +FontRowTable::FontRowTable( TQWidget* parent, const char* name ) : + TQFrame(parent,name) +{ + setBackgroundMode(PaletteBase); + setFrameStyle(Panel|Sunken); + setMargin(8); + setRow(0); + tablefont = TQApplication::font(); +} + +TQSize FontRowTable::sizeHint() const +{ + return 24*cellSize()+TQSize(2,2)*(margin()+frameWidth()); +} + +TQSize FontRowTable::cellSize() const +{ + TQFontMetrics fm = fontMetrics(); + return TQSize( fm.maxWidth(), fm.lineSpacing()+1 ); +} + +void FontRowTable::paintEvent( TQPaintEvent* e ) +{ + TQFrame::paintEvent(e); + TQPainter p(this); + p.setClipRegion(e->region()); + TQRect r = e->rect(); + TQFontMetrics fm = fontMetrics(); + int ml = frameWidth()+margin() + 1 + TQMAX(0,-fm.minLeftBearing()); + int mt = frameWidth()+margin(); + TQSize cell((width()-15-ml)/16,(height()-15-mt)/16); + + if ( !cell.width() || !cell.height() ) + return; + + int mini = r.left() / cell.width(); + int maxi = (r.right()+cell.width()-1) / cell.width(); + int minj = r.top() / cell.height(); + int maxj = (r.bottom()+cell.height()-1) / cell.height(); + + int h = fm.height(); + + TQColor body(255,255,192); + TQColor negative(255,192,192); + TQColor positive(192,192,255); + TQColor rnegative(255,128,128); + TQColor rpositive(128,128,255); + + for (int j = minj; j<=maxj; j++) { + for (int i = mini; i<=maxi; i++) { + if ( i < 16 && j < 16 ) { + int x = i*cell.width(); + int y = j*cell.height(); + + TQChar ch = TQChar(j*16+i,row); + + if ( fm.inFont(ch) ) { + int w = fm.width(ch); + int l = fm.leftBearing(ch); + int r = fm.rightBearing(ch); + + x += ml; + y += mt+h; + + p.fillRect(x,y,w,-h,body); + if ( w ) { + if ( l ) { + p.fillRect(x+(l>0?0:l), y-h/2, abs(l),-h/2, + l < 0 ? negative : positive); + } + if ( r ) { + p.fillRect(x+w-(r>0?r:0),y+2, abs(r),-h/2, + r < 0 ? rnegative : rpositive); + } + } + TQString s; + s += ch; + p.setPen(TQPen(TQt::black)); + p.drawText(x,y,s); + } + } + } + } +} + +void FontRowTable::setRow(int r) +{ + row = r; + + TQFontMetrics fm = fontMetrics(); + TQFontInfo fi = fontInfo(); + TQString str = TQString("%1 %2pt%3%4 mLB=%5 mRB=%6 mW=%7") + .arg(fi.family()) + .arg(fi.pointSize()) + .arg(fi.bold() ? " bold" : "") + .arg(fi.italic() ? " italic" : "") + .arg(fm.minLeftBearing()) + .arg(fm.minRightBearing()) + .arg(fm.maxWidth()); + + emit fontInformation(str); + update(); +} + +void FontRowTable::chooseFont() +{ + bool ok; + TQFont oldfont = tablefont; + tablefont = TQFontDialog::getFont(&ok, oldfont, this); + + if (ok) + setFont(tablefont); + else + tablefont = oldfont; +} + +FontDisplayer::FontDisplayer( TQWidget* parent, const char* name ) : + TQMainWindow(parent,name) +{ + FontRowTable* table = new FontRowTable(this); + TQToolBar* controls = new TQToolBar(this); + (void) new TQLabel(tr("Row:"), controls); + TQSpinBox *row = new TQSpinBox(0,255,1,controls); + controls->addSeparator(); + TQPushButton *fontbutton = new TQPushButton(tr("Font..."), controls); + + connect(row,SIGNAL(valueChanged(int)),table,SLOT(setRow(int))); + connect(fontbutton, SIGNAL(clicked()), table, SLOT(chooseFont())); + connect(table,SIGNAL(fontInformation(const TQString&)), + statusBar(),SLOT(message(const TQString&))); + table->setRow(0); + setCentralWidget(table); +} -- cgit v1.2.1