/**************************************************************************** ** Copyright (C) 2001-2011 Klaralvdalens Datakonsult AB. All rights reserved. ** ** This file is part of the KD Chart library. ** ** Licensees holding valid commercial KD Chart licenses may use this file in ** accordance with the KD Chart Commercial License Agreement provided with ** the Software. ** ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 and version 3 as published by the ** Free Software Foundation and appearing in the file LICENSE.GPL.txt included. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** Contact info@kdab.com if any conditions of this licensing are not ** clear to you. ** **********************************************************************/ #ifndef KDCHARTPLOTTER_H #define KDCHARTPLOTTER_H #include "KDChartAbstractCartesianDiagram.h" #include "KDChartLineAttributes.h" #include "KDChartValueTrackerAttributes.h" namespace KDChart { class ThreeDLineAttributes; /** * @brief Plotter defines a diagram type plotting two-dimensional data. */ class KDCHART_EXPORT Plotter : public AbstractCartesianDiagram { Q_OBJECT Q_DISABLE_COPY( Plotter ) KDCHART_DECLARE_DERIVED_DIAGRAM( Plotter, CartesianCoordinatePlane ) public: class PlotterType; friend class PlotterType; explicit Plotter( QWidget* parent = 0, CartesianCoordinatePlane* plane = 0 ); virtual ~Plotter(); virtual Plotter* clone() const; /** * Returns true if both diagrams have the same settings. */ bool compare( const Plotter* other ) const; enum PlotType { Normal = 0, Percent }; void setType( const PlotType type ); PlotType type() const; void setLineAttributes( const LineAttributes & a ); void setLineAttributes( int column, const LineAttributes & a ); void setLineAttributes( const QModelIndex & index, const LineAttributes & a ); void resetLineAttributes( int column ); void resetLineAttributes( const QModelIndex & index ); LineAttributes lineAttributes() const; LineAttributes lineAttributes( int column ) const; LineAttributes lineAttributes( const QModelIndex & index ) const; void setThreeDLineAttributes( const ThreeDLineAttributes & a ); void setThreeDLineAttributes( int column, const ThreeDLineAttributes & a ); void setThreeDLineAttributes( const QModelIndex & index, const ThreeDLineAttributes & a ); //FIXME(khz): big TODO(khz): add a lot of reset...Attributes() methods to all // appropriate places, for 2.1 (that is: after we have release 2.0.2) :-) ThreeDLineAttributes threeDLineAttributes() const; ThreeDLineAttributes threeDLineAttributes( int column ) const; ThreeDLineAttributes threeDLineAttributes( const QModelIndex & index ) const; void setValueTrackerAttributes( const QModelIndex & index, const ValueTrackerAttributes & a ); ValueTrackerAttributes valueTrackerAttributes( const QModelIndex & index ) const; #if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) // implement AbstractCartesianDiagram /* reimpl */ const int numberOfAbscissaSegments () const; /* reimpl */ const int numberOfOrdinateSegments () const; #else // implement AbstractCartesianDiagram /* reimpl */ int numberOfAbscissaSegments () const; /* reimpl */ int numberOfOrdinateSegments () const; #endif protected: void paint ( PaintContext* paintContext ); public: void resize ( const QSizeF& area ); protected: virtual double threeDItemDepth( const QModelIndex & index ) const; virtual double threeDItemDepth( int column ) const; /** \reimpl */ virtual const QPair calculateDataBoundaries() const; void paintEvent ( QPaintEvent* ); void resizeEvent ( QResizeEvent* ); }; // End of class KDChart::Plotter } #endif // KDCHARTLINEDIAGRAM_H