Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

KDChart::AbstractCoordinatePlane Class Reference

#include <KDChartAbstractCoordinatePlane.h>

Inheritance diagram for KDChart::AbstractCoordinatePlane:

[legend]
Collaboration diagram for KDChart::AbstractCoordinatePlane:
[legend]
List of all members.

Public Types

enum  AxesCalcMode {
  Linear,
  Logarithmic
}

Public Member Functions

virtual void addDiagram (AbstractDiagram *diagram)
 Adds a diagram to this coordinate plane.

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.

AbstractDiagramdiagram ()
ConstAbstractDiagramList diagrams () const
AbstractDiagramList diagrams ()
virtual Qt::Orientations expandingDirections () const
 pure virtual in QLayoutItem

FrameAttributes frameAttributes () const
virtual QRect geometry () const
 pure virtual in QLayoutItem

void getFrameLeadings (int &left, int &top, int &right, int &bottom) const
GridAttributes globalGridAttributes () const
DataDimensionsList gridDimensionsList ()
 Returns the dimensions used for drawing the grid lines.

virtual bool isEmpty () const
 pure virtual in QLayoutItem

const bool isVisiblePoint (const QPointF &point) const
 Tests, if a point is visible on the coordinate plane.

virtual void layoutDiagrams ()=0
 Distribute the available space among the diagrams and axes.

void layoutPlanes ()
 Calling layoutPlanes() on the plane triggers the global KDChart::Chart::slotLayoutPlanes().

virtual int leftOverlap (bool doNotRecalculate=false) const
 This is called at layout time by KDChart::AutoSpacerLayoutItem::sizeHint().

virtual QSize maximumSize () const
 pure virtual in QLayoutItem

virtual QSize minimumSize () const
 pure virtual in QLayoutItem

virtual QSize minimumSizeHint () const
 [reimplemented]

void mousePressEvent (QMouseEvent *event)
 reimp

void needLayoutPlanes ()
 Emitted when plane needs to trigger the Chart's layouting of the coord.

void needRelayout ()
 Emitted when plane needs to trigger the Chart's layouting.

void needUpdate ()
 Emitted when plane needs to update its drawings.

virtual void paint (QPainter *)=0
virtual void paintAll (QPainter &painter)
 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 *context)
 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().

const Chartparent () const
Chartparent ()
QLayout * parentLayout ()
void propertiesChanged ()
 Emitted upon change of a property of the Coordinate Plane or any of its components.

AbstractCoordinatePlanereferenceCoordinatePlane () const
 There are two ways, in which planes can be caused to interact, in where they are put layouting wise: The first is the reference plane.

void relayout ()
 Calling relayout() on the plane triggers the global KDChart::Chart::slotRelayout().

void removeFromParentLayout ()
virtual void replaceDiagram (AbstractDiagram *diagram, AbstractDiagram *oldDiagram=0)
 Replaces the old diagram, or appends the diagram, it there is none yet.

virtual int rightOverlap (bool doNotRecalculate=false) const
 This is called at layout time by KDChart::AutoSpacerLayoutItem::sizeHint().

void setBackgroundAttributes (const BackgroundAttributes &a)
void setFrameAttributes (const FrameAttributes &a)
virtual void setGeometry (const QRect &r)
 pure virtual in QLayoutItem

void setGlobalGridAttributes (const GridAttributes &)
 Set the grid attributes to be used by this coordinate plane.

void setGridNeedsRecalculate ()
 Used by the chart to clear the cached grid data.

void setParent (Chart *parent)
 Called internally by KDChart::Chart.

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 setReferenceCoordinatePlane (AbstractCoordinatePlane *plane)
 Set another coordinate plane to be used as the reference plane for this one.

virtual void setZoomCenter (QPointF)
 Set the point (in value coordinates) to be used as the center point in zoom operations.

virtual void setZoomFactorX (double)
 Sets the zoom factor in horizontal direction, that is applied to all coordinate transformations.

virtual void setZoomFactorY (double)
 Sets the zoom factor in vertical direction, that is applied to all coordinate transformations.

virtual QSize sizeHint () const
 pure virtual in QLayoutItem

virtual void sizeHintChanged () const
 Report changed size hint: ask the parent widget to recalculate the layout.

virtual QSizePolicy sizePolicy () const
 [reimplemented]

virtual void takeDiagram (AbstractDiagram *diagram)
 Removes the diagram from the plane, without deleting it.

virtual int topOverlap (bool doNotRecalculate=false) const
 This is called at layout time by KDChart::AutoSpacerLayoutItem::sizeHint().

virtual const QPointF translate (const QPointF &diagramPoint) const=0
 Translate the given point in value space coordinates to a position in pixel space.

virtual QPointF zoomCenter () const
virtual double zoomFactorX () const
virtual double zoomFactorY () const
virtual ~AbstractCoordinatePlane ()

Static Public Member Functions

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

Public Attributes

Q_SIGNALS __pad0__: void destroyedCoordinatePlane( AbstractCoordinatePlane* )
public Q_SLOTS: void update()

Protected Member Functions

 AbstractCoordinatePlane (Chart *parent=0)
virtual QRect areaGeometry () const
virtual DataDimensionsList getDataDimensionsList () const=0
QRect innerRect () const
virtual void positionHasChanged ()

Protected Attributes

QWidgetmParent
QLayout * mParentLayout

Member Enumeration Documentation

enum KDChart::AbstractCoordinatePlane::AxesCalcMode
 

Enumeration values:
Linear 
Logarithmic 

Definition at line 55 of file KDChartAbstractCoordinatePlane.h.

00055 { Linear, Logarithmic };


Constructor & Destructor Documentation

AbstractCoordinatePlane::AbstractCoordinatePlane Chart parent = 0  )  [explicit, protected]
 

Definition at line 51 of file KDChartAbstractCoordinatePlane.cpp.

References d.

00052     : AbstractArea ( new Private() )
00053 {
00054     d->parent = parent;
00055     d->init();
00056 }

AbstractCoordinatePlane::~AbstractCoordinatePlane  )  [virtual]
 

Definition at line 58 of file KDChartAbstractCoordinatePlane.cpp.

00059 {
00060     emit destroyedCoordinatePlane( this );
00061 }


Member Function Documentation

void AbstractCoordinatePlane::addDiagram AbstractDiagram diagram  )  [virtual]
 

Adds a diagram to this coordinate plane.

Parameters:
diagram The diagram to add.
See also:
replaceDiagram, takeDiagram

Reimplemented in KDChart::CartesianCoordinatePlane, and KDChart::PolarCoordinatePlane.

Definition at line 68 of file KDChartAbstractCoordinatePlane.cpp.

References d, layoutDiagrams(), layoutPlanes(), and KDChart::AbstractDiagram::setCoordinatePlane().

Referenced by KDChart::PolarCoordinatePlane::addDiagram(), KDChart::CartesianCoordinatePlane::addDiagram(), and replaceDiagram().

00069 {
00070     // diagrams are invisible and paint through their paint() method
00071     diagram->hide();
00072 
00073     d->diagrams.append( diagram );
00074     diagram->setParent( d->parent );
00075     diagram->setCoordinatePlane( this );
00076     layoutDiagrams();
00077     layoutPlanes(); // there might be new axes, etc
00078     update();
00079 }

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

Definition at line 90 of file KDChartAbstractAreaBase.cpp.

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

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

Implements KDChart::AbstractAreaBase.

Definition at line 150 of file KDChartAbstractArea.cpp.

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

00151 {
00152     return geometry();
00153 }

BackgroundAttributes AbstractAreaBase::backgroundAttributes  )  const [inherited]
 

Definition at line 112 of file KDChartAbstractAreaBase.cpp.

References d.

Referenced by updateCommonBrush().

00113 {
00114     return d->backgroundAttributes;
00115 }

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 75 of file KDChartAbstractAreaBase.cpp.

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

AbstractDiagram * AbstractCoordinatePlane::diagram  ) 
 

Returns:
The first diagram associated with this coordinate plane.

Definition at line 113 of file KDChartAbstractCoordinatePlane.cpp.

References d.

Referenced by KDChart::Widget::diagram(), KDChart::Chart::mousePressEvent(), and KDChart::PolarCoordinatePlane::setStartPosition().

00114 {
00115     if ( d->diagrams.isEmpty() )
00116     {
00117         return 0;
00118     } else {
00119         return d->diagrams.first();
00120     }
00121 }

ConstAbstractDiagramList AbstractCoordinatePlane::diagrams  )  const
 

Returns:
The list of diagrams associated with this coordinate plane.

Definition at line 128 of file KDChartAbstractCoordinatePlane.cpp.

References KDChart::ConstAbstractDiagramList, and d.

00129 {
00130     ConstAbstractDiagramList list;
00131 #ifndef QT_NO_STL
00132     qCopy( d->diagrams.begin(), d->diagrams.end(), std::back_inserter( list ) );
00133 #else
00134     Q_FOREACH( AbstractDiagram * a, d->diagrams )
00135         list.push_back( a );
00136 #endif
00137     return list;
00138 }

AbstractDiagramList AbstractCoordinatePlane::diagrams  ) 
 

Returns:
The list of diagrams associated with this coordinate plane.

Definition at line 123 of file KDChartAbstractCoordinatePlane.cpp.

References KDChart::AbstractDiagramList, and d.

Referenced by KDChart::CartesianCoordinatePlane::getDataDimensionsList(), KDChart::CartesianCoordinatePlane::getRawDataBoundingRectFromDiagrams(), KDChart::PolarCoordinatePlane::layoutDiagrams(), KDChart::CartesianCoordinatePlane::layoutDiagrams(), KDChart::Chart::mousePressEvent(), KDChart::PolarCoordinatePlane::paint(), and KDChart::CartesianCoordinatePlane::paint().

00124 {
00125     return d->diagrams;
00126 }

Qt::Orientations KDChart::AbstractCoordinatePlane::expandingDirections  )  const [virtual]
 

pure virtual in QLayoutItem

Definition at line 208 of file KDChartAbstractCoordinatePlane.cpp.

00209 {
00210     return Qt::Vertical | Qt::Horizontal;
00211 }

FrameAttributes AbstractAreaBase::frameAttributes  )  const [inherited]
 

Definition at line 102 of file KDChartAbstractAreaBase.cpp.

References d.

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

00103 {
00104     return d->frameAttributes;
00105 }

QRect KDChart::AbstractCoordinatePlane::geometry  )  const [virtual]
 

pure virtual in QLayoutItem

Definition at line 242 of file KDChartAbstractCoordinatePlane.cpp.

References d.

Referenced by KDChart::Chart::mousePressEvent(), and KDChart::PolarCoordinatePlane::paint().

00243 {
00244     return d->geometry;
00245 }

virtual DataDimensionsList KDChart::AbstractCoordinatePlane::getDataDimensionsList  )  const [protected, pure virtual]
 

Implemented in KDChart::CartesianCoordinatePlane, and KDChart::PolarCoordinatePlane.

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

Definition at line 204 of file KDChartAbstractAreaBase.cpp.

References d.

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

00205 {
00206     if( d && d->frameAttributes.isVisible() ){
00207         const int padding = qMax( d->frameAttributes.padding(), 0 );
00208         left   = padding;
00209         top    = padding;
00210         right  = padding;
00211         bottom = padding;
00212     }else{
00213         left   = 0;
00214         top    = 0;
00215         right  = 0;
00216         bottom = 0;
00217     }
00218 }

GridAttributes KDChart::AbstractCoordinatePlane::globalGridAttributes  )  const
 

Returns:
The grid attributes used by this coordinate plane.
See also:
setGlobalGridAttributes

CartesianCoordinatePlane::gridAttributes

Definition at line 157 of file KDChartAbstractCoordinatePlane.cpp.

References d.

Referenced by KDChart::PolarCoordinatePlane::gridAttributes(), and KDChart::CartesianCoordinatePlane::gridAttributes().

00158 {
00159     return d->gridAttributes;
00160 }

KDChart::DataDimensionsList KDChart::AbstractCoordinatePlane::gridDimensionsList  ) 
 

Returns the dimensions used for drawing the grid lines.

Returned data is the result of (cached) grid calculations, so - if you need that information for your own tasks - make sure to call again this function after every data modification that has changed the data range, since grid calculation is based upon the data range, thus the grid start/end might have changed if the data was changed.

Note:
Returned list will contain different numbers of DataDimension, depending on the kind of coordinate plane used. For CartesianCoordinatePlane two DataDimension are returned: the first representing grid lines in X direction (matching the Abscissa axes) and the second indicating vertical grid lines (or Ordinate axes, resp.).
Returns:
The dimensions used for drawing the grid lines.
See also:
DataDimension

Definition at line 162 of file KDChartAbstractCoordinatePlane.cpp.

References d, and KDChart::DataDimensionsList.

Referenced by KDChart::CartesianCoordinatePlane::layoutDiagrams(), KDChart::CartesianAxis::maximumSize(), and KDChart::CartesianAxis::paintCtx().

00163 {
00164     //KDChart::DataDimensionsList l( d->grid->updateData( this ) );
00165     //qDebug() << "AbstractCoordinatePlane::gridDimensionsList() Y-range:" << l.last().end - l.last().start << "   step width:" << l.last().stepWidth;
00166     //qDebug() << "AbstractCoordinatePlane::gridDimensionsList() X-range:" << l.first().end - l.first().start << "   step width:" << l.first().stepWidth;
00167     return d->grid->updateData( this );
00168 }

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

Definition at line 220 of file KDChartAbstractAreaBase.cpp.

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

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

00221 {
00222     int left;
00223     int top;
00224     int right;
00225     int bottom;
00226     getFrameLeadings( left, top, right, bottom );
00227     return
00228         QRect( QPoint(0,0), areaGeometry().size() )
00229             .adjusted( left, top, -right, -bottom );
00230 }

bool KDChart::AbstractCoordinatePlane::isEmpty  )  const [virtual]
 

pure virtual in QLayoutItem

Definition at line 201 of file KDChartAbstractCoordinatePlane.cpp.

00202 {
00203     return false; // never empty!
00204     // coordinate planes with no associated diagrams
00205     // are showing a default grid of ()1..10, 1..10) stepWidth 1
00206 }

const bool KDChart::AbstractCoordinatePlane::isVisiblePoint const QPointF &  point  )  const
 

Tests, if a point is visible on the coordinate plane.

Note:
Before calling this function the point must have been translated into coordinate plane space.

Definition at line 275 of file KDChartAbstractCoordinatePlane.cpp.

References d.

00276 {
00277     return d->isVisiblePoint( this, point );
00278 }

virtual void KDChart::AbstractCoordinatePlane::layoutDiagrams  )  [pure virtual]
 

Distribute the available space among the diagrams and axes.

Implemented in KDChart::CartesianCoordinatePlane, and KDChart::PolarCoordinatePlane.

Referenced by addDiagram(), replaceDiagram(), and takeDiagram().

void KDChart::AbstractCoordinatePlane::layoutPlanes  ) 
 

Calling layoutPlanes() on the plane triggers the global KDChart::Chart::slotLayoutPlanes().

Definition at line 259 of file KDChartAbstractCoordinatePlane.cpp.

References needLayoutPlanes().

Referenced by addDiagram(), KDChart::CartesianAxis::layoutPlanes(), KDChart::AbstractCartesianDiagram::layoutPlanes(), and replaceDiagram().

00260 {
00261     //qDebug("KDChart::AbstractCoordinatePlane::relayout() called");
00262     emit needLayoutPlanes();
00263 }

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 KDChart::AbstractCoordinatePlane::maximumSize  )  const [virtual]
 

pure virtual in QLayoutItem

Definition at line 213 of file KDChartAbstractCoordinatePlane.cpp.

Referenced by sizeHint().

00214 {
00215     // No maximum size set. Especially not parent()->size(), we are not layouting
00216     // to the parent widget's size when using Chart::paint()!
00217     return QSize(QLAYOUTSIZE_MAX, QLAYOUTSIZE_MAX);
00218 }

QSize KDChart::AbstractCoordinatePlane::minimumSize  )  const [virtual]
 

pure virtual in QLayoutItem

Definition at line 220 of file KDChartAbstractCoordinatePlane.cpp.

00221 {
00222     return QSize(60, 60); // this default can be overwritten by derived classes
00223 }

QSize KDChart::AbstractCoordinatePlane::minimumSizeHint  )  const [virtual]
 

[reimplemented]

Definition at line 140 of file KDChartAbstractCoordinatePlane.cpp.

00141 {
00142     return QSize( 200, 200 );
00143 }

void KDChart::AbstractCoordinatePlane::mousePressEvent QMouseEvent *  event  ) 
 

reimp

Definition at line 266 of file KDChartAbstractCoordinatePlane.cpp.

References d.

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

00267 {
00268     KDAB_FOREACH( AbstractDiagram * a, d->diagrams )
00269     {
00270         a->mousePressEvent( event );
00271     }
00272 }

void KDChart::AbstractCoordinatePlane::needLayoutPlanes  ) 
 

Emitted when plane needs to trigger the Chart's layouting of the coord.

planes.

Referenced by layoutPlanes().

void KDChart::AbstractCoordinatePlane::needRelayout  ) 
 

Emitted when plane needs to trigger the Chart's layouting.

Referenced by relayout().

void KDChart::AbstractCoordinatePlane::needUpdate  ) 
 

Emitted when plane needs to update its drawings.

virtual void KDChart::AbstractLayoutItem::paint QPainter *   )  [pure virtual, inherited]
 

Implemented in KDChart::CartesianAxis, KDChart::CartesianCoordinatePlane, KDChart::TextLayoutItem, KDChart::MarkerLayoutItem, KDChart::LineLayoutItem, KDChart::LineWithMarkerLayoutItem, KDChart::HorizontalLineLayoutItem, KDChart::VerticalLineLayoutItem, KDChart::AutoSpacerLayoutItem, and KDChart::PolarCoordinatePlane.

Referenced by KDChart::Legend::paint(), KDChart::AbstractLayoutItem::paintAll(), KDChart::AbstractArea::paintAll(), and KDChart::AbstractLayoutItem::paintCtx().

void AbstractArea::paintAll QPainter &  painter  )  [virtual, inherited]
 

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

Reimplemented from KDChart::AbstractLayoutItem.

Definition at line 123 of file KDChartAbstractArea.cpp.

References KDChart::AbstractArea::areaGeometry(), d, KDChart::AbstractAreaBase::innerRect(), KDChart::AbstractLayoutItem::paint(), KDChart::AbstractAreaBase::paintBackground(), and KDChart::AbstractAreaBase::paintFrame().

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

00124 {
00125     // Paint the background and frame
00126     const QRect overlappingArea( geometry().adjusted(
00127             -d->amountOfLeftOverlap,
00128             -d->amountOfTopOverlap,
00129             d->amountOfRightOverlap,
00130             d->amountOfBottomOverlap ) );
00131     paintBackground( painter, overlappingArea );
00132     paintFrame(      painter, overlappingArea );
00133 
00134     // temporarily adjust the widget size, to be sure all content gets calculated
00135     // to fit into the inner rectangle
00136     const QRect oldGeometry( areaGeometry()  );
00137     QRect inner( innerRect() );
00138     inner.moveTo(
00139         oldGeometry.left() + inner.left(),
00140         oldGeometry.top()  + inner.top() );
00141     const bool needAdjustGeometry = oldGeometry != inner;
00142     if( needAdjustGeometry )
00143         setGeometry( inner );
00144     paint( &painter );
00145     if( needAdjustGeometry )
00146         setGeometry( oldGeometry );
00147     //qDebug() << "AbstractAreaWidget::paintAll() done.";
00148 }

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

Definition at line 188 of file KDChartAbstractAreaBase.cpp.

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

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

00189 {
00190     Q_ASSERT_X ( d != 0, "AbstractAreaBase::paintBackground()",
00191                 "Private class was not initialized!" );
00192     paintBackgroundAttributes( painter, rect, d->backgroundAttributes );
00193 }

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

Definition at line 119 of file KDChartAbstractAreaBase.cpp.

References KDChart::BackgroundAttributes::brush(), KDChart::BackgroundAttributes::isVisible(), KDChart::BackgroundAttributes::pixmap(), and KDChart::BackgroundAttributes::pixmapMode().

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

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

void KDChart::AbstractLayoutItem::paintCtx PaintContext context  )  [virtual, inherited]
 

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 }

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

Definition at line 196 of file KDChartAbstractAreaBase.cpp.

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

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

00197 {
00198     Q_ASSERT_X ( d != 0, "AbstractAreaBase::paintFrame()",
00199                 "Private class was not initialized!" );
00200     paintFrameAttributes( painter, rect, d->frameAttributes );
00201 }

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

Definition at line 169 of file KDChartAbstractAreaBase.cpp.

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

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

00171 {
00172 
00173     if( !attributes.isVisible() ) return;
00174 
00175     // Note: We set the brush to NoBrush explicitely here.
00176     //       Otherwise we might get a filled rectangle, so any
00177     //       previously drawn background would be overwritten by that area.
00178 
00179     const QPen   oldPen(   painter.pen() );
00180     const QBrush oldBrush( painter.brush() );
00181     painter.setPen(   attributes.pen() );
00182     painter.setBrush( Qt::NoBrush );
00183     painter.drawRect( rect.adjusted( 0, 0, -1, -1 ) );
00184     painter.setBrush( oldBrush );
00185     painter.setPen(   oldPen );
00186 }

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 }

const KDChart::Chart * KDChart::AbstractCoordinatePlane::parent  )  const
 

Definition at line 190 of file KDChartAbstractCoordinatePlane.cpp.

References d.

00191 {
00192     return d->parent;
00193 }

KDChart::Chart * KDChart::AbstractCoordinatePlane::parent  ) 
 

Definition at line 195 of file KDChartAbstractCoordinatePlane.cpp.

References d.

Referenced by KDChart::CartesianAxis::maximumSize(), and KDChart::CartesianAxis::paintCtx().

00196 {
00197     return d->parent;
00198 }

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

Definition at line 74 of file KDChartLayoutItems.h.

00075         {
00076             return mParentLayout;
00077         }

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

Reimplemented from KDChart::AbstractAreaBase.

Definition at line 155 of file KDChartAbstractArea.cpp.

00156 {
00157     emit positionChanged( this );
00158 }

void KDChart::AbstractCoordinatePlane::propertiesChanged  ) 
 

Emitted upon change of a property of the Coordinate Plane or any of its components.

Referenced by KDChart::CartesianCoordinatePlane::addDiagram(), KDChart::CartesianCoordinatePlane::adjustHorizontalRangeToData(), KDChart::CartesianCoordinatePlane::adjustVerticalRangeToData(), KDChart::CartesianCoordinatePlane::setAutoAdjustGridToZoom(), KDChart::CartesianCoordinatePlane::setAutoAdjustHorizontalRangeToData(), KDChart::CartesianCoordinatePlane::setAutoAdjustVerticalRangeToData(), KDChart::CartesianCoordinatePlane::setAxesCalcModes(), KDChart::CartesianCoordinatePlane::setAxesCalcModeX(), KDChart::CartesianCoordinatePlane::setAxesCalcModeY(), KDChart::PolarCoordinatePlane::setGridAttributes(), KDChart::CartesianCoordinatePlane::setGridAttributes(), KDChart::CartesianCoordinatePlane::setHorizontalRange(), KDChart::CartesianCoordinatePlane::setIsometricScaling(), KDChart::CartesianCoordinatePlane::setVerticalRange(), KDChart::CartesianCoordinatePlane::setZoomCenter(), KDChart::CartesianCoordinatePlane::setZoomFactorX(), and KDChart::CartesianCoordinatePlane::setZoomFactorY().

AbstractCoordinatePlane * KDChart::AbstractCoordinatePlane::referenceCoordinatePlane  )  const
 

There are two ways, in which planes can be caused to interact, in where they are put layouting wise: The first is the reference plane.

If such a reference plane is set, on a plane, it will use the same cell in the layout as that one. In addition to this, planes can share an axis. In that case they will be layed out in relation to each other as suggested by the position of the axis. If, for example Plane1 and Plane2 share an axis at position Left, that will result in the layout: Axis Plane1 Plane 2, vertically. If Plane1 also happens to be Plane2's reference plane, both planes are drawn over each other. The reference plane concept allows two planes to share the same space even if neither has any axis, and in case there are shared axis, it is used to decided, whether the planes should be painted on top of each other or layed out vertically or horizontally next to each other.

Returns:
The reference coordinate plane associated with this one.

Definition at line 180 of file KDChartAbstractCoordinatePlane.cpp.

References d.

00181 {
00182     return d->referenceCoordinatePlane;
00183 }

void KDChart::AbstractCoordinatePlane::relayout  ) 
 

Calling relayout() on the plane triggers the global KDChart::Chart::slotRelayout().

Definition at line 253 of file KDChartAbstractCoordinatePlane.cpp.

References needRelayout().

00254 {
00255     //qDebug("KDChart::AbstractCoordinatePlane::relayout() called");
00256     emit needRelayout();
00257 }

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

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         }

void AbstractCoordinatePlane::replaceDiagram AbstractDiagram diagram,
AbstractDiagram oldDiagram = 0
[virtual]
 

Replaces the old diagram, or appends the diagram, it there is none yet.

Parameters:
diagram The diagram to be used instead of the old diagram. This parameter must not be zero, or the method will do nothing.
oldDiagram The diagram to be removed by the new diagram. This diagram will be deleted automatically. If the parameter is omitted, the very first diagram will be replaced. In case, there was no diagram yet, the new diagram will just be added.
Note:
If you want to re-use the old diagram, call takeDiagram and addDiagram, instead of using replaceDiagram.
See also:
addDiagram, takeDiagram

Definition at line 82 of file KDChartAbstractCoordinatePlane.cpp.

References addDiagram(), d, layoutDiagrams(), layoutPlanes(), and takeDiagram().

00083 {
00084     if( diagram && oldDiagram_ != diagram ){
00085         AbstractDiagram* oldDiagram = oldDiagram_;
00086         if( d->diagrams.count() ){
00087             if( ! oldDiagram )
00088                 oldDiagram = d->diagrams.first();
00089             takeDiagram( oldDiagram );
00090         }
00091         delete oldDiagram;
00092         addDiagram( diagram );
00093         layoutDiagrams();
00094         layoutPlanes(); // there might be new axes, etc
00095         update();
00096     }
00097 }

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 }

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

Definition at line 107 of file KDChartAbstractAreaBase.cpp.

References d.

00108 {
00109     d->backgroundAttributes = a;
00110 }

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

Definition at line 97 of file KDChartAbstractAreaBase.cpp.

References d.

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

00098 {
00099     d->frameAttributes = a;
00100 }

void KDChart::AbstractCoordinatePlane::setGeometry const QRect &  r  )  [virtual]
 

pure virtual in QLayoutItem

Note:
Do not call this function directly, unless you know exactly what you are doing. Geometry management is done by KD Chart's internal layouting measures.

Definition at line 232 of file KDChartAbstractCoordinatePlane.cpp.

References d.

00233 {
00234 //    qDebug() << "KDChart::AbstractCoordinatePlane::setGeometry(" << r << ") called";
00235     if( d->geometry != r ){
00236         d->geometry = r;
00237         // Note: We do *not* call update() here
00238         //       because it would invoke KDChart::update() recursively.
00239     }
00240 }

void KDChart::AbstractCoordinatePlane::setGlobalGridAttributes const GridAttributes  ) 
 

Set the grid attributes to be used by this coordinate plane.

To disable grid painting, for example, your code should like this:

GridAttributes ga = plane->globalGridAttributes(); ga.setGlobalGridVisible( false ); plane->setGlobalGridAttributes( ga );
See also:
globalGridAttributes

CartesianCoordinatePlane::setGridAttributes

Definition at line 151 of file KDChartAbstractCoordinatePlane.cpp.

References d.

00152 {
00153     d->gridAttributes = a;
00154     update();
00155 }

void KDChart::AbstractCoordinatePlane::setGridNeedsRecalculate  ) 
 

Used by the chart to clear the cached grid data.

Definition at line 170 of file KDChartAbstractCoordinatePlane.cpp.

References d.

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

00171 {
00172     d->grid->setNeedRecalculate();
00173 }

void KDChart::AbstractCoordinatePlane::setParent Chart parent  ) 
 

Called internally by KDChart::Chart.

Definition at line 185 of file KDChartAbstractCoordinatePlane.cpp.

References d.

Referenced by KDChart::Chart::addCoordinatePlane(), and KDChart::Chart::takeCoordinatePlane().

00186 {
00187     d->parent = parent;
00188 }

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

Definition at line 70 of file KDChartLayoutItems.h.

00071         {
00072             mParentLayout = lay;
00073         }

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

References KDChart::AbstractLayoutItem::mParent.

Referenced by KDChart::Legend::buildLegend(), and KDChart::AbstractCartesianDiagram::takeAxis().

00065 {
00066     mParent = widget;
00067 }

void KDChart::AbstractCoordinatePlane::setReferenceCoordinatePlane AbstractCoordinatePlane plane  ) 
 

Set another coordinate plane to be used as the reference plane for this one.

Parameters:
plane The coordinate plane to be used the reference plane for this one.
See also:
referenceCoordinatePlane

Definition at line 175 of file KDChartAbstractCoordinatePlane.cpp.

References d.

00176 {
00177     d->referenceCoordinatePlane = plane;
00178 }

virtual void KDChart::AbstractCoordinatePlane::setZoomCenter QPointF   )  [virtual]
 

Set the point (in value coordinates) to be used as the center point in zoom operations.

Parameters:
center The point to use.

Reimplemented in KDChart::CartesianCoordinatePlane, and KDChart::PolarCoordinatePlane.

Definition at line 172 of file KDChartAbstractCoordinatePlane.h.

00172 :
         * \code

virtual void KDChart::AbstractCoordinatePlane::setZoomFactorX double   )  [virtual]
 

Sets the zoom factor in horizontal direction, that is applied to all coordinate transformations.

Reimplemented in KDChart::CartesianCoordinatePlane, and KDChart::PolarCoordinatePlane.

Definition at line 153 of file KDChartAbstractCoordinatePlane.h.

00155 {}

virtual void KDChart::AbstractCoordinatePlane::setZoomFactorY double   )  [virtual]
 

Sets the zoom factor in vertical direction, that is applied to all coordinate transformations.

Reimplemented in KDChart::CartesianCoordinatePlane, and KDChart::PolarCoordinatePlane.

Definition at line 159 of file KDChartAbstractCoordinatePlane.h.

00161 { return QPointF(0.0, 0.0); }

QSize KDChart::AbstractCoordinatePlane::sizeHint  )  const [virtual]
 

pure virtual in QLayoutItem

Definition at line 225 of file KDChartAbstractCoordinatePlane.cpp.

References maximumSize().

00226 {
00227     // we return our maxiumu (which is the full size of the Chart)
00228     // even if we know the plane will be smaller
00229     return maximumSize();
00230 }

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

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

Definition at line 86 of file KDChartLayoutItems.cpp.

Referenced by KDChart::TextLayoutItem::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 }

QSizePolicy KDChart::AbstractCoordinatePlane::sizePolicy  )  const [virtual]
 

[reimplemented]

Definition at line 146 of file KDChartAbstractCoordinatePlane.cpp.

00147 {
00148     return QSizePolicy( QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding );
00149 }

void AbstractCoordinatePlane::takeDiagram AbstractDiagram diagram  )  [virtual]
 

Removes the diagram from the plane, without deleting it.

The plane no longer owns the diagram, so it is the caller's responsibility to delete the diagram.

See also:
addDiagram, replaceDiagram

Definition at line 100 of file KDChartAbstractCoordinatePlane.cpp.

References d, layoutDiagrams(), and KDChart::AbstractDiagram::setCoordinatePlane().

Referenced by replaceDiagram().

00101 {
00102     const int idx = d->diagrams.indexOf( diagram );
00103     if( idx != -1 ){
00104         d->diagrams.removeAt( idx );
00105         diagram->setParent( 0 );
00106         diagram->setCoordinatePlane( 0 );
00107         layoutDiagrams();
00108         update();
00109     }
00110 }

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 }

virtual const QPointF KDChart::AbstractCoordinatePlane::translate const QPointF &  diagramPoint  )  const [pure virtual]
 

Translate the given point in value space coordinates to a position in pixel space.

Parameters:
diagramPoint The point in value coordinates.
Returns:
The translated point.

Implemented in KDChart::CartesianCoordinatePlane, and KDChart::PolarCoordinatePlane.

Referenced by KDChart::PolarDiagram::paint(), and KDChart::LineDiagram::paint().

virtual QPointF KDChart::AbstractCoordinatePlane::zoomCenter  )  const [virtual]
 

Returns:
The center point (in value coordinates) of the coordinate plane, that is used for zoom operations.

Reimplemented in KDChart::CartesianCoordinatePlane, and KDChart::PolarCoordinatePlane.

Definition at line 165 of file KDChartAbstractCoordinatePlane.h.

00168 {}

virtual double KDChart::AbstractCoordinatePlane::zoomFactorX  )  const [virtual]
 

Returns:
The zoom factor in horizontal direction, that is applied to all coordinate transformations.

Reimplemented in KDChart::CartesianCoordinatePlane, and KDChart::PolarCoordinatePlane.

Definition at line 141 of file KDChartAbstractCoordinatePlane.h.

00143 { return 1.0; }

virtual double KDChart::AbstractCoordinatePlane::zoomFactorY  )  const [virtual]
 

Returns:
The zoom factor in vertical direction, that is applied to all coordinate transformations.

Reimplemented in KDChart::CartesianCoordinatePlane, and KDChart::PolarCoordinatePlane.

Definition at line 147 of file KDChartAbstractCoordinatePlane.h.

00149 {}


Member Data Documentation

Q_SIGNALS KDChart::AbstractCoordinatePlane::__pad0__
 

Reimplemented from KDChart::AbstractArea.

Definition at line 297 of file KDChartAbstractCoordinatePlane.h.

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

Definition at line 88 of file KDChartLayoutItems.h.

Referenced by KDChart::AbstractLayoutItem::setParentWidget().

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

Definition at line 89 of file KDChartLayoutItems.h.

public KDChart::AbstractCoordinatePlane::Q_SLOTS
 

Reimplemented in KDChart::CartesianCoordinatePlane, KDChart::CartesianCoordinatePlane, and KDChart::PolarCoordinatePlane.

Definition at line 281 of file KDChartAbstractCoordinatePlane.h.


The documentation for this class was generated from the following files:
Generated on Thu May 10 11:06:30 2007 for KD Chart 2 by doxygen 1.3.6