diff options
Diffstat (limited to 'kchart/kdchart/KDChartPlaneSeries.cpp')
| -rw-r--r-- | kchart/kdchart/KDChartPlaneSeries.cpp | 138 | 
1 files changed, 138 insertions, 0 deletions
| diff --git a/kchart/kdchart/KDChartPlaneSeries.cpp b/kchart/kdchart/KDChartPlaneSeries.cpp new file mode 100644 index 000000000..319302cd4 --- /dev/null +++ b/kchart/kdchart/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); +} | 
