00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef AIPlot_H
00021 #define AIPlot_H
00022
00023 #include <qwidget.h>
00024 #include <qcolor.h>
00025 #include <qpopmenu.h>
00026 #include <qlayout.h>
00027 #include <qlabel.h>
00028 #include <qpainter.h>
00029 #include <qprinter.h>
00030 #include <qpushbt.h>
00031 #include <qradiobt.h>
00032 #include <qbttngrp.h>
00033 #include <qtooltip.h>
00034
00035 #include <stdio.h>
00036 #include <stdlib.h>
00037
00038 #include "aibase.h"
00039
00040
00041
00042
00043
00044
00045
00046
00047 #define AI_PLOT_POLAR 0
00048 #define AI_PLOT_TREND 1
00049
00050 #define AI_PLOT_LINE 0
00051 #define AI_PLOT_BAR 1
00052 #define AI_PLOT_CROSS 2
00053
00054 #define VERTICAL 0x01
00055 #define HORIZONTAL 0x02
00056
00057 #define AI_CTRL_ZOOM 0
00058 #define AI_CTRL_PAN 1
00059 #define AI_CTRL_CURS 2
00060
00061 #define X_AXIS_NUMBER 0x0000001
00062 #define X_AXIS_DATE 0x0000002
00063 #define X_AXIS_GERMAN 0x0000004
00064 #define X_AXIS_UK 0x0000008
00065
00066 class AICursor
00067 {
00068 public:
00069 AICursor(double x=0.0,double y=0.0);
00070 double xpos;
00071 double ypos;
00072 int t;
00073 int t_index;
00074
00075 void set(double x,double y,int trace=-1,int index=-1);
00076 double x(void);
00077 double y(void);
00078 int trace(void);
00079 int index(void);
00080 };
00081
00082 class AIPlot : public AIBase
00083 {
00084 Q_OBJECT
00085 public:
00086
00087 AIPlot(QWidget *parent,const char *name=0,int b=512,int t=1);
00088 ~AIPlot();
00089 void init();
00090
00091
00092 void setData(int trace,int qn,double *xp,double *yp);
00093 void setTraces(int t);
00094 void setRanges(double xmn,double xmx,double ymn,double ymx);
00095 void setXRange(double xmn,double xmx);
00096 void setYRange(double ymn,double ymx);
00097 void setPlotColor(int bar,int r,int g,int b);
00098 void setPlotColor(int bar,QColor c);
00099 void setPlotType(int type);
00100 void setGraphType(int type);
00101 void setEnabled(int graph,bool on);
00102 void setDoubleBuffer(bool on);
00103 void setXName(QString xName);
00104 void setYName(QString yName);
00105 void setXUnit(QString xUnit);
00106 void setYUnit(QString yUnit);
00107 void resetCalced();
00108
00109 void setkomma(bool flag);
00110
00111 virtual void setXAxisDisplay(int type);
00112
00113
00114 double getXmin();
00115 double getYmin();
00116 double getXmax();
00117 double getYmax();
00118 int getPlotType(void);
00119 int getGraphType(void);
00120 bool isEnabled(int graph);
00121
00122 double *xtrace[8];
00123 double *ytrace[8];
00124 int bufsize;
00125 int traces;
00126 int qn[8];
00127 double xmin,xmax;
00128
00129 double ymin,ymax;
00130
00131
00132
00133 double azx1,azy1,azx2,azy2;
00134 double zoomx1[8],zoomy1[8],zoomx2[8],zoomy2[8];
00135 int zoomed_in;
00136 bool zooming;
00137
00138
00139 AICursor p_curs[8];
00140 QColor c_curs[8];
00141
00142 private slots:
00143 void setZoomMode();
00144 void setZoomOut();
00145 void setPanMode();
00146 void setCursMode();
00147
00148 protected:
00149 virtual void drawIt( QPainter *p);
00150 virtual void drawGrid( QPainter *p );
00151 virtual void drawScale( QPainter *p,int direction,int w,int h);
00152 virtual void drawLabel( QPainter *p,int direction,int w,int rw,int h,int rh);
00153
00154 bool calced[8];
00155 int x_axis_display_type;
00156
00157 private:
00158 void paintEvent( QPaintEvent *p );
00159 void resizeEvent(QResizeEvent *e);
00160
00161 QPixmap *bg_buf;
00162 QPointArray *qa[8];
00163 QPrinter *printer;
00164 QPopupMenu *adhoc;
00165 QColor color[8];
00166 int pcnt[8];
00167 QCursor *cs_standard;
00168 QCursor *cs_pan;
00169 bool trace_enabled[8];
00170 AICursor calcTraceCoords(double x,double y);
00171
00172 double rzoomx1,rzoomy1,rzoomx2,rzoomy2;
00173 double panx1,pany1,panx2,pany2;
00174 bool panning;
00175 bool dbuffer;
00176
00177 bool showkomma;
00178
00179
00180 int plottype;
00181 int graphtype;
00182 int ctrlmode;
00183 int used_curs;
00184
00185 QString xName;
00186 QString yName;
00187 QString xUnit;
00188 QString yUnit;
00189
00190 bool reshade;
00191 };
00192
00193
00194
00195
00196
00197 #endif // #ifdef AIPLot_H
00198
00199
00200
00201
00202