KDChart::TernaryAxis Class Reference

#include <KDChartTernaryAxis.h>

Inheritance diagram for KDChart::TernaryAxis:

Inheritance graph
[legend]
Collaboration diagram for KDChart::TernaryAxis:

Collaboration graph
[legend]

List of all members.


Detailed Description

The class for ternary axes.

Definition at line 47 of file KDChartTernaryAxis.h.


Public Slots

void update ()

Signals

void positionChanged (AbstractArea *)

Public Member Functions

void alignToReferencePoint (const RelativePosition &position)
BackgroundAttributes backgroundAttributes () const
virtual int bottomOverlap (bool doNotRecalculate=false) const
 This is called at layout time by KDChart:AutoSpacerLayoutItem::sizeHint().
bool compare (const AbstractAreaBase *other) const
 Returns true if both areas have the same settings.
bool compare (const AbstractAxis *other) const
 Returns true if both axes have the same settings.
virtual void connectSignals ()
 Wireing the signal/slot connections.
const AbstractCoordinatePlanecoordinatePlane () const
 Convenience function, returns the coordinate plane, in which this axis is used.
void createObserver (AbstractDiagram *diagram)
virtual const QString customizedLabel (const QString &label) const
 Implement this method if you want to adjust axis labels before they are printed.
void deleteObserver (AbstractDiagram *diagram)
const AbstractDiagramdiagram () const
virtual Qt::Orientations expandingDirections () const
FrameAttributes frameAttributes () const
virtual QRect geometry () const
void getFrameLeadings (int &left, int &top, int &right, int &bottom) const
bool hasDefaultTitleTextAttributes () const
virtual bool isEmpty () const
QStringList labels () const
 Returns a list of strings, that are used as axis labels, as set via setLabels.
virtual int leftOverlap (bool doNotRecalculate=false) const
 This is called at layout time by KDChart::AutoSpacerLayoutItem::sizeHint().
virtual QSize maximumSize () const
virtual QSize minimumSize () const
bool observedBy (AbstractDiagram *diagram) const
virtual void paint (QPainter *)
virtual void paintAll (QPainter &)
 Call paintAll, if you want the background and the frame to be drawn before the normal paint() is invoked automatically.
virtual void paintBackground (QPainter &painter, const QRect &rectangle)
virtual void paintCtx (PaintContext *)
 Default impl: Paint the complete item using its layouted position and size.
virtual void paintFrame (QPainter &painter, const QRect &rectangle)
virtual void paintIntoRect (QPainter &painter, const QRect &rect)
 Draws the background and frame, then calls paint().
QLayout * parentLayout ()
virtual const Position position () const
void removeFromParentLayout ()
QPair< QSizeF, QSizeF > requiredMargins () const
void resetTitleTextAttributes ()
virtual int rightOverlap (bool doNotRecalculate=false) const
 This is called at layout time by KDChart::AutoSpacerLayoutItem::sizeHint().
RulerAttributes rulerAttributes () const
 Returns the attributes to be used for painting the rulers.
void setBackgroundAttributes (const BackgroundAttributes &a)
void setFrameAttributes (const FrameAttributes &a)
virtual void setGeometry (const QRect &rect)
void setLabels (const QStringList &list)
 Use this to specify your own set of strings, to be used as axis labels.
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.
virtual void setPosition (Position p)
void setRulerAttributes (const RulerAttributes &a)
 Use this to specify the attributes used to paint the axis ruler.
void setShortLabels (const QStringList &list)
 Use this to specify your own set of strings, to be used as axis labels, in case the normal labels are too long.
void setTextAttributes (const TextAttributes &a)
 Use this to specify the text attributes to be used for axis labels.
void setTitleText (const QString &text)
void setTitleTextAttributes (const TextAttributes &a)
QStringList shortLabels () const
 Returns a list of strings, that are used as axis labels, as set via setShortLabels.
virtual QSize sizeHint () const
virtual void sizeHintChanged () const
 Report changed size hint: ask the parent widget to recalculate the layout.
 TernaryAxis (AbstractTernaryDiagram *diagram=0)
TextAttributes textAttributes () const
 Returns the text attributes to be used for axis labels.
QString titleText () const
TextAttributes titleTextAttributes () const
virtual int topOverlap (bool doNotRecalculate=false) const
 This is called at layout time by KDChart::AutoSpacerLayoutItem::sizeHint().
 ~TernaryAxis ()

Static Public Member Functions

static void paintBackgroundAttributes (QPainter &painter, const QRect &rectangle, const KDChart::BackgroundAttributes &attributes)
static void paintFrameAttributes (QPainter &painter, const QRect &rectangle, const KDChart::FrameAttributes &attributes)

Protected Slots

virtual void delayedInit ()
 called for initializing after the c'tor has completed

Protected Member Functions

virtual QRect areaGeometry () const
QRect innerRect () const
virtual void positionHasChanged ()

Protected Attributes

QWidgetmParent
QLayout * mParentLayout

Constructor & Destructor Documentation

TernaryAxis::TernaryAxis ( AbstractTernaryDiagram diagram = 0  )  [explicit]

Definition at line 50 of file KDChartTernaryAxis.cpp.

References KDChart::AbstractTernaryDiagram::addAxis(), KDChartEnums::PositionSouth, resetTitleTextAttributes(), setPosition(), and PrerenderedLabel::setText().

00051     : AbstractAxis( diagram )
00052     , m_position( KDChartEnums::PositionUnknown )
00053     , m_label( new PrerenderedLabel )
00054     , m_fifty( new PrerenderedLabel )
00055 {
00056     resetTitleTextAttributes();
00057     setPosition( KDChartEnums::PositionSouth ); // arbitrary
00058     m_fifty->setText( QObject::tr( "50%" ) ); // const
00059     // FIXME is this consistent with other diagram/axis/plane implementations?
00060     diagram->addAxis( this );
00061 }

TernaryAxis::~TernaryAxis (  ) 

Definition at line 63 of file KDChartTernaryAxis.cpp.

00064 {
00065     delete m_label; m_label = 0;
00066     delete m_label; m_fifty = 0;
00067 }


Member Function Documentation

void AbstractAreaBase::alignToReferencePoint ( const RelativePosition position  )  [inherited]

Definition at line 91 of file KDChartAbstractAreaBase.cpp.

00092 {
00093     Q_UNUSED( position );
00094     // PENDING(kalle) FIXME
00095     qWarning( "Sorry, not implemented: void AbstractAreaBase::alignToReferencePoint( const RelativePosition& position )" );
00096 }

QRect AbstractArea::areaGeometry (  )  const [protected, virtual, inherited]

Implements KDChart::AbstractAreaBase.

Definition at line 150 of file KDChartAbstractArea.cpp.

Referenced by KDChart::CartesianCoordinatePlane::drawingArea(), KDChart::TernaryCoordinatePlane::layoutDiagrams(), KDChart::PolarCoordinatePlane::layoutDiagrams(), KDChart::TernaryCoordinatePlane::paint(), KDChart::CartesianAxis::paint(), KDChart::AbstractArea::paintAll(), and KDChart::CartesianAxis::paintCtx().

00151 {
00152     return geometry();
00153 }

BackgroundAttributes AbstractAreaBase::backgroundAttributes (  )  const [inherited]

Definition at line 121 of file KDChartAbstractAreaBase.cpp.

References d.

Referenced by KDChart::AbstractAreaBase::compare(), and updateCommonBrush().

00122 {
00123     return d->backgroundAttributes;
00124 }

int AbstractArea::bottomOverlap ( bool  doNotRecalculate = false  )  const [virtual, inherited]

This is called at layout time by KDChart:AutoSpacerLayoutItem::sizeHint().

The method triggers AbstractArea::sizeHint() to find out the amount of overlap at the bottom edge of the area.

Note:
The default implementation is not using any caching, it might make sense to implement a more sophisticated solution for derived classes that have complex work to do in sizeHint(). All we have here is a primitive flag to be set by the caller if it is sure that no sizeHint() needs to be called.

Definition at line 101 of file KDChartAbstractArea.cpp.

References d.

Referenced by KDChart::AutoSpacerLayoutItem::sizeHint().

00102 {
00103     // Re-calculate the sizes,
00104     // so we also get the amountOf..Overlap members set newly:
00105     if( ! doNotRecalculate )
00106         sizeHint();
00107     return d->amountOfBottomOverlap;
00108 }

bool AbstractAreaBase::compare ( const AbstractAreaBase other  )  const [inherited]

Returns true if both areas have the same settings.

Definition at line 76 of file KDChartAbstractAreaBase.cpp.

References KDChart::AbstractAreaBase::backgroundAttributes(), and KDChart::AbstractAreaBase::frameAttributes().

00077 {
00078     if( other == this ) return true;
00079     if( ! other ){
00080         //qDebug() << "CartesianAxis::compare() cannot compare to Null pointer";
00081         return false;
00082     }
00083     /*
00084     qDebug() << "AbstractAreaBase:" << (frameAttributes() == other->frameAttributes())
00085         << (backgroundAttributes() == other->backgroundAttributes()) << "\n";
00086     */
00087     return  (frameAttributes()      == other->frameAttributes()) &&
00088             (backgroundAttributes() == other->backgroundAttributes());
00089 }

bool AbstractAxis::compare ( const AbstractAxis other  )  const [inherited]

Returns true if both axes have the same settings.

Definition at line 142 of file KDChartAbstractAxis.cpp.

References KDChart::AbstractAxis::labels(), KDChart::AbstractAxis::shortLabels(), and KDChart::AbstractAxis::textAttributes().

00143 {
00144     if( other == this ) return true;
00145     if( ! other ){
00146         //qDebug() << "CartesianAxis::compare() cannot compare to Null pointer";
00147         return false;
00148     }
00149     /*
00150     qDebug() << (textAttributes() == other->textAttributes());
00151     qDebug() << (labels()         == other->labels());
00152     qDebug() << (shortLabels()    == other->shortLabels());
00153     */
00154     return  ( static_cast<const AbstractAreaBase*>(this)->compare( other ) ) &&
00155             (textAttributes() == other->textAttributes()) &&
00156             (labels()         == other->labels()) &&
00157             (shortLabels()    == other->shortLabels());
00158 }

void AbstractAxis::connectSignals (  )  [virtual, inherited]

Wireing the signal/slot connections.

This method gets called automatically, each time, when you assign the axis to a diagram, either by passing a diagram* to the c'tor, or by calling the diagram's setAxis method, resp.

If overwriting this method in derived classes, make sure to call this base method AbstractAxis::connectSignals(), so your axis gets connected to the diagram's built-in signals.

See also:
AbstractCartesianDiagram::addAxis()

Definition at line 211 of file KDChartAbstractAxis.cpp.

References d, and KDChart::AbstractAxis::update().

Referenced by KDChart::AbstractAxis::createObserver().

00212 {
00213     if( d->observer ){
00214         connect( d->observer, SIGNAL( diagramDataChanged( AbstractDiagram *) ),
00215                 this, SLOT( update() ) );
00216     }
00217 }

const AbstractCoordinatePlane * AbstractAxis::coordinatePlane (  )  const [inherited]

Convenience function, returns the coordinate plane, in which this axis is used.

If the axis is not used in a coordinate plane, the return value is Zero.

Definition at line 349 of file KDChartAbstractAxis.cpp.

References d.

Referenced by KDChart::CartesianCoordinatePlane::sharedAxisMasterPlane().

00350 {
00351     if( d->diagram() )
00352         return d->diagram()->coordinatePlane();
00353     return 0;
00354 }

void AbstractAxis::createObserver ( AbstractDiagram diagram  )  [inherited]

Definition at line 177 of file KDChartAbstractAxis.cpp.

References KDChart::AbstractAxis::connectSignals(), and d.

Referenced by KDChart::AbstractCartesianDiagram::addAxis().

00178 {
00179     if( d->setDiagram( diagram ) )
00180         connectSignals();
00181 }

const QString AbstractAxis::customizedLabel ( const QString &  label  )  const [virtual, inherited]

Implement this method if you want to adjust axis labels before they are printed.

KD Chart is calling this method immediately before drawing the text, this means: What you return here will be drawn without further modifications.

Parameters:
label The text of the label as KD Chart has calculated it automatically (or as it was taken from a QStringList provided by you, resp.)
Returns:
The text to be drawn. By default this is the same as label.

Definition at line 161 of file KDChartAbstractAxis.cpp.

Referenced by KDChart::LeveyJenningsAxis::paintAsOrdinate(), and KDChart::CartesianAxis::paintCtx().

00162 {
00163     return label;
00164 }

void AbstractAxis::delayedInit (  )  [protected, virtual, slot, inherited]

called for initializing after the c'tor has completed

Definition at line 134 of file KDChartAbstractAxis.cpp.

References d.

Referenced by KDChart::AbstractAxis::AbstractAxis().

00135 {
00136     // We call setDiagram() here, because the c'tor of Private
00137     // only has stored the pointers, but it did not call setDiagram().
00138     if( d )
00139         d->setDiagram( 0, true /* delayedInit */ );
00140 }

void AbstractAxis::deleteObserver ( AbstractDiagram diagram  )  [inherited]

Definition at line 193 of file KDChartAbstractAxis.cpp.

References d.

Referenced by KDChart::AbstractCartesianDiagram::takeAxis(), and KDChart::AbstractCartesianDiagram::~AbstractCartesianDiagram().

00194 {
00195     d->unsetDiagram( diagram );
00196 }

const AbstractDiagram * KDChart::AbstractAxis::diagram (  )  const [inherited]

Definition at line 356 of file KDChartAbstractAxis.cpp.

References d.

Referenced by KDChart::CartesianAxis::paintCtx(), KDChart::CartesianAxis::~CartesianAxis(), and KDChart::LeveyJenningsAxis::~LeveyJenningsAxis().

00357 {
00358     return d->diagram();
00359 }

Qt::Orientations TernaryAxis::expandingDirections (  )  const [virtual]

Definition at line 131 of file KDChartTernaryAxis.cpp.

00132 {
00133     return Qt::Vertical | Qt::Horizontal;
00134 }

FrameAttributes AbstractAreaBase::frameAttributes (  )  const [inherited]

Definition at line 107 of file KDChartAbstractAreaBase.cpp.

References d.

Referenced by KDChart::Legend::clone(), KDChart::AbstractAreaBase::compare(), and updateCommonBrush().

00108 {
00109     return d->frameAttributes;
00110 }

QRect TernaryAxis::geometry (  )  const [virtual]

Implements KDChart::AbstractAxis.

Definition at line 105 of file KDChartTernaryAxis.cpp.

00106 {
00107     return m_geometry;
00108 }

void AbstractAreaBase::getFrameLeadings ( int &  left,
int &  top,
int &  right,
int &  bottom 
) const [inherited]

Definition at line 213 of file KDChartAbstractAreaBase.cpp.

References d.

Referenced by KDChart::AbstractAreaBase::innerRect(), and KDChart::AbstractAreaWidget::paintAll().

00214 {
00215     if( d && d->frameAttributes.isVisible() ){
00216         const int padding = qMax( d->frameAttributes.padding(), 0 );
00217         left   = padding;
00218         top    = padding;
00219         right  = padding;
00220         bottom = padding;
00221     }else{
00222         left   = 0;
00223         top    = 0;
00224         right  = 0;
00225         bottom = 0;
00226     }
00227 }

bool TernaryAxis::hasDefaultTitleTextAttributes (  )  const

Definition at line 202 of file KDChartTernaryAxis.cpp.

00203 {
00204     TextAttributes a;
00205     return m_titleAttributes == a;
00206 }

QRect AbstractAreaBase::innerRect (  )  const [protected, inherited]

Definition at line 229 of file KDChartAbstractAreaBase.cpp.

References KDChart::AbstractAreaBase::areaGeometry(), and KDChart::AbstractAreaBase::getFrameLeadings().

Referenced by KDChart::TextArea::paintAll(), and KDChart::AbstractArea::paintAll().

00230 {
00231     int left;
00232     int top;
00233     int right;
00234     int bottom;
00235     getFrameLeadings( left, top, right, bottom );
00236     return
00237         QRect( QPoint(0,0), areaGeometry().size() )
00238             .adjusted( left, top, -right, -bottom );
00239 }

bool TernaryAxis::isEmpty (  )  const [virtual]

Definition at line 99 of file KDChartTernaryAxis.cpp.

00100 {
00101     // todo: what's this method for?
00102     return false;
00103 }

QStringList AbstractAxis::labels (  )  const [inherited]

Returns a list of strings, that are used as axis labels, as set via setLabels.

See also:
setLabels

Definition at line 306 of file KDChartAbstractAxis.cpp.

References d.

Referenced by KDChart::AbstractAxis::compare(), KDChart::LeveyJenningsAxis::paintAsOrdinate(), paintCtx(), and KDChart::CartesianAxis::paintCtx().

00307 {
00308     return d->hardLabels;
00309 }

int AbstractArea::leftOverlap ( bool  doNotRecalculate = false  )  const [virtual, inherited]

This is called at layout time by KDChart::AutoSpacerLayoutItem::sizeHint().

The method triggers AbstractArea::sizeHint() to find out the amount of overlap at the left edge of the area.

Note:
The default implementation is not using any caching, it might make sense to implement a more sophisticated solution for derived classes that have complex work to do in sizeHint(). All we have here is a primitive flag to be set by the caller if it is sure that no sizeHint() needs to be called.

Definition at line 77 of file KDChartAbstractArea.cpp.

References d.

Referenced by KDChart::AutoSpacerLayoutItem::sizeHint().

00078 {
00079     // Re-calculate the sizes,
00080     // so we also get the amountOf..Overlap members set newly:
00081     if( ! doNotRecalculate )
00082         sizeHint();
00083     return d->amountOfLeftOverlap;
00084 }

QSize TernaryAxis::maximumSize (  )  const [virtual]

Definition at line 121 of file KDChartTernaryAxis.cpp.

00122 {
00123     return QSize( 300, 200 );
00124 }

QSize TernaryAxis::minimumSize (  )  const [virtual]

Definition at line 115 of file KDChartTernaryAxis.cpp.

00116 {
00117     // todo: return realistic sizes
00118     return QSize( 100, 100 );
00119 }

bool KDChart::AbstractAxis::observedBy ( AbstractDiagram diagram  )  const [inherited]

Definition at line 361 of file KDChartAbstractAxis.cpp.

References d.

00362 {
00363     return d->hasDiagram( diagram );
00364 }

void TernaryAxis::paint ( QPainter *   )  [virtual]

Implements KDChart::AbstractLayoutItem.

Definition at line 74 of file KDChartTernaryAxis.cpp.

00075 {
00076     // not used
00077 }

void TernaryAxis::paintAll ( QPainter &  painter  )  [virtual]

Call paintAll, if you want the background and the frame to be drawn before the normal paint() is invoked automatically.

Reimplemented from KDChart::AbstractArea.

Definition at line 69 of file KDChartTernaryAxis.cpp.

00070 {
00071     // not used
00072 }

void AbstractAreaBase::paintBackground ( QPainter &  painter,
const QRect &  rectangle 
) [virtual, inherited]

Definition at line 197 of file KDChartAbstractAreaBase.cpp.

References d, and KDChart::AbstractAreaBase::paintBackgroundAttributes().

Referenced by KDChart::TextArea::paintAll(), KDChart::AbstractAreaWidget::paintAll(), and KDChart::AbstractArea::paintAll().

00198 {
00199     Q_ASSERT_X ( d != 0, "AbstractAreaBase::paintBackground()",
00200                 "Private class was not initialized!" );
00201     paintBackgroundAttributes( painter, rect, d->backgroundAttributes );
00202 }

void AbstractAreaBase::paintBackgroundAttributes ( QPainter &  painter,
const QRect &  rectangle,
const KDChart::BackgroundAttributes attributes 
) [static, inherited]

Definition at line 128 of file KDChartAbstractAreaBase.cpp.

References KDChart::BackgroundAttributes::BackgroundPixmapModeCentered, KDChart::BackgroundAttributes::BackgroundPixmapModeNone, KDChart::BackgroundAttributes::BackgroundPixmapModeScaled, KDChart::BackgroundAttributes::BackgroundPixmapModeStretched, KDChart::BackgroundAttributes::brush(), KDChart::BackgroundAttributes::isVisible(), m, KDChart::BackgroundAttributes::pixmap(), and KDChart::BackgroundAttributes::pixmapMode().

Referenced by KDChart::AbstractAreaBase::paintBackground().

00130 {
00131     if( !attributes.isVisible() ) return;
00132 
00133     /* first draw the brush (may contain a pixmap)*/
00134     if( Qt::NoBrush != attributes.brush().style() ) {
00135         KDChart::PainterSaver painterSaver( &painter );
00136         painter.setPen( Qt::NoPen );
00137         const QPointF newTopLeft( painter.deviceMatrix().map( rect.topLeft() ) );
00138         painter.setBrushOrigin( newTopLeft );
00139         painter.setBrush( attributes.brush() );
00140         painter.drawRect( rect.adjusted( 0, 0, -1, -1 ) );
00141     }
00142     /* next draw the backPixmap over the brush */
00143     if( !attributes.pixmap().isNull() &&
00144         attributes.pixmapMode() != BackgroundAttributes::BackgroundPixmapModeNone ) {
00145         QPointF ol = rect.topLeft();
00146         if( BackgroundAttributes::BackgroundPixmapModeCentered == attributes.pixmapMode() )
00147         {
00148             ol.setX( rect.center().x() - attributes.pixmap().width() / 2 );
00149             ol.setY( rect.center().y() - attributes.pixmap().height()/ 2 );
00150             painter.drawPixmap( ol, attributes.pixmap() );
00151         } else {
00152             QMatrix m;
00153             double zW = (double)rect.width()  / (double)attributes.pixmap().width();
00154             double zH = (double)rect.height() / (double)attributes.pixmap().height();
00155             switch( attributes.pixmapMode() ) {
00156             case BackgroundAttributes::BackgroundPixmapModeScaled:
00157             {
00158                 double z;
00159                 z = qMin( zW, zH );
00160                 m.scale( z, z );
00161             }
00162             break;
00163             case BackgroundAttributes::BackgroundPixmapModeStretched:
00164                 m.scale( zW, zH );
00165                 break;
00166             default:
00167                 ; // Cannot happen, previously checked
00168             }
00169             QPixmap pm = attributes.pixmap().transformed( m );
00170             ol.setX( rect.center().x() - pm.width() / 2 );
00171             ol.setY( rect.center().y() - pm.height()/ 2 );
00172             painter.drawPixmap( ol, pm );
00173         }
00174     }
00175 }

void TernaryAxis::paintCtx ( PaintContext context  )  [virtual]

Default impl: Paint the complete item using its layouted position and size.

Reimplemented from KDChart::AbstractLayoutItem.

Definition at line 79 of file KDChartTernaryAxis.cpp.

References KDChart::PaintContext::coordinatePlane(), KDChart::AbstractAxis::labels(), p, KDChart::PaintContext::painter(), PrerenderedLabel::pixmap(), PrerenderedElement::position(), KDChart::PaintContext::rectangle(), PrerenderedLabel::referencePointLocation(), and KDChart::TernaryCoordinatePlane::translate().

00080 {
00081     QPainter* p = paintContext->painter();
00082     TernaryCoordinatePlane* plane =
00083         (TernaryCoordinatePlane*) paintContext->coordinatePlane();
00084     // QObject* refArea = plane->parent();
00085     QRectF drawArea = paintContext->rectangle();
00086     QRectF titleArea;
00087 
00088     // paint the axis label (across the triangle, that one):
00089     QList<PrerenderedLabel*> labels;
00090     labels << m_label << m_fifty;
00091     Q_FOREACH( PrerenderedLabel* label, labels ) {
00092         const QPixmap& pixmap = label->pixmap();
00093         QPointF point = plane->translate( label->position() )
00094                         - label->referencePointLocation();
00095         p->drawPixmap( point, pixmap );
00096     }
00097 }

void AbstractAreaBase::paintFrame ( QPainter &  painter,
const QRect &  rectangle 
) [virtual, inherited]

Definition at line 205 of file KDChartAbstractAreaBase.cpp.

References d, and KDChart::AbstractAreaBase::paintFrameAttributes().

Referenced by KDChart::TextArea::paintAll(), KDChart::AbstractAreaWidget::paintAll(), and KDChart::AbstractArea::paintAll().

00206 {
00207     Q_ASSERT_X ( d != 0, "AbstractAreaBase::paintFrame()",
00208                 "Private class was not initialized!" );
00209     paintFrameAttributes( painter, rect, d->frameAttributes );
00210 }

void AbstractAreaBase::paintFrameAttributes ( QPainter &  painter,
const QRect &  rectangle,
const KDChart::FrameAttributes attributes 
) [static, inherited]

Definition at line 178 of file KDChartAbstractAreaBase.cpp.

References KDChart::FrameAttributes::isVisible(), KDChart::FrameAttributes::pen(), and KDChart::PrintingParameters::scalePen().

Referenced by KDChart::AbstractAreaBase::paintFrame().

00180 {
00181 
00182     if( !attributes.isVisible() ) return;
00183 
00184     // Note: We set the brush to NoBrush explicitly here.
00185     //       Otherwise we might get a filled rectangle, so any
00186     //       previously drawn background would be overwritten by that area.
00187 
00188     const QPen   oldPen(   painter.pen() );
00189     const QBrush oldBrush( painter.brush() );
00190     painter.setPen(  PrintingParameters::scalePen( attributes.pen() ) );
00191     painter.setBrush( Qt::NoBrush );
00192     painter.drawRect( rect.adjusted( 0, 0, -1, -1 ) );
00193     painter.setBrush( oldBrush );
00194     painter.setPen( oldPen );
00195 }

void AbstractArea::paintIntoRect ( QPainter &  painter,
const QRect &  rect 
) [virtual, inherited]

Draws the background and frame, then calls paint().

In most cases there is no need to overwrite this method in a derived class, but you would overwrite AbstractLayoutItem::paint() instead.

Definition at line 111 of file KDChartAbstractArea.cpp.

References KDChart::AbstractArea::paintAll().

00112 {
00113     const QRect oldGeometry( geometry() );
00114     if( oldGeometry != rect )
00115         setGeometry( rect );
00116     painter.translate( rect.left(), rect.top() );
00117     paintAll( painter );
00118     painter.translate( -rect.left(), -rect.top() );
00119     if( oldGeometry != rect )
00120         setGeometry( oldGeometry );
00121 }

QLayout* KDChart::AbstractLayoutItem::parentLayout (  )  [inherited]

Definition at line 79 of file KDChartLayoutItems.h.

00080         {
00081             return mParentLayout;
00082         }

const Position TernaryAxis::position (  )  const [virtual]

Definition at line 136 of file KDChartTernaryAxis.cpp.

Referenced by requiredMargins(), and setPosition().

00137 {
00138     return m_position;
00139 }

void KDChart::AbstractArea::positionChanged ( AbstractArea  )  [signal, inherited]

Referenced by KDChart::AbstractArea::positionHasChanged().

void AbstractArea::positionHasChanged (  )  [protected, virtual, inherited]

Reimplemented from KDChart::AbstractAreaBase.

Definition at line 155 of file KDChartAbstractArea.cpp.

References KDChart::AbstractArea::positionChanged().

00156 {
00157     emit positionChanged( this );
00158 }

void KDChart::AbstractLayoutItem::removeFromParentLayout (  )  [inherited]

Definition at line 83 of file KDChartLayoutItems.h.

Referenced by KDChart::Chart::takeCoordinatePlane().

00084         {
00085             if( mParentLayout ){
00086                 if( widget() )
00087                     mParentLayout->removeWidget( widget() );
00088                 else
00089                     mParentLayout->removeItem( this );
00090             }
00091         }

QPair< QSizeF, QSizeF > TernaryAxis::requiredMargins (  )  const

Definition at line 261 of file KDChartTernaryAxis.cpp.

References PrerenderedLabel::pixmap(), position(), KDChartEnums::PositionEast, KDChartEnums::PositionSouth, KDChartEnums::PositionWest, and PrerenderedLabel::referencePointLocation().

Referenced by KDChart::TernaryCoordinatePlane::layoutDiagrams().

00262 {
00263     QSizeF topleft( 0.0, 0.0 );
00264     QSizeF bottomRight( 0.0, 0.0 );
00265 
00266     switch( position().value() ) {
00267     case KDChartEnums::PositionSouth:
00268         // the label of the south axis is, in fact, up north.
00269         topleft.setHeight( m_label->pixmap().height() );
00270         bottomRight.setHeight( m_fifty->pixmap().height() );
00271         break;
00272     case KDChartEnums::PositionWest:
00273         bottomRight.setWidth( m_label->pixmap().width()
00274                               - m_label->referencePointLocation().x() );
00275         bottomRight.setHeight( m_label->pixmap().height()
00276                                - m_label->referencePointLocation().y() );
00277         break;
00278     case KDChartEnums::PositionEast:
00279         topleft.setWidth( m_label->pixmap().width()
00280                           - ( m_label->pixmap().width()
00281                               - m_label->referencePointLocation().x() ) );
00282         bottomRight.setHeight( m_label->pixmap().height()
00283                                - ( m_label->pixmap().height()
00284                                    - m_label->referencePointLocation().y() ) );
00285         break;
00286     default:
00287         qDebug() << "TernaryAxis::requiredMargins: unknown location";
00288     }
00289 //     qDebug() << "TernaryAxis::requiredMargins:" << topleft << bottomRight;
00290     return QPair<QSizeF, QSizeF>( topleft, bottomRight );
00291 }

void TernaryAxis::resetTitleTextAttributes (  ) 

Definition at line 195 of file KDChartTernaryAxis.cpp.

Referenced by TernaryAxis().

00196 {
00197     TextAttributes a;
00198     m_titleAttributes = a;
00199     updatePrerenderedLabels();
00200 }

int AbstractArea::rightOverlap ( bool  doNotRecalculate = false  )  const [virtual, inherited]

This is called at layout time by KDChart::AutoSpacerLayoutItem::sizeHint().

The method triggers AbstractArea::sizeHint() to find out the amount of overlap at the right edge of the area.

Note:
The default implementation is not using any caching, it might make sense to implement a more sophisticated solution for derived classes that have complex work to do in sizeHint(). All we have here is a primitive flag to be set by the caller if it is sure that no sizeHint() needs to be called.

Definition at line 85 of file KDChartAbstractArea.cpp.

References d.

Referenced by KDChart::AutoSpacerLayoutItem::sizeHint().

00086 {
00087     // Re-calculate the sizes,
00088     // so we also get the amountOf..Overlap members set newly:
00089     if( ! doNotRecalculate )
00090         sizeHint();
00091     return d->amountOfRightOverlap;
00092 }

RulerAttributes AbstractAxis::rulerAttributes (  )  const [inherited]

Returns the attributes to be used for painting the rulers.

See also:
setRulerAttributes

Definition at line 270 of file KDChartAbstractAxis.cpp.

References d.

Referenced by KDChart::CartesianAxis::paintCtx().

00271 {
00272         return d->rulerAttributes;
00273 }

void AbstractAreaBase::setBackgroundAttributes ( const BackgroundAttributes a  )  [inherited]

Definition at line 112 of file KDChartAbstractAreaBase.cpp.

References d, and KDChart::AbstractAreaBase::positionHasChanged().

00113 {
00114     if( d->backgroundAttributes == a )
00115         return;
00116 
00117     d->backgroundAttributes = a;
00118     positionHasChanged();
00119 }

void AbstractAreaBase::setFrameAttributes ( const FrameAttributes a  )  [inherited]

Definition at line 98 of file KDChartAbstractAreaBase.cpp.

References d, and KDChart::AbstractAreaBase::positionHasChanged().

Referenced by KDChart::Legend::clone().

00099 {
00100     if( d->frameAttributes == a )
00101         return;
00102 
00103     d->frameAttributes = a;
00104     positionHasChanged();
00105 }

void TernaryAxis::setGeometry ( const QRect &  rect  )  [virtual]

Implements KDChart::AbstractAxis.

Definition at line 110 of file KDChartTernaryAxis.cpp.

00111 {
00112     m_geometry = rect;
00113 }

void AbstractAxis::setLabels ( const QStringList &  list  )  [inherited]

Use this to specify your own set of strings, to be used as axis labels.

Labels specified via setLabels take precedence: If a non-empty list is passed, KD Chart will use these strings as axis labels, instead of calculating them.

If you a smaller number of strings than the number of labels drawn at this axis, KD Chart will iterate over the list, repeating the strings, until all labels are drawn. As an example you could specify the seven days of the week as abscissa labels, which would be repeatedly used then.

By passing an empty QStringList you can reset the default behaviour.

See also:
labels, setShortLabels

Definition at line 292 of file KDChartAbstractAxis.cpp.

References d, and KDChart::AbstractAxis::update().

Referenced by KDChart::LeveyJenningsAxis::paintAsAbscissa().

00293 {
00294     if( d->hardLabels == list )
00295         return;
00296 
00297     d->hardLabels = list;
00298     update();
00299 }

void KDChart::AbstractLayoutItem::setParentLayout ( QLayout *  lay  )  [inherited]

Definition at line 75 of file KDChartLayoutItems.h.

00076         {
00077             mParentLayout = lay;
00078         }

void KDChart::AbstractLayoutItem::setParentWidget ( QWidget widget  )  [virtual, inherited]

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 65 of file KDChartLayoutItems.cpp.

References KDChart::AbstractLayoutItem::mParent.

Referenced by KDChart::HeaderFooter::setParent(), and KDChart::AbstractCartesianDiagram::takeAxis().

00066 {
00067     mParent = widget;
00068 }

void TernaryAxis::setPosition ( Position  p  )  [virtual]

Definition at line 141 of file KDChartTernaryAxis.cpp.

References position(), KDChartEnums::PositionEast, KDChartEnums::PositionSouth, KDChartEnums::PositionWest, PrerenderedLabel::setText(), and KDChart::Position::value().

Referenced by TernaryAxis().

00142 {
00143     if ( p == position() ) return;
00144 
00145     if ( p != KDChartEnums::PositionWest
00146          && p != KDChartEnums::PositionEast
00147          && p != KDChartEnums::PositionSouth )
00148     {
00149         qDebug() << "TernaryAxis::setPosition: only south, east and west are supported "
00150             "positions for ternary axes.";
00151         return;
00152     }
00153 
00154     if ( m_title.isEmpty() )
00155         switch( p.value() ) {
00156         case KDChartEnums::PositionSouth:
00157             m_label->setText( tr( "A" ) );
00158             break;
00159         case KDChartEnums::PositionWest:
00160             m_label->setText( tr( "C" ) );
00161             break;
00162         case KDChartEnums::PositionEast:
00163             m_label->setText( tr( "B" ) );
00164             break;
00165         default:
00166             break;
00167         }
00168 
00169     m_position = p;
00170     updatePrerenderedLabels(); // position has changed
00171 }

void AbstractAxis::setRulerAttributes ( const RulerAttributes a  )  [inherited]

Use this to specify the attributes used to paint the axis ruler.

Every axis has a default set of ruler attributes that is exactly the same among them. Use this method to specify your own attributes.

See also:
rulerAttributes

Definition at line 259 of file KDChartAbstractAxis.cpp.

References d, and KDChart::AbstractAxis::update().

00260 {
00261         d->rulerAttributes = a;
00262         update();
00263 }

void AbstractAxis::setShortLabels ( const QStringList &  list  )  [inherited]

Use this to specify your own set of strings, to be used as axis labels, in case the normal labels are too long.

Note:
Setting done via setShortLabels will be ignored, if you did not pass a non-empty string list via setLabels too!
By passing an empty QStringList you can reset the default behaviour.

See also:
shortLabels, setLabels

Definition at line 322 of file KDChartAbstractAxis.cpp.

References d, and KDChart::AbstractAxis::update().

00323 {
00324     if( d->hardShortLabels == list )
00325         return;
00326 
00327     d->hardShortLabels = list;
00328     update();
00329 }

void AbstractAxis::setTextAttributes ( const TextAttributes a  )  [inherited]

Use this to specify the text attributes to be used for axis labels.

By default, the reference area will be set at painting time. It will be the then-valid coordinate plane's parent widget, so normally, it will be the KDChart::Chart. Thus the labels of all of your axes in all of your diagrams within that Chart will be drawn in same font size, by default.

See also:
textAttributes, setLabels

Definition at line 231 of file KDChartAbstractAxis.cpp.

References d, and KDChart::AbstractAxis::update().

Referenced by KDChart::LeveyJenningsAxis::setType().

00232 {
00233     if( d->textAttributes == a )
00234         return;
00235 
00236     d->textAttributes = a;
00237     update();
00238 }

void TernaryAxis::setTitleText ( const QString &  text  ) 

Definition at line 173 of file KDChartTernaryAxis.cpp.

References PrerenderedLabel::setText().

00174 {
00175     m_title = text; // do not remove
00176     m_label->setText( text );
00177 }

void TernaryAxis::setTitleTextAttributes ( const TextAttributes a  ) 

Definition at line 184 of file KDChartTernaryAxis.cpp.

00185 {
00186     m_titleAttributes = a;
00187     updatePrerenderedLabels();
00188 }

QStringList AbstractAxis::shortLabels (  )  const [inherited]

Returns a list of strings, that are used as axis labels, as set via setShortLabels.

Note:
Setting done via setShortLabels will be ignored, if you did not pass a non-empty string list via setLabels too!
See also:
setShortLabels

Definition at line 339 of file KDChartAbstractAxis.cpp.

References d.

Referenced by KDChart::AbstractAxis::compare(), and KDChart::CartesianAxis::paintCtx().

00340 {
00341     return d->hardShortLabels;
00342 }

QSize TernaryAxis::sizeHint (  )  const [virtual]

Definition at line 126 of file KDChartTernaryAxis.cpp.

00127 {
00128     return QSize( 150, 100 );
00129 }

void KDChart::AbstractLayoutItem::sizeHintChanged (  )  const [virtual, inherited]

Report changed size hint: ask the parent widget to recalculate the layout.

Definition at line 87 of file KDChartLayoutItems.cpp.

References KDChart::AbstractLayoutItem::mParent.

Referenced by KDChart::TextLayoutItem::sizeHintAndRotatedCorners().

00088 {
00089     // This is exactly like what QWidget::updateGeometry does.
00090 //  qDebug("KDChart::AbstractLayoutItem::sizeHintChanged() called");
00091     if( mParent ) {
00092         if ( mParent->layout() )
00093             mParent->layout()->invalidate();
00094         else
00095             QApplication::postEvent( mParent, new QEvent( QEvent::LayoutRequest ) );
00096     }
00097 }

TextAttributes AbstractAxis::textAttributes (  )  const [inherited]

Returns the text attributes to be used for axis labels.

See also:
setTextAttributes

Definition at line 245 of file KDChartAbstractAxis.cpp.

References d.

Referenced by KDChart::AbstractAxis::compare(), KDChart::LeveyJenningsAxis::paintAsAbscissa(), KDChart::LeveyJenningsAxis::paintAsOrdinate(), KDChart::CartesianAxis::paintCtx(), KDChart::LeveyJenningsAxis::setType(), and KDChart::CartesianAxis::titleTextAttributes().

00246 {
00247     return d->textAttributes;
00248 }

QString TernaryAxis::titleText (  )  const

Definition at line 179 of file KDChartTernaryAxis.cpp.

References PrerenderedLabel::text().

00180 {
00181     return m_label->text();
00182 }

TextAttributes TernaryAxis::titleTextAttributes (  )  const

Definition at line 190 of file KDChartTernaryAxis.cpp.

00191 {
00192     return m_titleAttributes;
00193 }

int AbstractArea::topOverlap ( bool  doNotRecalculate = false  )  const [virtual, inherited]

This is called at layout time by KDChart::AutoSpacerLayoutItem::sizeHint().

The method triggers AbstractArea::sizeHint() to find out the amount of overlap at the top edge of the area.

Note:
The default implementation is not using any caching, it might make sense to implement a more sophisticated solution for derived classes that have complex work to do in sizeHint(). All we have here is a primitive flag to be set by the caller if it is sure that no sizeHint() needs to be called.

Definition at line 93 of file KDChartAbstractArea.cpp.

References d.

Referenced by KDChart::AutoSpacerLayoutItem::sizeHint().

00094 {
00095     // Re-calculate the sizes,
00096     // so we also get the amountOf..Overlap members set newly:
00097     if( ! doNotRecalculate )
00098         sizeHint();
00099     return d->amountOfTopOverlap;
00100 }

void KDChart::AbstractAxis::update (  )  [slot, inherited]

Definition at line 366 of file KDChartAbstractAxis.cpp.

References d.

Referenced by KDChart::AbstractAxis::connectSignals(), KDChart::CartesianAxis::setAnnotations(), KDChart::AbstractAxis::setLabels(), KDChart::AbstractAxis::setRulerAttributes(), KDChart::AbstractAxis::setShortLabels(), and KDChart::AbstractAxis::setTextAttributes().

00367 {
00368     if( d->diagram() )
00369         d->diagram()->update();
00370 }


Member Data Documentation

QWidget* KDChart::AbstractLayoutItem::mParent [protected, inherited]

Definition at line 93 of file KDChartLayoutItems.h.

Referenced by KDChart::AbstractLayoutItem::setParentWidget(), KDChart::TextLayoutItem::setText(), KDChart::TextLayoutItem::setTextAlignment(), KDChart::TextLayoutItem::setTextAttributes(), and KDChart::AbstractLayoutItem::sizeHintChanged().

QLayout* KDChart::AbstractLayoutItem::mParentLayout [protected, inherited]

Definition at line 94 of file KDChartLayoutItems.h.

Referenced by KDChart::AutoSpacerLayoutItem::paint().


The documentation for this class was generated from the following files:
Generated on Thu Mar 4 23:26:38 2010 for KD Chart 2 by  doxygen 1.5.4