diff options
Diffstat (limited to 'libkdchart/KDChartPlaneSeries.cpp')
-rw-r--r-- | libkdchart/KDChartPlaneSeries.cpp | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/libkdchart/KDChartPlaneSeries.cpp b/libkdchart/KDChartPlaneSeries.cpp new file mode 100644 index 0000000..319302c --- /dev/null +++ b/libkdchart/KDChartPlaneSeries.cpp @@ -0,0 +1,138 @@ +/* -*- Mode: C++ -*- + KDChart - a multi-platform charting engine + */ + +/**************************************************************************** + ** Copyright (C) 2001-2003 Klarälvdalens Datakonsult AB. All rights reserved. + ** + ** This file is part of the KDChart library. + ** + ** This file may be distributed and/or modified under the terms of the + ** GNU General Public License version 2 as published by the Free Software + ** Foundation and appearing in the file LICENSE.GPL included in the + ** packaging of this file. + ** + ** Licensees holding valid commercial KDChart licenses may use this file in + ** accordance with the KDChart Commercial License Agreement provided with + ** the Software. + ** + ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE + ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + ** + ** See http://www.klaralvdalens-datakonsult.se/?page=products for + ** information about KDChart Commercial License Agreements. + ** + ** Contact info@klaralvdalens-datakonsult.se if any conditions of this + ** licensing are not clear to you. + ** + **********************************************************************/ + + +#include "KDChartPlaneSeries.h" + +KDChartPlaneSeries::KDChartPlaneSeries( bool isX, double location ) +{ + setXAxis(isX); + setLocation(location); +} + +KDChartPlaneSeries::~KDChartPlaneSeries() +{ +} + + +uint KDChartPlaneSeries::rows() const +{ + return 2; +} + + +const KDChartData& KDChartPlaneSeries::cell( uint row ) const +{ + switch (row) + { + case 0: return _start; + case 1: return _stop; + default: Q_ASSERT(0); + return _start; // won't get here + } +} + +void KDChartPlaneSeries::setCell( uint row, const KDChartData& element) +{ + Q_ASSERT(0); // not possible + // avoid compiler warnings + row = (uint)element.doubleValue(); +} + +void KDChartPlaneSeries::expand( uint rows ) +{ + Q_ASSERT(0); // not possible + // avoid compiler warnings + rows = 0; +} + + + +// NOW for our special API. +bool KDChartPlaneSeries::isXAxis() const +{ + return _isX; +} + +double KDChartPlaneSeries::location() const +{ + return _location; +} + +void KDChartPlaneSeries::setXAxis( bool isX ) +{ + _isX = isX; + update(); +} + +void KDChartPlaneSeries::setLocation( double location ) +{ + _location = location; + update(); +} + +// this is the magic part of the class. +// draw a line from DBL_MIN to DBL_MAX. +void KDChartPlaneSeries::update() +{ + if ( _isX ) + { + _start = KDChartData( DBL_MIN, _location ); + _stop = KDChartData( DBL_MAX, _location ); + } + else + { + _start = KDChartData( _location, DBL_MIN ); + _stop = KDChartData( _location, DBL_MAX ); + } +} + + + +// we return !ok if its on the infinite axis +double KDChartPlaneSeries::maxValue( int coordinate, bool &ok ) const +{ + // coordinate==0 is the x value... + // is not ok + if ( _isX == (coordinate==0) ) + { + ok = false; + return 0; + } + + ok = true; + return _location; +} + + + +double KDChartPlaneSeries::minValue( int coordinate, bool &ok ) const +{ + return maxValue(coordinate,ok); +} |