Loading...
Searching...
No Matches
qwt_scale_map.h
/******************************************************************************
* 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_MAP_H
#define QWT_SCALE_MAP_H
#include "qwt_global.h"
#include "qwt_transform.h"
class QPointF;
class QRectF;
class QWT_EXPORT QwtScaleMap
{
public:
QwtScaleMap();
QwtScaleMap( const QwtScaleMap& );
~QwtScaleMap();
QwtScaleMap& operator=( const QwtScaleMap& );
void setTransformation( QwtTransform* );
const QwtTransform* transformation() const;
void setPaintInterval( double p1, double p2 );
void setScaleInterval( double s1, double s2 );
double transform( double s ) const;
double invTransform( double p ) const;
double p1() const;
double p2() const;
double s1() const;
double s2() const;
double pDist() const;
double sDist() const;
static QRectF transform( const QwtScaleMap&,
const QwtScaleMap&, const QRectF& );
static QRectF invTransform( const QwtScaleMap&,
const QwtScaleMap&, const QRectF& );
static QPointF transform( const QwtScaleMap&,
const QwtScaleMap&, const QPointF& );
static QPointF invTransform( const QwtScaleMap&,
const QwtScaleMap&, const QPointF& );
bool isInverting() const;
private:
void updateFactor();
double m_s1, m_s2; // scale interval boundaries
double m_p1, m_p2; // paint device interval boundaries
double m_cnv; // conversion factor
double m_ts1;
QwtTransform* m_transform;
};
inline double QwtScaleMap::s1() const
{
return m_s1;
}
inline double QwtScaleMap::s2() const
{
return m_s2;
}
inline double QwtScaleMap::p1() const
{
return m_p1;
}
inline double QwtScaleMap::p2() const
{
return m_p2;
}
inline double QwtScaleMap::pDist() const
{
return qAbs( m_p2 - m_p1 );
}
inline double QwtScaleMap::sDist() const
{
return qAbs( m_s2 - m_s1 );
}
inline double QwtScaleMap::transform( double s ) const
{
if ( m_transform )
s = m_transform->transform( s );
return m_p1 + ( s - m_ts1 ) * m_cnv;
}
inline double QwtScaleMap::invTransform( double p ) const
{
double s = m_ts1 + ( p - m_p1 ) / m_cnv;
if ( m_transform )
s = m_transform->invTransform( s );
return s;
}
inline bool QwtScaleMap::isInverting() const
{
return ( ( m_p1 < m_p2 ) != ( m_s1 < m_s2 ) );
}
#ifndef QT_NO_DEBUG_STREAM
QWT_EXPORT QDebug operator<<( QDebug, const QwtScaleMap& );
#endif
#endif
QwtScaleMap
A scale map.
Definition qwt_scale_map.h:27
QwtScaleMap::isInverting
bool isInverting() const
Definition qwt_scale_map.h:164
QwtScaleMap::pDist
double pDist() const
Definition qwt_scale_map.h:115
QwtScaleMap::p1
double p1() const
Definition qwt_scale_map.h:99
QwtScaleMap::transform
double transform(double s) const
Definition qwt_scale_map.h:137
QwtScaleMap::s1
double s1() const
Definition qwt_scale_map.h:83
QwtScaleMap::s2
double s2() const
Definition qwt_scale_map.h:91
QwtScaleMap::sDist
double sDist() const
Definition qwt_scale_map.h:123
QwtScaleMap::invTransform
double invTransform(double p) const
Definition qwt_scale_map.h:154
QwtScaleMap::p2
double p2() const
Definition qwt_scale_map.h:107
QwtTransform
A transformation between coordinate systems.
Definition qwt_transform.h:36
QwtTransform::transform
virtual double transform(double value) const =0
QwtTransform::invTransform
virtual double invTransform(double value) const =0