11 #include "qwt_scale_widget.h"
12 #include "qwt_scale_map.h"
13 #include "qwt_scale_div.h"
14 #include "qwt_scale_engine.h"
15 #include "qwt_interval.h"
44 scaleWidget->setObjectName( name );
48 const QFont fscl( plot->fontInfo().family(), 10 );
49 const QFont fttl( plot->fontInfo().family(), 12, QFont::Bold );
52 scaleWidget->setTransformation( scaleEngine->transformation() );
54 scaleWidget->setFont( fscl );
55 scaleWidget->setMargin( 2 );
57 QwtText text = scaleWidget->title();
59 scaleWidget->setTitle( text );
80 class QwtPlot::ScaleData
93 inline AxisData& axisData( QwtAxisId axisId )
95 return m_axisData[ axisId ];
98 inline const AxisData& axisData( QwtAxisId axisId )
const
100 return m_axisData[ axisId ];
104 AxisData m_axisData[ QwtAxis::AxisPositions ];
107 void QwtPlot::initAxesData()
109 m_scaleData =
new ScaleData(
this );
115 void QwtPlot::deleteAxesData()
144 return m_scaleData->axisData( axisId ).scaleWidget;
156 return m_scaleData->axisData( axisId ).scaleWidget;
171 if (
isAxisValid( axisId ) && scaleEngine != NULL )
173 AxisData& d = m_scaleData->axisData( axisId );
175 delete d.scaleEngine;
176 d.scaleEngine = scaleEngine;
193 return m_scaleData->axisData( axisId ).scaleEngine;
205 return m_scaleData->axisData( axisId ).scaleEngine;
216 return m_scaleData->axisData( axisId ).doAutoScale;
228 return m_scaleData->axisData( axisId ).isVisible;
254 return m_scaleData->axisData( axisId ).maxMajor;
267 return m_scaleData->axisData( axisId ).maxMinor;
285 return m_scaleData->axisData( axisId ).scaleDiv;
331 return m_scaleData->axisData( axisId ).stepSize;
349 return m_scaleData->axisData( axisId ).scaleDiv.interval();
378 if (
isAxisValid( axisId ) && on != m_scaleData->axisData( axisId ).isVisible )
380 m_scaleData->axisData( axisId ).isVisible = on;
451 if (
isAxisValid( axisId ) && ( m_scaleData->axisData( axisId ).doAutoScale != on ) )
453 m_scaleData->axisData( axisId ).doAutoScale = on;
477 AxisData& d = m_scaleData->axisData( axisId );
479 d.doAutoScale =
false;
484 d.stepSize = stepSize;
506 AxisData& d = m_scaleData->axisData( axisId );
508 d.doAutoScale =
false;
509 d.scaleDiv = scaleDiv;
582 maxMinor = qBound( 0, maxMinor, 100 );
584 AxisData& d = m_scaleData->axisData( axisId );
585 if ( maxMinor != d.maxMinor )
587 d.maxMinor = maxMinor;
606 maxMajor = qBound( 1, maxMajor, 10000 );
608 AxisData& d = m_scaleData->axisData( axisId );
609 if ( maxMajor != d.maxMajor )
611 d.maxMajor = maxMajor;
671 QwtInterval boundingIntervals[QwtAxis::AxisPositions];
675 QwtPlotItemIterator it;
676 for ( it = itmList.begin(); it != itmList.end(); ++it )
690 if ( rect.width() >= 0.0 )
691 boundingIntervals[item->
xAxis()] |=
QwtInterval( rect.left(), rect.right() );
693 if ( rect.height() >= 0.0 )
694 boundingIntervals[item->
yAxis()] |=
QwtInterval( rect.top(), rect.bottom() );
700 for (
int axisPos = 0; axisPos < QwtAxis::AxisPositions; axisPos++ )
703 const QwtAxisId axisId( axisPos );
705 AxisData& d = m_scaleData->axisData( axisId );
707 double minValue = d.minValue;
708 double maxValue = d.maxValue;
709 double stepSize = d.stepSize;
711 const QwtInterval& interval = boundingIntervals[axisId];
713 if ( d.doAutoScale && interval.
isValid() )
720 d.scaleEngine->autoScale( d.maxMajor,
721 minValue, maxValue, stepSize );
725 d.scaleDiv = d.scaleEngine->divideScale(
726 minValue, maxValue, d.maxMajor, d.maxMinor, stepSize );
733 int startDist, endDist;
739 for ( it = itmList.begin(); it != itmList.end(); ++it )
A class representing an interval.
A scale engine for linear scales.
const QwtPlotItemList & itemList() const
A QwtPlotItemList of all attached plot items.
double transform(QwtAxisId, double value) const
Transform a value into a coordinate in the plotting region.
void setAxisVisible(QwtAxisId, bool on=true)
Hide or show a specified axis.
QFont axisFont(QwtAxisId) const
void updateAxes()
Rebuild the axes scales.
void setAxisLabelAlignment(QwtAxisId, Qt::Alignment)
void setAxisScale(QwtAxisId, double min, double max, double stepSize=0)
Disable autoscaling and specify a fixed scale for a selected axis.
QwtScaleEngine * axisScaleEngine(QwtAxisId)
double axisStepSize(QwtAxisId) const
Return the step size parameter that has been set in setAxisScale.
void setAxisScaleDraw(QwtAxisId, QwtScaleDraw *)
Set a scale draw.
void setAxisLabelRotation(QwtAxisId, double rotation)
void setAxisFont(QwtAxisId, const QFont &)
Change the font of an axis.
void setAxisTitle(QwtAxisId, const QString &)
Change the title of a specified axis.
void setAxisAutoScale(QwtAxisId, bool on=true)
Enable autoscaling for a specified axis.
void setAxisScaleEngine(QwtAxisId, QwtScaleEngine *)
void setAxisMaxMajor(QwtAxisId, int maxMajor)
bool isAxisVisible(QwtAxisId) const
bool axisAutoScale(QwtAxisId) const
QwtInterval axisInterval(QwtAxisId) const
Return the current interval of the specified axis.
double invTransform(QwtAxisId, double pos) const
QwtText axisTitle(QwtAxisId) const
bool isAxisValid(QwtAxisId) const
void setAxisMaxMinor(QwtAxisId, int maxMinor)
const QwtScaleWidget * axisWidget(QwtAxisId) const
virtual QwtScaleMap canvasMap(QwtAxisId) const
int axisMaxMinor(QwtAxisId) const
virtual void updateLayout()
Adjust plot content to its current size.
void autoRefresh()
Replots the plot if autoReplot() is true.
const QwtScaleDiv & axisScaleDiv(QwtAxisId) const
Return the scale division of a specified axis.
void setAxisScaleDiv(QwtAxisId, const QwtScaleDiv &)
Disable autoscaling and specify a fixed scale for a selected axis.
const QwtScaleDraw * axisScaleDraw(QwtAxisId) const
Return the scale draw of a specified axis.
int axisMaxMajor(QwtAxisId) const
Base class for items on the plot canvas.
QwtAxisId yAxis() const
Return yAxis.
QwtAxisId xAxis() const
Return xAxis.
bool testItemInterest(ItemInterest) const
virtual void updateScaleDiv(const QwtScaleDiv &, const QwtScaleDiv &)
Update the item to changes of the axes scale division.
bool testItemAttribute(ItemAttribute) const
virtual QRectF boundingRect() const
A class representing a scale division.
A class for drawing scales.
@ BottomScale
The scale is below.
@ TopScale
The scale is above.
@ RightScale
The scale is right.
@ LeftScale
The scale is left.
Base class for scale engines.
QwtTransform * transformation() const
void setTransformation(QwtTransform *)
A class representing a text.
void setFont(const QFont &)
@ YRight
Y axis right of the canvas.
@ XTop
X axis above the canvas.
@ XBottom
X axis below the canvas.
@ YLeft
Y axis left of the canvas.
bool isValid(int axisPos)