00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <vector>
00022 #include <qwidget.h>
00023 #include <qpainter.h>
00024
00025 class JezabelPlotFunction {
00026 public:
00027 virtual float operator()(float) = 0;
00028 };
00029
00030 class JezabelPlot : public QWidget {
00031 Q_OBJECT
00032 public:
00033 JezabelPlot(JezabelPlotFunction *, float _xmin, float _xmax, float _ymin, float _ymax, bool xlog, bool ylog, int xsize, int ysize,
00034 QWidget *parent = 0);
00035 void setXRange(float,float);
00036 void setYRange(float,float);
00037 void drawGraph();
00038
00039 protected:
00040 virtual void paintEvent( QPaintEvent*);
00041
00042 private:
00043 JezabelPlotFunction *fun;
00044 float xmin,xmax,ymin,ymax,xright,xleft;
00045 QSize graphSize;
00046 int borderwidth;
00047 int gtop,gbottom,gright,gleft;
00048 QPixmap* _buffer;
00049 float XScaleUnit,YScaleUnit;
00050 bool xlog, ylog;
00051
00052 int xPoint(float x);
00053 int yPoint(float y);
00054 float xPointInv(int x);
00055 float yPointInv(int y);
00056 int point(float x, Orientation dir);
00057 float pointInv(int x, Orientation dir);
00058 void drawScale(QPainter &p,
00059 Orientation scaleDir,
00060 int pos, int tickDir);
00061
00062 };
00063