qwt_plot_picker.h 2.9 KB
Newer Older
pixhawk's avatar
pixhawk committed
1 2 3 4
/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
 * Qwt Widget Library
 * Copyright (C) 1997   Josef Wilgen
 * Copyright (C) 2002   Uwe Rathmann
5
 *
pixhawk's avatar
pixhawk committed
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the Qwt License, Version 1.0
 *****************************************************************************/

// vim: expandtab

#ifndef QWT_PLOT_PICKER_H
#define QWT_PLOT_PICKER_H

#include "qwt_double_rect.h"
#include "qwt_plot_canvas.h"
#include "qwt_picker.h"

class QwtPlot;

/*!
  \brief 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.
*/

class QWT_EXPORT QwtPlotPicker: public QwtPicker
{
    Q_OBJECT

public:
    explicit QwtPlotPicker(QwtPlotCanvas *);

    explicit QwtPlotPicker(int xAxis, int yAxis,
37
                           QwtPlotCanvas *);
pixhawk's avatar
pixhawk committed
38

39 40 41
    explicit QwtPlotPicker(int xAxis, int yAxis, int selectionFlags,
                           RubberBand rubberBand, DisplayMode trackerMode,
                           QwtPlotCanvas *);
pixhawk's avatar
pixhawk committed
42 43 44 45 46 47 48 49

    virtual void setAxis(int xAxis, int yAxis);

    int xAxis() const;
    int yAxis() const;

    QwtPlot *plot();
    const QwtPlot *plot() const;
50

pixhawk's avatar
pixhawk committed
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
    QwtPlotCanvas *canvas();
    const QwtPlotCanvas *canvas() const;

signals:

    /*!
      A signal emitted in case of selectionFlags() & PointSelection.
      \param pos Selected point
    */
    void selected(const QwtDoublePoint &pos);

    /*!
      A signal emitted in case of selectionFlags() & RectSelection.
      \param rect Selected rectangle
    */
    void selected(const QwtDoubleRect &rect);

    /*!
      A signal emitting the selected points,
      at the end of a selection.

      \param pa Selected points
    */
    void selected(const QwtArray<QwtDoublePoint> &pa);

    /*!
      A signal emitted when a point has been appended to the selection

      \param pos Position of the appended point.
      \sa append(). moved()
    */
    void appended(const QwtDoublePoint &pos);

    /*!
      A signal emitted whenever the last appended point of the
      selection has been moved.

      \param pos Position of the moved last point of the selection.
89
      \sa move(), appended()
pixhawk's avatar
pixhawk committed
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
    */
    void moved(const QwtDoublePoint &pos);

protected:
    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;

    virtual void move(const QPoint &);
    virtual void append(const QPoint &);
    virtual bool end(bool ok = true);

private:
    int d_xAxis;
    int d_yAxis;
};
113

pixhawk's avatar
pixhawk committed
114
#endif