Eneboo - Documentación para desarrolladores
src/qwt/src/qwt_plot.h
Ir a la documentación de este archivo.
00001 /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
00002  * Qwt Widget Library
00003  * Copyright (C) 1997   Josef Wilgen
00004  * Copyright (C) 2002   Uwe Rathmann
00005  *
00006  * This library is free software; you can redistribute it and/or
00007  * modify it under the terms of the Qwt License, Version 1.0
00008  *****************************************************************************/
00009 
00010 #ifndef QWT_PLOT_H
00011 #define QWT_PLOT_H
00012 
00013 #include <qframe.h>
00014 #include "qwt_global.h"
00015 #include "qwt_array.h"
00016 #include "qwt_text.h"
00017 #include "qwt_plot_dict.h"
00018 #include "qwt_scale_map.h"
00019 #include "qwt_plot_printfilter.h"
00020 
00021 class QwtPlotLayout;
00022 class QwtLegend;
00023 class QwtScaleWidget;
00024 class QwtScaleEngine;
00025 class QwtScaleDiv;
00026 class QwtScaleDraw;
00027 class QwtTextLabel;
00028 class QwtPlotCanvas;
00029 class QwtPlotPrintFilter;
00030 
00077 class QWT_EXPORT QwtPlot: public QFrame, public QwtPlotDict
00078 {
00079     friend class QwtPlotCanvas;
00080 
00081     Q_OBJECT
00082     Q_PROPERTY( QString propertiesDocument 
00083         READ grabProperties WRITE applyProperties )
00084 
00085 public:
00087     enum Axis 
00088     { 
00089         yLeft, 
00090         yRight, 
00091         xBottom, 
00092         xTop, 
00093 
00094         axisCnt 
00095     };
00096 
00105     enum LegendPosition 
00106     {
00107         LeftLegend,
00108         RightLegend,
00109         BottomLegend,
00110         TopLegend,
00111         
00112         ExternalLegend
00113     };
00114 
00115     explicit QwtPlot(QWidget * = NULL);
00116     explicit QwtPlot(const QwtText &title, QWidget *p = NULL);
00117 #if QT_VERSION < 0x040000
00118     explicit QwtPlot(QWidget *, const char* name);
00119 #endif
00120 
00121     virtual ~QwtPlot();
00122 
00123     void applyProperties(const QString &);
00124     QString grabProperties() const;
00125 
00126     void setAutoReplot(bool tf = true);
00127     bool autoReplot() const;
00128 
00129     void print(QPaintDevice &p,
00130         const QwtPlotPrintFilter & = QwtPlotPrintFilter()) const;
00131     virtual void print(QPainter *, const QRect &rect,
00132         const QwtPlotPrintFilter & = QwtPlotPrintFilter()) const;
00133 
00134     // Layout
00135 
00136     QwtPlotLayout *plotLayout();
00137     const QwtPlotLayout *plotLayout() const;
00138 
00139     void setMargin(int margin);
00140     int margin() const;
00141 
00142     // Title
00143 
00144     void setTitle(const QString &);
00145     void setTitle(const QwtText &t);
00146     QwtText title() const;
00147 
00148     QwtTextLabel *titleLabel();
00149     const QwtTextLabel *titleLabel() const;
00150 
00151     // Canvas
00152 
00153     QwtPlotCanvas *canvas();
00154     const QwtPlotCanvas *canvas() const;
00155 
00156     void setCanvasBackground (const QColor &c);
00157     const QColor& canvasBackground() const;
00158 
00159     void setCanvasLineWidth(int w);
00160     int canvasLineWidth() const;
00161 
00162     virtual QwtScaleMap canvasMap(int axisId) const;
00163 
00164     double invTransform(int axisId, int pos) const;
00165     int transform(int axisId, double value) const;
00166 
00167     // Axes
00168 
00169     QwtScaleEngine *axisScaleEngine(int axisId);
00170     const QwtScaleEngine *axisScaleEngine(int axisId) const;
00171     void setAxisScaleEngine(int axisId, QwtScaleEngine *);
00172 
00173     void setAxisAutoScale(int axisId);
00174     bool axisAutoScale(int axisId) const;
00175 
00176     void enableAxis(int axisId, bool tf = true);
00177     bool axisEnabled(int axisId) const;
00178 
00179     void setAxisFont(int axisId, const QFont &f);
00180     QFont axisFont(int axisId) const;
00181 
00182     void setAxisScale(int axisId, double min, double max, double step = 0);
00183     void setAxisScaleDiv(int axisId, const QwtScaleDiv &);
00184     void setAxisScaleDraw(int axisId, QwtScaleDraw *);
00185 
00186     double axisStepSize(int axisId) const;
00187 
00188     const QwtScaleDiv *axisScaleDiv(int axisId) const;
00189     QwtScaleDiv *axisScaleDiv(int axisId);
00190 
00191     const QwtScaleDraw *axisScaleDraw(int axisId) const;
00192     QwtScaleDraw *axisScaleDraw(int axisId);
00193 
00194     const QwtScaleWidget *axisWidget(int axisId) const;
00195     QwtScaleWidget *axisWidget(int axisId);
00196 
00197 #if QT_VERSION < 0x040000
00198     void setAxisLabelAlignment(int axisId, int);
00199 #else
00200     void setAxisLabelAlignment(int axisId, Qt::Alignment);
00201 #endif
00202     void setAxisLabelRotation(int axisId, double rotation);
00203 
00204     void setAxisTitle(int axisId, const QString &);
00205     void setAxisTitle(int axisId, const QwtText &);
00206     QwtText axisTitle(int axisId) const;
00207 
00208     void setAxisMaxMinor(int axisId, int maxMinor);
00209     int axisMaxMajor(int axisId) const;
00210     void setAxisMaxMajor(int axisId, int maxMajor);
00211     int axisMaxMinor(int axisId) const;
00212 
00213     // Legend 
00214 
00215     void insertLegend(QwtLegend *, LegendPosition = QwtPlot::RightLegend,
00216         double ratio = -1.0);
00217 
00218     QwtLegend *legend();
00219     const QwtLegend *legend() const;
00220 
00221     // Misc
00222 
00223     virtual void polish();
00224     virtual QSize sizeHint() const;
00225     virtual QSize minimumSizeHint() const;
00226 
00227     virtual void updateLayout();
00228 
00229     virtual bool event(QEvent *);
00230 
00231 signals:
00242     void legendClicked(QwtPlotItem *plotItem);
00243 
00256     void legendChecked(QwtPlotItem *plotItem, bool on);
00257 
00258 public slots:
00259     virtual void clear();
00260 
00261     virtual void replot();
00262     void autoRefresh();
00263 
00264 protected slots:
00265     virtual void legendItemClicked();
00266     virtual void legendItemChecked(bool);
00267 
00268 protected:
00269     static bool axisValid(int axisId);
00270 
00271     virtual void drawCanvas(QPainter *);
00272     virtual void drawItems(QPainter *, const QRect &,
00273         const QwtScaleMap maps[axisCnt],
00274         const QwtPlotPrintFilter &) const;
00275 
00276     virtual void updateTabOrder();
00277 
00278     void updateAxes();
00279 
00280     virtual void resizeEvent(QResizeEvent *e);
00281 
00282     virtual void printLegendItem(QPainter *, 
00283         const QWidget *, const QRect &) const;
00284 
00285     virtual void printTitle(QPainter *, const QRect &) const;
00286 
00287     virtual void printScale(QPainter *, int axisId, int startDist, int endDist,
00288         int baseDist, const QRect &) const;
00289 
00290     virtual void printCanvas(QPainter *, 
00291         const QRect &boundingRect, const QRect &canvasRect,
00292         const QwtScaleMap maps[axisCnt], const QwtPlotPrintFilter &) const;
00293 
00294     virtual void printLegend(QPainter *, const QRect &) const;
00295 
00296 private:
00297     void initAxesData();
00298     void deleteAxesData();
00299     void updateScaleDiv();
00300 
00301     void initPlot(const QwtText &title);
00302 
00303     class AxisData;
00304     AxisData *d_axisData[axisCnt];
00305 
00306     class PrivateData;
00307     PrivateData *d_data;
00308 };
00309 
00310 #endif
 Todo Clases Namespaces Archivos Funciones Variables 'typedefs' Enumeraciones Valores de enumeraciones Propiedades Amigas 'defines'