~ubuntu-branches/ubuntu/saucy/goldencheetah/saucy

« back to all changes in this revision

Viewing changes to qwt/examples/simple_plot/simple.cpp

  • Committer: Package Import Robot
  • Author(s): KURASHIKI Satoru
  • Date: 2013-08-18 07:02:45 UTC
  • mfrom: (4.1.8 sid)
  • Revision ID: package-import@ubuntu.com-20130818070245-zgdvb47e1k3mtgil
Tags: 3.0-3
debian/control: remove needless dependency. (Closes: #719571)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#include <qapplication.h>
2
 
#include <qwt_plot.h>
3
 
#include <qwt_plot_marker.h>
4
 
#include <qwt_plot_curve.h>
5
 
#include <qwt_legend.h>
6
 
#include <qwt_data.h>
7
 
#include <qwt_text.h>
8
 
#include <qwt_math.h>
9
 
#include <math.h>
10
 
 
11
 
//-----------------------------------------------------------------
12
 
//              simple.cpp
13
 
//
14
 
//      A simple example which shows how to use QwtPlot and QwtData
15
 
//-----------------------------------------------------------------
16
 
 
17
 
class SimpleData: public QwtData
18
 
{
19
 
    // The x values depend on its index and the y values
20
 
    // can be calculated from the corresponding x value. 
21
 
    // So we don�t need to store the values.
22
 
    // Such an implementation is slower because every point 
23
 
    // has to be recalculated for every replot, but it demonstrates how
24
 
    // QwtData can be used.
25
 
 
26
 
public:
27
 
    SimpleData(double(*y)(double), size_t size):
28
 
        d_size(size),
29
 
        d_y(y)
30
 
    {
31
 
    }
32
 
 
33
 
    virtual QwtData *copy() const
34
 
    {
35
 
        return new SimpleData(d_y, d_size);
36
 
    }
37
 
 
38
 
    virtual size_t size() const
39
 
    {
40
 
        return d_size;
41
 
    }
42
 
 
43
 
    virtual double x(size_t i) const
44
 
    {
45
 
        return 0.1 * i;
46
 
    }
47
 
 
48
 
    virtual double y(size_t i) const
49
 
    {
50
 
        return d_y(x(i));
51
 
    }
52
 
private:
53
 
    size_t d_size;
54
 
    double(*d_y)(double);
55
 
};
56
 
 
57
 
class Plot : public QwtPlot
58
 
{
59
 
public:
60
 
    Plot();
61
 
};
62
 
 
63
 
 
64
 
Plot::Plot()
65
 
{
66
 
    setTitle("A Simple QwtPlot Demonstration");
67
 
    insertLegend(new QwtLegend(), QwtPlot::RightLegend);
68
 
 
69
 
    // Set axis titles
70
 
    setAxisTitle(xBottom, "x -->");
71
 
    setAxisTitle(yLeft, "y -->");
72
 
    
73
 
    // Insert new curves
74
 
    QwtPlotCurve *cSin = new QwtPlotCurve("y = sin(x)");
75
 
#if QT_VERSION >= 0x040000
76
 
    cSin->setRenderHint(QwtPlotItem::RenderAntialiased);
77
 
#endif
78
 
    cSin->setPen(QPen(Qt::red));
79
 
    cSin->attach(this);
80
 
 
81
 
    QwtPlotCurve *cCos = new QwtPlotCurve("y = cos(x)");
82
 
#if QT_VERSION >= 0x040000
83
 
    cCos->setRenderHint(QwtPlotItem::RenderAntialiased);
84
 
#endif
85
 
    cCos->setPen(QPen(Qt::blue));
86
 
    cCos->attach(this);
87
 
 
88
 
    // Create sin and cos data
89
 
    const int nPoints = 100;
90
 
    cSin->setData(SimpleData(::sin, nPoints));
91
 
    cCos->setData(SimpleData(::cos, nPoints));
92
 
 
93
 
    // Insert markers
94
 
    
95
 
    //  ...a horizontal line at y = 0...
96
 
    QwtPlotMarker *mY = new QwtPlotMarker();
97
 
    mY->setLabel(QString::fromLatin1("y = 0"));
98
 
    mY->setLabelAlignment(Qt::AlignRight|Qt::AlignTop);
99
 
    mY->setLineStyle(QwtPlotMarker::HLine);
100
 
    mY->setYValue(0.0);
101
 
    mY->attach(this);
102
 
 
103
 
    //  ...a vertical line at x = 2 * pi
104
 
    QwtPlotMarker *mX = new QwtPlotMarker();
105
 
    mX->setLabel(QString::fromLatin1("x = 2 pi"));
106
 
    mX->setLabelAlignment(Qt::AlignLeft | Qt::AlignBottom);
107
 
    mX->setLabelOrientation(Qt::Vertical);
108
 
    mX->setLineStyle(QwtPlotMarker::VLine);
109
 
    mX->setLinePen(QPen(Qt::black, 0, Qt::DashDotLine));
110
 
    mX->setXValue(2.0 * M_PI);
111
 
    mX->attach(this);
112
 
}
113
 
 
114
 
int main(int argc, char **argv)
115
 
{
116
 
    QApplication a(argc, argv);
117
 
 
118
 
    Plot plot;
119
 
#if QT_VERSION < 0x040000
120
 
    a.setMainWidget(&plot);
121
 
#endif
122
 
    plot.resize(600,400);
123
 
    plot.show();
124
 
    return a.exec(); 
125
 
}