| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 | 
							- /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
 
-  * Qwt Widget Library
 
-  * Copyright (C) 1997   Josef Wilgen
 
-  * Copyright (C) 2002   Uwe Rathmann
 
-  *
 
-  * This library is free software; you can redistribute it and/or
 
-  * modify it under the terms of the Qwt License, Version 1.0
 
-  *****************************************************************************/
 
- #ifndef QWT_SCALE_ENGINE_H
 
- #define QWT_SCALE_ENGINE_H
 
- #include "qwt_global.h"
 
- #include "qwt_scale_div.h"
 
- #include "qwt_interval.h"
 
- class QwtScaleTransformation;
 
- /*!
 
-   \brief Arithmetic including a tolerance
 
- */
 
- class QWT_EXPORT QwtScaleArithmetic
 
- {
 
- public:
 
-     static double ceilEps( double value, double intervalSize );
 
-     static double floorEps( double value, double intervalSize );
 
-     static double divideEps( double interval, double steps );
 
-     static double ceil125( double x );
 
-     static double floor125( double x );
 
- };
 
- /*!
 
-   \brief Base class for scale engines.
 
-   A scale engine trys to find "reasonable" ranges and step sizes
 
-   for scales.
 
-   The layout of the scale can be varied with setAttribute().
 
-   Qwt offers implementations for logarithmic (log10)
 
-   and linear scales. Contributions for other types of scale engines
 
-   (date/time, log2 ... ) are welcome.
 
- */
 
- class QWT_EXPORT QwtScaleEngine
 
- {
 
- public:
 
-     /*!
 
-        - IncludeReference\n
 
-          Build a scale which includes the reference() value.
 
-        - Symmetric\n
 
-          Build a scale which is symmetric to the reference() value.
 
-        - Floating\n
 
-          The endpoints of the scale are supposed to be equal the
 
-          outmost included values plus the specified margins (see setMargins()).          If this attribute is *not* set, the endpoints of the scale will
 
-          be integer multiples of the step size.
 
-        - Inverted\n
 
-          Turn the scale upside down.
 
-        \sa setAttribute(), testAttribute(), reference(),
 
-            lowerMargin(), upperMargin()
 
-      */
 
-     enum Attribute
 
-     {
 
-         NoAttribute = 0,
 
-         IncludeReference = 1,
 
-         Symmetric = 2,
 
-         Floating = 4,
 
-         Inverted = 8
 
-     };
 
-     explicit QwtScaleEngine();
 
-     virtual ~QwtScaleEngine();
 
-     void setAttribute( Attribute, bool on = true );
 
-     bool testAttribute( Attribute ) const;
 
-     void setAttributes( int );
 
-     int attributes() const;
 
-     void setReference( double reference );
 
-     double reference() const;
 
-     void setMargins( double lower, double upper );
 
-     double lowerMargin() const;
 
-     double upperMargin() const;
 
-     /*!
 
-       Align and divide an interval
 
-       \param maxNumSteps Max. number of steps
 
-       \param x1 First limit of the interval (In/Out)
 
-       \param x2 Second limit of the interval (In/Out)
 
-       \param stepSize Step size (Return value)
 
-     */
 
-     virtual void autoScale( int maxNumSteps,
 
-         double &x1, double &x2, double &stepSize ) const = 0;
 
-     /*!
 
-       \brief Calculate a scale division
 
-       \param x1 First interval limit
 
-       \param x2 Second interval limit
 
-       \param maxMajSteps Maximum for the number of major steps
 
-       \param maxMinSteps Maximum number of minor steps
 
-       \param stepSize Step size. If stepSize == 0.0, the scaleEngine
 
-                    calculates one.
 
-     */
 
-     virtual QwtScaleDiv divideScale( double x1, double x2,
 
-         int maxMajSteps, int maxMinSteps,
 
-         double stepSize = 0.0 ) const = 0;
 
-     //! \return a transformation
 
-     virtual QwtScaleTransformation *transformation() const = 0;
 
- protected:
 
-     bool contains( const QwtInterval &, double val ) const;
 
-     QList<double> strip( const QList<double>&, const QwtInterval & ) const;
 
-     double divideInterval( double interval, int numSteps ) const;
 
-     QwtInterval buildInterval( double v ) const;
 
- private:
 
-     class PrivateData;
 
-     PrivateData *d_data;
 
- };
 
- /*!
 
-   \brief A scale engine for linear scales
 
-   The step size will fit into the pattern
 
-   \f$\left\{ 1,2,5\right\} \cdot 10^{n}\f$, where n is an integer.
 
- */
 
- class QWT_EXPORT QwtLinearScaleEngine: public QwtScaleEngine
 
- {
 
- public:
 
-     virtual void autoScale( int maxSteps,
 
-         double &x1, double &x2, double &stepSize ) const;
 
-     virtual QwtScaleDiv divideScale( double x1, double x2,
 
-         int numMajorSteps, int numMinorSteps,
 
-                                      double stepSize = 0.0 ) const;
 
-     virtual QwtScaleTransformation *transformation() const;
 
- protected:
 
-     QwtInterval align( const QwtInterval&, double stepSize ) const;
 
-     void buildTicks(
 
-         const QwtInterval &, double stepSize, int maxMinSteps,
 
-         QList<double> ticks[QwtScaleDiv::NTickTypes] ) const;
 
-     QList<double> buildMajorTicks(
 
-         const QwtInterval &interval, double stepSize ) const;
 
-     void buildMinorTicks(
 
-         const QList<double>& majorTicks,
 
-         int maxMinMark, double step,
 
-         QList<double> &, QList<double> & ) const;
 
- };
 
- /*!
 
-   \brief A scale engine for logarithmic (base 10) scales
 
-   The step size is measured in *decades*
 
-   and the major step size will be adjusted to fit the pattern
 
-   \f$\left\{ 1,2,3,5\right\} \cdot 10^{n}\f$, where n is a natural number
 
-   including zero.
 
-   \warning the step size as well as the margins are measured in *decades*.
 
- */
 
- class QWT_EXPORT QwtLog10ScaleEngine: public QwtScaleEngine
 
- {
 
- public:
 
-     virtual void autoScale( int maxSteps,
 
-         double &x1, double &x2, double &stepSize ) const;
 
-     virtual QwtScaleDiv divideScale( double x1, double x2,
 
-         int numMajorSteps, int numMinorSteps,
 
-         double stepSize = 0.0 ) const;
 
-     virtual QwtScaleTransformation *transformation() const;
 
- protected:
 
-     QwtInterval log10( const QwtInterval& ) const;
 
-     QwtInterval pow10( const QwtInterval& ) const;
 
-     QwtInterval align( const QwtInterval&, double stepSize ) const;
 
-     void buildTicks(
 
-         const QwtInterval &, double stepSize, int maxMinSteps,
 
-         QList<double> ticks[QwtScaleDiv::NTickTypes] ) const;
 
-     QList<double> buildMajorTicks(
 
-         const QwtInterval &interval, double stepSize ) const;
 
-     QList<double> buildMinorTicks(
 
-         const QList<double>& majorTicks,
 
-         int maxMinMark, double step ) const;
 
- };
 
- #endif
 
 
  |