00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef KDCHARTLINEDIAGRAM_H
00031 #define KDCHARTLINEDIAGRAM_H
00032
00033 #include "KDChartAbstractCartesianDiagram.h"
00034 #include "KDChartLineAttributes.h"
00035 #include "KDChartValueTrackerAttributes.h"
00036
00037 class QPainter;
00038 class QPolygonF;
00039
00040 namespace KDChart {
00041
00042 class ThreeDLineAttributes;
00043
00049 class KDCHART_EXPORT LineDiagram : public AbstractCartesianDiagram
00050 {
00051 Q_OBJECT
00052
00053 Q_DISABLE_COPY( LineDiagram )
00054
00055
00056 KDCHART_DECLARE_DERIVED_DIAGRAM( LineDiagram, CartesianCoordinatePlane )
00057
00058
00059 public:
00060 class LineDiagramType;
00061 friend class LineDiagramType;
00062
00063 explicit LineDiagram( QWidget* parent = 0, CartesianCoordinatePlane* plane = 0 );
00064 virtual ~LineDiagram();
00065
00066 virtual LineDiagram * clone() const;
00067
00071 bool compare( const LineDiagram* other ) const;
00072
00073 enum LineType {
00074 Normal = 0,
00075 Stacked = 1,
00076 Percent = 2
00077 };
00078
00079
00080 void setType( const LineType type );
00081 LineType type() const;
00082
00089 void setCenterDataPoints( bool center );
00091 bool centerDataPoints() const;
00092
00093 void setLineAttributes( const LineAttributes & a );
00094 void setLineAttributes( int column, const LineAttributes & a );
00095 void setLineAttributes( const QModelIndex & index, const LineAttributes & a );
00096 void resetLineAttributes( int column );
00097 void resetLineAttributes( const QModelIndex & index );
00098 LineAttributes lineAttributes() const;
00099 LineAttributes lineAttributes( int column ) const;
00100 LineAttributes lineAttributes( const QModelIndex & index ) const;
00101
00102 void setThreeDLineAttributes( const ThreeDLineAttributes & a );
00103 void setThreeDLineAttributes( int column, const ThreeDLineAttributes & a );
00104 void setThreeDLineAttributes( const QModelIndex & index,
00105 const ThreeDLineAttributes & a );
00106
00107
00108
00109
00110 ThreeDLineAttributes threeDLineAttributes() const;
00111 ThreeDLineAttributes threeDLineAttributes( int column ) const;
00112 ThreeDLineAttributes threeDLineAttributes( const QModelIndex & index ) const;
00113
00114 void setValueTrackerAttributes( const QModelIndex & index,
00115 const ValueTrackerAttributes & a );
00116 ValueTrackerAttributes valueTrackerAttributes( const QModelIndex & index ) const;
00117
00118 #if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE)
00119
00120
00121 const int numberOfAbscissaSegments () const;
00122
00123 const int numberOfOrdinateSegments () const;
00124 #else
00125
00126
00127 int numberOfAbscissaSegments () const;
00128
00129 int numberOfOrdinateSegments () const;
00130 #endif
00131
00132 protected:
00133 void paint ( PaintContext* paintContext );
00134
00135 public:
00136 void resize ( const QSizeF& area );
00137
00138 protected:
00139
00140 double valueForCellTesting( int row, int column,
00141 bool& bOK,
00142 bool showHiddenCellsAsInvalid = false ) const;
00143 LineAttributes::MissingValuesPolicy getCellValues(
00144 int row, int column,
00145 bool shiftCountedXValuesByHalfSection,
00146 double& valueX, double& valueY ) const;
00147
00148 virtual double threeDItemDepth( const QModelIndex & index ) const;
00149 virtual double threeDItemDepth( int column ) const;
00151 virtual const QPair<QPointF, QPointF> calculateDataBoundaries() const;
00152 void paintEvent ( QPaintEvent* );
00153 void resizeEvent ( QResizeEvent* );
00154 };
00155
00156 }
00157
00158 #endif // KDCHARTLINEDIAGRAM_H