Hauptseite   Klassenhierarchie   Übersicht   Auflistung der Dateien   Elementübersicht   Datei-Elemente  

aiplot.h

00001 /*
00002         Written 1998-1999 by Uwe Langenkamp
00003 
00004         This software may be used and distributed according to the terms
00005         of the GNU Public License, incorporated herein by reference.
00006 
00007         The author may be reached as ul@it-guru.de
00008 */
00009 
00010 /* History:
00011  *          1999-10-29 Last Change
00012  *          1999-10-28 Background shading effect added
00013  *          1998-16-07 Auto Resize to Polar added
00014  *          1998-29-03 
00015  *          1998-28-03 Multiple Cursors Added
00016  *          1998-21-03 Add Custom Cursor Bitmap
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 /******* Begin Draw Window Definition  *****************************/
00042 /*******************************************************************/
00043 
00044 
00045 // Convert these to enums
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;   // x - Position in %
00071   double ypos;   // y - Position in %
00072   int    t;      // Cursor Trace
00073   int    t_index;// Position on Trace
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     // Main Methods
00087     AIPlot(QWidget *parent,const char *name=0,int b=512,int t=1);
00088     ~AIPlot();
00089     void   init();
00090 
00091     // Set Methods
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     //hinzugefügt
00109     void setkomma(bool flag);
00110 
00111     virtual void setXAxisDisplay(int type);
00112 
00113     // Get Settings
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     // Zoom Stuff
00133     double       azx1,azy1,azx2,azy2; // actual zoom factor,  for zoom rect
00134     double       zoomx1[8],zoomy1[8],zoomx2[8],zoomy2[8]; // Zoom Factor in %
00135     int          zoomed_in;
00136     bool         zooming;
00137 
00138     // Cursors
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];        // Main Array
00163     QPrinter     *printer;      // Printer
00164     QPopupMenu   *adhoc;        // Main Popup
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; // Zoom Factor in %
00173     double       panx1,pany1,panx2,pany2;
00174     bool         panning;
00175     bool         dbuffer;
00176    //hinzugefügt
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 /********* End Draw Window Definition  *****************************/
00195 /*******************************************************************/
00196 
00197 #endif // #ifdef AIPLot_H
00198 
00199 
00200 
00201 
00202 

Erzeugt am Mon Jan 21 11:39:46 2002 für Positron von doxygen1.2.12 geschrieben von Dimitri van Heesch, © 1997-2001