00001 /**************************************************************************** 00002 ** Copyright (C) 2007 Klarälvdalens Datakonsult AB. All rights reserved. 00003 ** 00004 ** This file is part of the KD Chart library. 00005 ** 00006 ** This file may be distributed and/or modified under the terms of the 00007 ** GNU General Public License version 2 as published by the Free Software 00008 ** Foundation and appearing in the file LICENSE.GPL included in the 00009 ** packaging of this file. 00010 ** 00011 ** Licensees holding valid commercial KD Chart licenses may use this file in 00012 ** accordance with the KD Chart Commercial License Agreement provided with 00013 ** the Software. 00014 ** 00015 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 00016 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 00017 ** 00018 ** See http://www.kdab.net/kdchart for 00019 ** information about KDChart Commercial License Agreements. 00020 ** 00021 ** Contact info@kdab.net if any conditions of this 00022 ** licensing are not clear to you. 00023 ** 00024 **********************************************************************/ 00025 00026 #ifndef KDCHARTABSTRACTCARTESIANDIAGRAM_H 00027 #define KDCHARTABSTRACTCARTESIANDIAGRAM_H 00028 00029 #include "KDChartCartesianCoordinatePlane.h" 00030 #include "KDChartAbstractDiagram.h" 00031 #include "KDChartCartesianAxis.h" 00032 00033 namespace KDChart { 00034 00035 class GridAttributes; 00036 // class PaintContext; 00037 00045 class KDCHART_EXPORT AbstractCartesianDiagram : public AbstractDiagram 00046 { 00047 Q_OBJECT 00048 Q_DISABLE_COPY( AbstractCartesianDiagram ) 00049 // KDCHART_DECLARE_PRIVATE_DERIVED( AbstractCartesianDiagram ) 00050 KDCHART_DECLARE_DERIVED_DIAGRAM( AbstractCartesianDiagram, CartesianCoordinatePlane ) 00051 00052 public: 00053 explicit AbstractCartesianDiagram ( QWidget* parent = 0, CartesianCoordinatePlane* plane = 0 ); 00054 virtual ~AbstractCartesianDiagram(); 00055 00059 bool compare( const AbstractCartesianDiagram* other )const; 00060 00061 #if QT_VERSION < 0x040400 || defined(Q_COMPILER_MANGLES_RETURN_TYPE) 00062 virtual const int numberOfAbscissaSegments () const = 0; 00063 virtual const int numberOfOrdinateSegments () const = 0; 00064 #else 00065 virtual int numberOfAbscissaSegments () const = 0; 00066 virtual int numberOfOrdinateSegments () const = 0; 00067 #endif 00068 00077 virtual void addAxis( CartesianAxis * axis ); 00086 virtual void takeAxis( CartesianAxis * axis ); 00090 virtual KDChart::CartesianAxisList axes () const; 00091 00096 virtual void layoutPlanes(); 00098 virtual void setCoordinatePlane( AbstractCoordinatePlane* plane ); 00099 00107 virtual void setReferenceDiagram( AbstractCartesianDiagram* diagram, const QPointF& offset = QPointF() ); 00112 virtual AbstractCartesianDiagram* referenceDiagram() const; 00117 virtual QPointF referenceDiagramOffset() const; 00118 00119 /* reimpl */ 00120 void setModel( QAbstractItemModel* model ); 00121 /* reimpl */ 00122 void setRootIndex( const QModelIndex& index ); 00123 /* reimpl */ 00124 void setAttributesModel( AttributesModel* model ); 00125 00126 protected: 00128 virtual double threeDItemDepth( const QModelIndex& index ) const = 0; 00130 virtual double threeDItemDepth( int column ) const = 0; 00131 }; 00132 00133 } 00134 00135 #endif