QwtPlotPicker provides selections on a plot canvas. More...
#include <qwt_plot_picker.h>
Signals | |
void | selected (const QwtDoublePoint &pos) |
void | selected (const QwtDoubleRect &rect) |
void | selected (const QMemArray< QwtDoublePoint > &pa) |
void | appended (const QwtDoublePoint &pos) |
void | moved (const QwtDoublePoint &pos) |
Public Member Functions | |
QwtPlotPicker (QwtPlotCanvas *) | |
Create a plot picker. | |
virtual | ~QwtPlotPicker () |
Destructor. | |
QwtPlotPicker (int xAxis, int yAxis, QwtPlotCanvas *) | |
QwtPlotPicker (int xAxis, int yAxis, int selectionFlags, RubberBand rubberBand, DisplayMode trackerMode, QwtPlotCanvas *) | |
virtual void | setAxis (int xAxis, int yAxis) |
int | xAxis () const |
Return x axis. | |
int | yAxis () const |
Return y axis. | |
QwtPlot * | plot () |
Return plot widget, containing the observed plot canvas. | |
const QwtPlot * | plot () const |
Return plot widget, containing the observed plot canvas. | |
QwtPlotCanvas * | canvas () |
Return observed plot canvas. | |
const QwtPlotCanvas * | canvas () const |
Return Observed plot canvas. | |
Protected Member Functions | |
QwtDoubleRect | scaleRect () const |
QwtDoubleRect | invTransform (const QRect &) const |
QRect | transform (const QwtDoubleRect &) const |
QwtDoublePoint | invTransform (const QPoint &) const |
QPoint | transform (const QwtDoublePoint &) const |
virtual QwtText | trackerText (const QPoint &) const |
virtual QwtText | trackerText (const QwtDoublePoint &) const |
Translate a position into a position string. | |
virtual void | move (const QPoint &) |
virtual void | append (const QPoint &) |
virtual bool | end (bool ok=true) |
QwtPlotPicker provides selections on a plot canvas.
QwtPlotPicker is a QwtPicker tailored for selections on a plot canvas. It is set to a x-Axis and y-Axis and translates all pixel coordinates into this coodinate system.
Definition at line 29 of file qwt_plot_picker.h.
QwtPlotPicker::QwtPlotPicker | ( | QwtPlotCanvas * | canvas ) | [explicit] |
Create a plot picker.
The picker is set to those x- and y-axis of the plot that are enabled. If both or no x-axis are enabled, the picker is set to QwtPlot::xBottom. If both or no y-axis are enabled, it is set to QwtPlot::yLeft.
canvas | Plot canvas to observe, also the parent object |
Definition at line 32 of file qwt_plot_picker.cpp.
References QwtPlot::axisEnabled(), plot(), setAxis(), xAxis(), QwtPlot::xBottom, QwtPlot::xTop, yAxis(), QwtPlot::yLeft, and QwtPlot::yRight.
: QwtPicker(canvas), d_xAxis(-1), d_yAxis(-1) { if ( !canvas ) return; // attach axes int xAxis = QwtPlot::xBottom; const QwtPlot *plot = QwtPlotPicker::plot(); if ( !plot->axisEnabled(QwtPlot::xBottom) && plot->axisEnabled(QwtPlot::xTop) ) { xAxis = QwtPlot::xTop; } int yAxis = QwtPlot::yLeft; if ( !plot->axisEnabled(QwtPlot::yLeft) && plot->axisEnabled(QwtPlot::yRight) ) { yAxis = QwtPlot::yRight; } setAxis(xAxis, yAxis); }
QwtPlotPicker::~QwtPlotPicker | ( | ) | [virtual] |
QwtPlotPicker::QwtPlotPicker | ( | int | xAxis, |
int | yAxis, | ||
QwtPlotCanvas * | canvas | ||
) | [explicit] |
Create a plot picker
xAxis | Set the x axis of the picker |
yAxis | Set the y axis of the picker |
canvas | Plot canvas to observe, also the parent object |
Definition at line 70 of file qwt_plot_picker.cpp.
QwtPlotPicker::QwtPlotPicker | ( | int | xAxis, |
int | yAxis, | ||
int | selectionFlags, | ||
RubberBand | rubberBand, | ||
DisplayMode | trackerMode, | ||
QwtPlotCanvas * | canvas | ||
) | [explicit] |
Create a plot picker
xAxis | X axis of the picker |
yAxis | Y axis of the picker |
selectionFlags | Or'd value of SelectionType, RectSelectionType and SelectionMode |
rubberBand | Rubberband style |
trackerMode | Tracker mode |
canvas | Plot canvas to observe, also the parent object |
Definition at line 93 of file qwt_plot_picker.cpp.
: QwtPicker(selectionFlags, rubberBand, trackerMode, canvas), d_xAxis(xAxis), d_yAxis(yAxis) { }
void QwtPlotPicker::append | ( | const QPoint & | pos ) | [protected, virtual] |
Append a point to the selection and update rubberband and tracker.
pos | Additional point |
Reimplemented from QwtPicker.
Definition at line 249 of file qwt_plot_picker.cpp.
References appended(), and invTransform().
{ QwtPicker::append(pos); emit appended(invTransform(pos)); }
void QwtPlotPicker::appended | ( | const QwtDoublePoint & | pos ) | [signal] |
QwtPlotCanvas * QwtPlotPicker::canvas | ( | ) |
Return observed plot canvas.
Definition at line 108 of file qwt_plot_picker.cpp.
References QwtPicker::parentWidget().
Referenced by plot().
{ QWidget *w = parentWidget(); if ( w && w->inherits("QwtPlotCanvas") ) return (QwtPlotCanvas *)w; return NULL; }
const QwtPlotCanvas * QwtPlotPicker::canvas | ( | ) | const |
Return Observed plot canvas.
Definition at line 118 of file qwt_plot_picker.cpp.
{ return ((QwtPlotPicker *)this)->canvas(); }
bool QwtPlotPicker::end | ( | bool | ok = true ) |
[protected, virtual] |
Close a selection setting the state to inactive.
ok | If true, complete the selection and emit selected signals otherwise discard the selection. |
Reimplemented from QwtPicker.
Reimplemented in QwtPlotZoomer.
Definition at line 278 of file qwt_plot_picker.cpp.
References QwtPicker::CenterToCorner, QwtPicker::CenterToRadius, int(), invTransform(), plot(), QwtPicker::PointSelection, qwtAbs, qwtMax, QwtPicker::RectSelection, selected(), QwtPicker::selection(), and QwtPicker::selectionFlags().
{ ok = QwtPicker::end(ok); if ( !ok ) return false; QwtPlot *plot = QwtPlotPicker::plot(); if ( !plot ) return false; const QwtPolygon &pa = selection(); if ( pa.count() == 0 ) return false; if ( selectionFlags() & PointSelection ) { const QwtDoublePoint pos = invTransform(pa[0]); emit selected(pos); } else if ( (selectionFlags() & RectSelection) && pa.count() >= 2 ) { QPoint p1 = pa[0]; QPoint p2 = pa[int(pa.count() - 1)]; if ( selectionFlags() & CenterToCorner ) { p1.setX(p1.x() - (p2.x() - p1.x())); p1.setY(p1.y() - (p2.y() - p1.y())); } else if ( selectionFlags() & CenterToRadius ) { const int radius = qwtMax(qwtAbs(p2.x() - p1.x()), qwtAbs(p2.y() - p1.y())); p2.setX(p1.x() + radius); p2.setY(p1.y() + radius); p1.setX(p1.x() - radius); p1.setY(p1.y() - radius); } emit selected(invTransform(QRect(p1, p2)).normalized()); } else { QwtArray<QwtDoublePoint> dpa(pa.count()); for ( int i = 0; i < int(pa.count()); i++ ) dpa[i] = invTransform(pa[i]); emit selected(dpa); } return true; }
QwtDoublePoint QwtPlotPicker::invTransform | ( | const QPoint & | pos ) | const [protected] |
Translate a point from pixel into plot coordinates
Definition at line 374 of file qwt_plot_picker.cpp.
References QwtPlot::canvasMap(), QwtScaleMap::invTransform(), and plot().
{ QwtScaleMap xMap = plot()->canvasMap(d_xAxis); QwtScaleMap yMap = plot()->canvasMap(d_yAxis); return QwtDoublePoint( xMap.invTransform(pos.x()), yMap.invTransform(pos.y()) ); }
QwtDoubleRect QwtPlotPicker::invTransform | ( | const QRect & | rect ) | const [protected] |
Translate a rectangle from pixel into plot coordinates
Definition at line 337 of file qwt_plot_picker.cpp.
References QwtPlot::canvasMap(), QwtScaleMap::invTransform(), and plot().
Referenced by append(), QwtPlotZoomer::end(), end(), move(), and trackerText().
{ QwtScaleMap xMap = plot()->canvasMap(d_xAxis); QwtScaleMap yMap = plot()->canvasMap(d_yAxis); const double left = xMap.invTransform(rect.left()); const double right = xMap.invTransform(rect.right()); const double top = yMap.invTransform(rect.top()); const double bottom = yMap.invTransform(rect.bottom()); return QwtDoubleRect(left, top, right - left, bottom - top); }
void QwtPlotPicker::move | ( | const QPoint & | pos ) | [protected, virtual] |
Move the last point of the selection
pos | New position |
Reimplemented from QwtPicker.
Definition at line 264 of file qwt_plot_picker.cpp.
References invTransform(), and moved().
{ QwtPicker::move(pos); emit moved(invTransform(pos)); }
void QwtPlotPicker::moved | ( | const QwtDoublePoint & | pos ) | [signal] |
A signal emitted whenever the last appended point of the selection has been moved.
pos | Position of the moved last point of the selection. |
Referenced by move().
const QwtPlot * QwtPlotPicker::plot | ( | ) | const |
Return plot widget, containing the observed plot canvas.
Definition at line 138 of file qwt_plot_picker.cpp.
{ return ((QwtPlotPicker *)this)->plot(); }
QwtPlot * QwtPlotPicker::plot | ( | ) |
Return plot widget, containing the observed plot canvas.
Definition at line 124 of file qwt_plot_picker.cpp.
References canvas().
Referenced by QwtPlotZoomer::end(), end(), invTransform(), QwtPlotPicker(), QwtPlotZoomer::rescale(), scaleRect(), setAxis(), QwtPlotZoomer::setZoomBase(), and transform().
QwtDoubleRect QwtPlotPicker::scaleRect | ( | ) | const [protected] |
Return normalized bounding rect of the axes
Definition at line 148 of file qwt_plot_picker.cpp.
References QwtPlot::axisScaleDiv(), QwtScaleDiv::lowerBound(), QwtDoubleRect::normalized(), plot(), QwtScaleDiv::range(), xAxis(), and yAxis().
Referenced by QwtPlotZoomer::rescale(), QwtPlotZoomer::setAxis(), and QwtPlotZoomer::setZoomBase().
{ QwtDoubleRect rect; if ( plot() ) { const QwtScaleDiv *xs = plot()->axisScaleDiv(xAxis()); const QwtScaleDiv *ys = plot()->axisScaleDiv(yAxis()); if ( xs && ys ) { rect = QwtDoubleRect( xs->lowerBound(), ys->lowerBound(), xs->range(), ys->range() ); rect = rect.normalized(); } } return rect; }
void QwtPlotPicker::selected | ( | const QwtDoublePoint & | pos ) | [signal] |
A signal emitted in case of selectionFlags() & PointSelection.
pos | Selected point |
Referenced by end().
void QwtPlotPicker::selected | ( | const QwtDoubleRect & | rect ) | [signal] |
A signal emitted in case of selectionFlags() & RectSelection.
rect | Selected rectangle |
void QwtPlotPicker::selected | ( | const QMemArray< QwtDoublePoint > & | pa ) | [signal] |
A signal emitting the selected points, at the end of a selection.
pa | Selected points |
void QwtPlotPicker::setAxis | ( | int | xAxis, |
int | yAxis | ||
) | [virtual] |
Set the x and y axes of the picker
xAxis | X axis |
yAxis | Y axis |
Reimplemented in QwtPlotZoomer.
Definition at line 174 of file qwt_plot_picker.cpp.
References plot(), xAxis(), and yAxis().
Referenced by QwtPlotPicker().
QwtText QwtPlotPicker::trackerText | ( | const QwtDoublePoint & | pos ) | const [protected, virtual] |
Translate a position into a position string.
In case of HLineRubberBand the label is the value of the y position, in case of VLineRubberBand the value of the x position. Otherwise the label contains x and y position separated by a ',' .
The format for the double to string conversion is "%.4f".
pos | Position |
Definition at line 222 of file qwt_plot_picker.cpp.
References QwtPicker::HLineRubberBand, QwtPicker::rubberBand(), QwtPicker::VLineRubberBand, QwtDoublePoint::x(), and QwtDoublePoint::y().
{ QString text; switch(rubberBand()) { case HLineRubberBand: text.sprintf("%.4f", pos.y()); break; case VLineRubberBand: text.sprintf("%.4f", pos.x()); break; default: text.sprintf("%.4f, %.4f", pos.x(), pos.y()); } return QwtText(text); }
QwtText QwtPlotPicker::trackerText | ( | const QPoint & | pos ) | const [protected, virtual] |
Translate a pixel position into a position string
pos | Position in pixel coordinates |
Reimplemented from QwtPicker.
Definition at line 205 of file qwt_plot_picker.cpp.
References invTransform().
{ return trackerText(invTransform(pos)); }
QRect QwtPlotPicker::transform | ( | const QwtDoubleRect & | rect ) | const [protected] |
Translate a rectangle from plot into pixel coordinates
Definition at line 356 of file qwt_plot_picker.cpp.
References QwtDoubleRect::bottom(), QwtPlot::canvasMap(), QwtDoubleRect::left(), plot(), QwtDoubleRect::right(), QwtDoubleRect::top(), and QwtScaleMap::transform().
{ QwtScaleMap xMap = plot()->canvasMap(d_xAxis); QwtScaleMap yMap = plot()->canvasMap(d_yAxis); const int left = xMap.transform(rect.left()); const int right = xMap.transform(rect.right()); const int top = yMap.transform(rect.top()); const int bottom = yMap.transform(rect.bottom()); return QRect(left, top, right - left, bottom - top); }
QPoint QwtPlotPicker::transform | ( | const QwtDoublePoint & | pos ) | const [protected] |
Translate a point from plot into pixel coordinates
Definition at line 390 of file qwt_plot_picker.cpp.
References QwtPlot::canvasMap(), plot(), QwtScaleMap::transform(), QwtDoublePoint::x(), and QwtDoublePoint::y().
{ QwtScaleMap xMap = plot()->canvasMap(d_xAxis); QwtScaleMap yMap = plot()->canvasMap(d_yAxis); return QPoint( xMap.transform(pos.x()), yMap.transform(pos.y()) ); }
int QwtPlotPicker::xAxis | ( | ) | const |
Return x axis.
Definition at line 188 of file qwt_plot_picker.cpp.
Referenced by QwtPlotPicker(), QwtPlotZoomer::rescale(), scaleRect(), QwtPlotZoomer::setAxis(), and setAxis().
{
return d_xAxis;
}
int QwtPlotPicker::yAxis | ( | ) | const |
Return y axis.
Definition at line 194 of file qwt_plot_picker.cpp.
Referenced by QwtPlotPicker(), QwtPlotZoomer::rescale(), scaleRect(), QwtPlotZoomer::setAxis(), and setAxis().
{
return d_yAxis;
}