29#include "KDChartTextPiece.h"
31#include <tqstylesheet.h>
32#include <tqsimplerichtext.h>
33#include <tqfontmetrics.h>
35#include <tqapplication.h>
38KDChartTextPiece::KDChartTextPiece()
44 _font = TQApplication::font();
46 _metrics =
new TQFontMetrics( _font );
52KDChartTextPiece::KDChartTextPiece(
const TQString& text,
const TQFont& font )
55 if( TQStyleSheet::mightBeRichText( text ) ) {
57 _richText =
new TQSimpleRichText( text, font );
58 _richText->adjustSize();
65 _metrics =
new TQFontMetrics( font );
72KDChartTextPiece::KDChartTextPiece( TQPainter *p,
const TQString& text,
const TQFont& font )
76 if( TQStyleSheet::mightBeRichText( text ) ) {
78 _richText =
new TQSimpleRichText( text, font );
81 _richText->adjustSize();
91 _dirtyMetrics = (p == 0);
93 _metrics =
new TQFontMetrics( font );
99 _metrics =
new TQFontMetrics( p->fontMetrics() );
110void KDChartTextPiece::deepCopy(
const KDChartTextPiece* source )
112 if( !source ||
this == source )
116 _isRichText = source->_isRichText;
117 if( source->_richText ) {
118 _richText =
new TQSimpleRichText( source->_text, source->_font );
119 _richText->adjustSize();
127 _metrics =
new TQFontMetrics( *source->_metrics );
128 _dirtyMetrics = source->_dirtyMetrics;
129 _text = source->_text;
130 _font = source->_font;
133const KDChartTextPiece* KDChartTextPiece::clone()
const
135 KDChartTextPiece* newPiece =
new KDChartTextPiece();
136 newPiece->deepCopy(
this );
141KDChartTextPiece::~KDChartTextPiece()
150int KDChartTextPiece::width()
const
153 return _richText->widthUsed();
155 return _metrics->width( _text );
159int KDChartTextPiece::height()
const
164 return _richText->height();
169 return _metrics->height();
174int KDChartTextPiece::fontLeading()
const
176 return _metrics->leading();
179TQRect KDChartTextPiece::rect( TQPainter *p,
const TQRect& clipRect)
const
181 TQRect rect( clipRect );
182 TQFont font( _font );
187 if ( _richText->height() > clipRect.height() || _richText->width() > clipRect.width() )
188 font.setPixelSize( TQMIN( (
int)clipRect.width(),(
int)clipRect.height() ) );
190 _richText->setDefaultFont( font );
191 _richText->setWidth( p, clipRect.width() );
192 rect.setWidth( _richText->width() );
193 rect.setHeight( _richText->height() );
200void KDChartTextPiece::draw( TQPainter *p,
int x,
int y,
201 const TQRect& clipRect,
202 const TQColor& color,
203 const TQBrush* paper )
const
210 TQRect txtArea = rect( p,clipRect);
211 cg.setColor( TQColorGroup::Text, color );
212 _richText->draw( p, txtArea.x(), txtArea.y(),txtArea , cg, paper );
217 p->setBrush( *paper );
224 KDChartTextPiece* meNotConst =
const_cast<KDChartTextPiece*
>(
this);
226 meNotConst->_metrics =
new TQFontMetrics( p->fontMetrics() );
227 meNotConst->_dirtyMetrics =
false;
230 p->drawText( x, y + _metrics->ascent(), _text );
236void KDChartTextPiece::draw( TQPainter *p,
int x,
int y,
237 const TQRegion& clipRegion,
238 const TQColor& color,
239 const TQBrush* paper )
const
243 cg.setColor( TQColorGroup::Text, color );
244 _richText->setDefaultFont( _font );
245 _richText->setWidth( p, clipRegion.boundingRect().width() );
246 _richText->draw( p, x, y, clipRegion, cg, paper );
251 p->setBrush( *paper );
253 p->setClipRegion( clipRegion );
261 KDChartTextPiece* meNotConst =
const_cast<KDChartTextPiece*
>(
this);
263 meNotConst->_metrics =
new TQFontMetrics( p->fontMetrics() );
264 meNotConst->_dirtyMetrics =
false;
267 p->drawText( x, y + _metrics->ascent(), _text );
273TQString KDChartTextPiece::text()
const
279TQFont KDChartTextPiece::font()
const
285bool KDChartTextPiece::isRichText()
const
292#include "KDChartTextPiece.moc"