#include <KDChartLayoutItems.h>
Inheritance diagram for KDChart::TextLayoutItem:
Public Member Functions | |
| const QObject * | autoReferenceArea () const |
| virtual Qt::Orientations | expandingDirections () const |
| pure virtual in QLayoutItem | |
| virtual QRect | geometry () const |
| pure virtual in QLayoutItem | |
| virtual bool | intersects (const TextLayoutItem &other, const QPoint &myPos, const QPoint &otherPos) const |
| virtual bool | intersects (const TextLayoutItem &other, const QPointF &myPos, const QPointF &otherPos) const |
| virtual bool | isEmpty () const |
| pure virtual in QLayoutItem | |
| virtual QSize | maximumSize () const |
| pure virtual in QLayoutItem | |
| virtual QSize | minimumSize () const |
| pure virtual in QLayoutItem | |
| virtual void | paint (QPainter *) |
| virtual void | paintAll (QPainter &painter) |
| Default impl: just call paint. | |
| virtual void | paintCtx (PaintContext *context) |
| Default impl: Paint the complete item using its layouted position and size. | |
| QLayout * | parentLayout () |
| virtual QFont | realFont () const |
| virtual qreal | realFontSize () const |
| void | removeFromParentLayout () |
| void | setAutoReferenceArea (const QObject *area) |
| virtual void | setGeometry (const QRect &r) |
| pure virtual in QLayoutItem | |
| void | setParentLayout (QLayout *lay) |
| virtual void | setParentWidget (QWidget *widget) |
| Inform the item about its widget: This enables the item, to trigger that widget's update, whenever the size of the item's contents has changed. | |
| void | setText (const QString &text) |
| void | setTextAttributes (const TextAttributes &a) |
| Use this to specify the text attributes to be used for this item. | |
| virtual QSize | sizeHint () const |
| pure virtual in QLayoutItem | |
| virtual void | sizeHintChanged () const |
| Report changed size hint: ask the parent widget to recalculate the layout. | |
| QString | text () const |
| TextAttributes | textAttributes () const |
| Returns the text attributes to be used for this item. | |
| TextLayoutItem (const QString &text, const TextAttributes &attributes, const QObject *autoReferenceArea, KDChartEnums::MeasureOrientation autoReferenceOrientation, Qt::Alignment alignment=0) | |
| TextLayoutItem () | |
Protected Attributes | |
| QWidget * | mParent |
| QLayout * | mParentLayout |
|
|
Definition at line 115 of file KDChartLayoutItems.cpp.
00116 : AbstractLayoutItem( Qt::AlignLeft ) 00117 , mText() 00118 , mAttributes() 00119 , mAutoReferenceArea( 0 ) 00120 , mAutoReferenceOrientation( KDChartEnums::MeasureOrientationHorizontal ) 00121 , cachedSizeHint() // default this to invalid to force just-in-time calculation before first use of sizeHint() 00122 , cachedFontSize( 0.0 ) 00123 , cachedFont( mAttributes.font() ) 00124 { 00125 00126 } |
|
||||||||||||||||||||||||
|
Definition at line 99 of file KDChartLayoutItems.cpp.
00104 : AbstractLayoutItem( alignment ) 00105 , mText( text ) 00106 , mAttributes( attributes ) 00107 , mAutoReferenceArea( area ) 00108 , mAutoReferenceOrientation( orientation ) 00109 , cachedSizeHint() // default this to invalid to force just-in-time calculation before first use of sizeHint() 00110 , cachedFontSize( 0.0 ) 00111 , cachedFont( mAttributes.font() ) 00112 { 00113 } |
|
|
Definition at line 135 of file KDChartLayoutItems.cpp. Referenced by KDChart::HeaderFooter::setParent().
00136 {
00137 return mAutoReferenceArea;
00138 }
|
|
|
pure virtual in QLayoutItem
Definition at line 175 of file KDChartLayoutItems.cpp.
00176 {
00177 return 0; // Grow neither vertically nor horizontally
00178 }
|
|
|
pure virtual in QLayoutItem
Definition at line 180 of file KDChartLayoutItems.cpp. Referenced by KDChart::TextArea::areaGeometry(), paint(), KDChart::TextArea::paintAll(), KDChart::CartesianAxis::paintCtx(), and KDChart::TextArea::paintIntoRect().
00181 {
00182 return mRect;
00183 }
|
|
||||||||||||||||
|
Definition at line 254 of file KDChartLayoutItems.cpp. References mAttributes, PI, rotatedCorners(), KDChart::TextAttributes::rotation(), and unrotatedSizeHint().
00255 {
00256 if ( mAttributes.rotation() != other.mAttributes.rotation() )
00257 {
00258 // that's the code for the common case: the rotation angles don't need to match here
00259 QPolygon myPolygon( rotatedCorners() );
00260 QPolygon otherPolygon( other.rotatedCorners() );
00261
00262 // move the polygons to their positions
00263 myPolygon.translate( myPos );
00264 otherPolygon.translate( otherPos );
00265
00266 // create regions out of it
00267 QRegion myRegion( myPolygon );
00268 QRegion otherRegion( otherPolygon );
00269
00270 // now the question - do they intersect or not?
00271 return ! myRegion.intersect( otherRegion ).isEmpty();
00272
00273 } else {
00274 // and that's the code for the special case: the rotation angles match, which is less time consuming in calculation
00275 const qreal angle = mAttributes.rotation() * PI / 180.0;
00276 // both sizes
00277 const QSizeF mySize( unrotatedSizeHint() );
00278 const QSizeF otherSize( other.unrotatedSizeHint() );
00279
00280 // that's myP1 relative to myPos
00281 QPointF myP1( mySize.height() * sin( angle ), 0.0 );
00282 // that's otherP1 to myPos
00283 QPointF otherP1 = QPointF( otherSize.height() * sin( angle ), 0.0 ) + otherPos - myPos;
00284
00285 // now rotate both points the negative angle around myPos
00286 myP1 = QPointF( myP1.x() * cos( -angle ), myP1.x() * sin( -angle ) );
00287 qreal r = sqrt( otherP1.x() * otherP1.x() + otherP1.y() * otherP1.y() );
00288 otherP1 = QPointF( r * cos( -angle ), r * sin( -angle ) );
00289
00290 // finally we look, whether both rectangles intersect or even not
00291 return QRectF( myP1, mySize ).intersects( QRectF( otherP1, otherSize ) );
00292 }
00293 }
|
|
||||||||||||||||
|
Definition at line 249 of file KDChartLayoutItems.cpp. Referenced by KDChart::CartesianAxis::paintCtx().
00250 {
00251 return intersects( other, myPos.toPoint(), otherPos.toPoint() );
00252 }
|
|
|
pure virtual in QLayoutItem
Definition at line 185 of file KDChartLayoutItems.cpp.
00186 {
00187 return false; // never empty, otherwise the layout item would not exist
00188 }
|
|
|
pure virtual in QLayoutItem
Definition at line 190 of file KDChartLayoutItems.cpp. References sizeHint().
00191 {
00192 return sizeHint(); // PENDING(kalle) Review, quite inflexible
00193 }
|
|
|
pure virtual in QLayoutItem
Definition at line 195 of file KDChartLayoutItems.cpp. References sizeHint().
00196 {
00197 return sizeHint(); // PENDING(kalle) Review, quite inflexible
00198 }
|
|
|
Implements KDChart::AbstractLayoutItem. Definition at line 382 of file KDChartLayoutItems.cpp. References geometry(), KDChart::TextAttributes::pen(), rotatedRect(), and KDChart::TextAttributes::rotation(). Referenced by KDChart::TextArea::paintAll(), and KDChart::CartesianAxis::paintCtx().
00383 {
00384 // make sure, cached font is updated, if needed:
00385 // sizeHint();
00386
00387 if( !mRect.isValid() )
00388 return;
00389
00390 PainterSaver painterSaver( painter );
00391 painter->setFont( cachedFont );
00392 QRectF rect( geometry() );
00393
00394 // #ifdef DEBUG_ITEMS_PAINT
00395 // painter->setPen( Qt::black );
00396 // painter->drawRect( rect );
00397 // #endif
00398 painter->translate( rect.center() );
00399 rect.moveTopLeft( QPointF( - rect.width() / 2, - rect.height() / 2 ) );
00400 #ifdef DEBUG_ITEMS_PAINT
00401 painter->setPen( Qt::blue );
00402 painter->drawRect( rect );
00403 #endif
00404 painter->rotate( mAttributes.rotation() );
00405 rect = rotatedRect( rect, mAttributes.rotation() );
00406 #ifdef DEBUG_ITEMS_PAINT
00407 painter->setPen( Qt::red );
00408 painter->drawRect( rect );
00409 #endif
00410 painter->setPen( mAttributes.pen() );
00411 painter->drawText( rect, Qt::AlignHCenter | Qt::AlignVCenter, mText );
00412 // if ( calcSizeHint( cachedFont ).width() > rect.width() )
00413 // qDebug() << "rect.width()" << rect.width() << "text.width()" << calcSizeHint( cachedFont ).width();
00414 //
00415 // //painter->drawText( rect, Qt::AlignHCenter | Qt::AlignVCenter, mText );
00416 }
|
|
|
Default impl: just call paint. Derived classes like KDChart::AbstractArea are providing additional action here. Reimplemented in KDChart::AbstractArea, and KDChart::TextArea. Definition at line 69 of file KDChartLayoutItems.cpp. References KDChart::AbstractLayoutItem::paint().
00070 {
00071 paint( &painter );
00072 }
|
|
|
Default impl: Paint the complete item using its layouted position and size.
Reimplemented in KDChart::CartesianAxis. Definition at line 77 of file KDChartLayoutItems.cpp. References KDChart::AbstractLayoutItem::paint(), and KDChart::PaintContext::painter().
00078 {
00079 if( context )
00080 paint( context->painter() );
00081 }
|
|
|
Definition at line 74 of file KDChartLayoutItems.h.
00075 {
00076 return mParentLayout;
00077 }
|
|
|
Definition at line 226 of file KDChartLayoutItems.cpp. Referenced by KDChart::CartesianAxis::maximumSize(), and KDChart::CartesianAxis::paintCtx().
00227 {
00228 realFontWasRecalculated(); // we can safely ignore the boolean return value
00229 return cachedFont;
00230 }
|
|
|
Definition at line 206 of file KDChartLayoutItems.cpp. References KDChart::TextAttributes::calculatedFontSize().
00207 {
00208 return mAttributes.calculatedFontSize( mAutoReferenceArea, mAutoReferenceOrientation );
00209 }
|
|
|
Definition at line 78 of file KDChartLayoutItems.h. Referenced by KDChart::Chart::takeCoordinatePlane().
00079 {
00080 if( mParentLayout ){
00081 if( widget() )
00082 mParentLayout->removeWidget( widget() );
00083 else
00084 mParentLayout->removeItem( this );
00085 }
00086 }
|
|
|
Definition at line 128 of file KDChartLayoutItems.cpp. References sizeHint(). Referenced by KDChart::HeaderFooter::setParent().
00129 {
00130 mAutoReferenceArea = area;
00131 cachedSizeHint = QSize();
00132 sizeHint();
00133 }
|
|
|
pure virtual in QLayoutItem
Definition at line 200 of file KDChartLayoutItems.cpp. Referenced by KDChart::TextArea::paintAll(), KDChart::CartesianAxis::paintCtx(), and KDChart::TextArea::paintIntoRect().
00201 {
00202 mRect = r;
00203 }
|
|
|
Definition at line 70 of file KDChartLayoutItems.h.
00071 {
00072 mParentLayout = lay;
00073 }
|
|
|
Inform the item about its widget: This enables the item, to trigger that widget's update, whenever the size of the item's contents has changed. Thus, you need to call setParentWidget on every item, that has a non-fixed size. Definition at line 64 of file KDChartLayoutItems.cpp. References KDChart::AbstractLayoutItem::mParent. Referenced by KDChart::Legend::buildLegend(), and KDChart::AbstractCartesianDiagram::takeAxis().
00065 {
00066 mParent = widget;
00067 }
|
|
|
Definition at line 140 of file KDChartLayoutItems.cpp. References sizeHint(). Referenced by KDChart::Widget::addHeaderFooter(), KDChart::CartesianAxis::maximumSize(), and KDChart::CartesianAxis::paintCtx().
00141 {
00142 mText = text;
00143 cachedSizeHint = QSize();
00144 sizeHint();
00145 }
|
|
|
Use this to specify the text attributes to be used for this item.
Definition at line 157 of file KDChartLayoutItems.cpp. References sizeHint(). Referenced by KDChart::HeaderFooter::clone().
00158 {
00159 mAttributes = a;
00160 cachedSizeHint = QSize(); // invalidate size hint
00161 sizeHint();
00162 }
|
|
|
pure virtual in QLayoutItem
Definition at line 295 of file KDChartLayoutItems.cpp. References KDChart::AbstractLayoutItem::sizeHintChanged(). Referenced by maximumSize(), KDChart::CartesianAxis::maximumSize(), minimumSize(), KDChart::CartesianAxis::paintCtx(), setAutoReferenceArea(), setText(), and setTextAttributes().
00296 {
00297 if( realFontWasRecalculated() )
00298 {
00299 const QSize newSizeHint( calcSizeHint( cachedFont ) );
00300 if( newSizeHint != cachedSizeHint ){
00301 cachedSizeHint = newSizeHint;
00302 sizeHintChanged();
00303 }
00304 }
00305 //qDebug() << "-------- KDChart::TextLayoutItem::sizeHint() returns:"<<cachedSizeHint<<" ----------";
00306 return cachedSizeHint;
00307 }
|
|
|
Report changed size hint: ask the parent widget to recalculate the layout.
Definition at line 86 of file KDChartLayoutItems.cpp. Referenced by sizeHint().
00087 {
00088 // This is exactly like what QWidget::updateGeometry does.
00089 // qDebug("KDChart::AbstractLayoutItem::sizeHintChanged() called");
00090 if( mParent ) {
00091 if ( mParent->layout() )
00092 mParent->layout()->invalidate();
00093 else
00094 QApplication::postEvent( mParent, new QEvent( QEvent::LayoutRequest ) );
00095 }
00096 }
|
|
|
Definition at line 147 of file KDChartLayoutItems.cpp. Referenced by KDChart::CartesianAxis::paintCtx().
00148 {
00149 return mText;
00150 }
|
|
|
Returns the text attributes to be used for this item.
Definition at line 169 of file KDChartLayoutItems.cpp. Referenced by KDChart::HeaderFooter::clone().
00170 {
00171 return mAttributes;
00172 }
|
|
|
Definition at line 88 of file KDChartLayoutItems.h. Referenced by KDChart::AbstractLayoutItem::setParentWidget(). |
|
|
Definition at line 89 of file KDChartLayoutItems.h. |
1.3.6