KDChartPolarCoordinatePlane.h

Go to the documentation of this file.
00001 /****************************************************************************
00002 ** Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.  All rights reserved.
00003 **
00004 ** This file is part of the KD Chart library.
00005 **
00006 ** Licensees holding valid commercial KD Chart licenses may use this file in
00007 ** accordance with the KD Chart Commercial License Agreement provided with
00008 ** the Software.
00009 **
00010 **
00011 ** This file may be distributed and/or modified under the terms of the
00012 ** GNU General Public License version 2 and version 3 as published by the
00013 ** Free Software Foundation and appearing in the file LICENSE.GPL included.
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 ** Contact info@kdab.com if any conditions of this licensing are not
00019 ** clear to you.
00020 **
00021 **********************************************************************/
00022 
00023 #ifndef KDCHART_POLAR_COORDINATEPLANE_H
00024 #define KDCHART_POLAR_COORDINATEPLANE_H
00025 
00026 #include "KDChartAbstractCoordinatePlane.h"
00027 
00028 namespace KDChart {
00029 
00030     class Chart;
00031     class PaintContext;
00032 
00036     class KDCHART_EXPORT PolarCoordinatePlane : public AbstractCoordinatePlane
00037     {
00038         Q_OBJECT
00039 
00040         Q_DISABLE_COPY( PolarCoordinatePlane )
00041         KDCHART_DECLARE_PRIVATE_DERIVED_PARENT( PolarCoordinatePlane, Chart* )
00042 
00043     public:
00044         struct CoordinateTransformation;
00045         typedef QList<CoordinateTransformation> CoordinateTransformationList;
00046 
00047         explicit PolarCoordinatePlane ( Chart* parent = 0 );
00048         ~PolarCoordinatePlane();
00049 
00050         void addDiagram ( AbstractDiagram* diagram );
00051 
00052         const QPointF translate ( const QPointF& diagramPoint ) const;
00053         const QPointF translatePolar ( const QPointF& diagramPoint ) const;
00054 
00061         void setStartPosition( qreal degrees );
00065         qreal startPosition() const;
00066 
00067         virtual double zoomFactorX() const;
00068         virtual double zoomFactorY() const;
00069 
00070         virtual void setZoomFactors( double factorX, double factorY );
00071         virtual void setZoomFactorX( double factor );
00072         virtual void setZoomFactorY( double factor );
00073 
00074         virtual QPointF zoomCenter() const;
00075 
00076         virtual void setZoomCenter( const QPointF& center );
00077 
00098         void setGridAttributes( bool circular, const GridAttributes & );
00099 
00110         void resetGridAttributes( bool circular );
00111 
00126         const GridAttributes gridAttributes( bool circular ) const;
00127 
00140         bool hasOwnGridAttributes( bool circular ) const;
00141 
00142         qreal angleUnit() const;
00143         qreal radiusUnit() const;
00144 
00146         virtual void paint( QPainter* );
00147 
00148     protected:
00149         virtual DataDimensionsList getDataDimensionsList() const;
00150         void paintEvent ( QPaintEvent* );
00151         void resizeEvent ( QResizeEvent* );
00152 
00153         void layoutDiagrams();
00154     protected Q_SLOTS:
00155         void slotLayoutChanged( AbstractDiagram* diagram );
00156         void adjustZoomAndRepaint();
00157 
00158     private:
00159         void setHasOwnGridAttributes(
00160             bool circular, bool on );
00161     };
00162 
00163 }
00164 
00165 #endif