/usr/include/qwt/qwt_plot.h is in libqwt-dev 6.0.0-1ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 | /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
* Qwt Widget Library
* Copyright (C) 1997 Josef Wilgen
* Copyright (C) 2002 Uwe Rathmann
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the Qwt License, Version 1.0
*****************************************************************************/
#ifndef QWT_PLOT_H
#define QWT_PLOT_H
#include "qwt_global.h"
#include "qwt_text.h"
#include "qwt_plot_dict.h"
#include "qwt_scale_map.h"
#include "qwt_interval.h"
#include <qframe.h>
class QwtPlotLayout;
class QwtLegend;
class QwtScaleWidget;
class QwtScaleEngine;
class QwtScaleDiv;
class QwtScaleDraw;
class QwtTextLabel;
class QwtPlotCanvas;
/*!
\brief A 2-D plotting widget
QwtPlot is a widget for plotting two-dimensional graphs.
An unlimited number of plot items can be displayed on
its canvas. Plot items might be curves (QwtPlotCurve), markers
(QwtPlotMarker), the grid (QwtPlotGrid), or anything else derived
from QwtPlotItem.
A plot can have up to four axes, with each plot item attached to an x- and
a y axis. The scales at the axes can be explicitely set (QwtScaleDiv), or
are calculated from the plot items, using algorithms (QwtScaleEngine) which
can be configured separately for each axis.
\image html plot.png
\par Example
The following example shows (schematically) the most simple
way to use QwtPlot. By default, only the left and bottom axes are
visible and their scales are computed automatically.
\verbatim
#include <qwt_plot.h>
#include <qwt_plot_curve.h>
QwtPlot *myPlot = new QwtPlot("Two Curves", parent);
// add curves
QwtPlotCurve *curve1 = new QwtPlotCurve("Curve 1");
QwtPlotCurve *curve2 = new QwtPlotCurve("Curve 2");
// copy the data into the curves
curve1->setData(...);
curve2->setData(...);
curve1->attach(myPlot);
curve2->attach(myPlot);
// finally, refresh the plot
myPlot->replot();
\endverbatim
*/
class QWT_EXPORT QwtPlot: public QFrame, public QwtPlotDict
{
Q_OBJECT
Q_PROPERTY( QString propertiesDocument
READ grabProperties WRITE applyProperties )
public:
//! \brief Axis index
enum Axis
{
//! Y axis left of the canvas
yLeft,
//! Y axis right of the canvas
yRight,
//! X axis below the canvas
xBottom,
//! X axis above the canvas
xTop,
//! Number of axes
axisCnt
};
/*!
Position of the legend, relative to the canvas.
\sa insertLegend()
\note In case of ExternalLegend, the legend is not
handled by QwtPlotRenderer
*/
enum LegendPosition
{
//! The legend will be left from the QwtPlot::yLeft axis.
LeftLegend,
//! The legend will be right from the QwtPlot::yRight axis.
RightLegend,
//! The legend will be below QwtPlot::xBottom axis.
BottomLegend,
//! The legend will be between QwtPlot::xTop axis and the title.
TopLegend,
/*!
External means that only the content of the legend
will be handled by QwtPlot, but not its geometry.
This type can be used to have a legend in an
external window ( or on the canvas ).
*/
ExternalLegend
};
explicit QwtPlot( QWidget * = NULL );
explicit QwtPlot( const QwtText &title, QWidget *p = NULL );
virtual ~QwtPlot();
void applyProperties( const QString & );
QString grabProperties() const;
void setAutoReplot( bool tf = true );
bool autoReplot() const;
// Layout
QwtPlotLayout *plotLayout();
const QwtPlotLayout *plotLayout() const;
// Title
void setTitle( const QString & );
void setTitle( const QwtText &t );
QwtText title() const;
QwtTextLabel *titleLabel();
const QwtTextLabel *titleLabel() const;
// Canvas
QwtPlotCanvas *canvas();
const QwtPlotCanvas *canvas() const;
void setCanvasBackground( const QBrush & );
QBrush canvasBackground() const;
void setCanvasLineWidth( int w );
int canvasLineWidth() const;
virtual QwtScaleMap canvasMap( int axisId ) const;
double invTransform( int axisId, int pos ) const;
double transform( int axisId, double value ) const;
// Axes
QwtScaleEngine *axisScaleEngine( int axisId );
const QwtScaleEngine *axisScaleEngine( int axisId ) const;
void setAxisScaleEngine( int axisId, QwtScaleEngine * );
void setAxisAutoScale( int axisId, bool on = true );
bool axisAutoScale( int axisId ) const;
void enableAxis( int axisId, bool tf = true );
bool axisEnabled( int axisId ) const;
void setAxisFont( int axisId, const QFont &f );
QFont axisFont( int axisId ) const;
void setAxisScale( int axisId, double min, double max, double step = 0 );
void setAxisScaleDiv( int axisId, const QwtScaleDiv & );
void setAxisScaleDraw( int axisId, QwtScaleDraw * );
double axisStepSize( int axisId ) const;
QwtInterval axisInterval( int axisId ) const;
const QwtScaleDiv *axisScaleDiv( int axisId ) const;
QwtScaleDiv *axisScaleDiv( int axisId );
const QwtScaleDraw *axisScaleDraw( int axisId ) const;
QwtScaleDraw *axisScaleDraw( int axisId );
const QwtScaleWidget *axisWidget( int axisId ) const;
QwtScaleWidget *axisWidget( int axisId );
void setAxisLabelAlignment( int axisId, Qt::Alignment );
void setAxisLabelRotation( int axisId, double rotation );
void setAxisTitle( int axisId, const QString & );
void setAxisTitle( int axisId, const QwtText & );
QwtText axisTitle( int axisId ) const;
void setAxisMaxMinor( int axisId, int maxMinor );
int axisMaxMinor( int axisId ) const;
void setAxisMaxMajor( int axisId, int maxMajor );
int axisMaxMajor( int axisId ) const;
// Legend
void insertLegend( QwtLegend *, LegendPosition = QwtPlot::RightLegend,
double ratio = -1.0 );
QwtLegend *legend();
const QwtLegend *legend() const;
// Misc
virtual QSize sizeHint() const;
virtual QSize minimumSizeHint() const;
virtual void updateLayout();
virtual void drawCanvas( QPainter * );
void updateAxes();
virtual bool event( QEvent * );
virtual void drawItems( QPainter *, const QRectF &,
const QwtScaleMap maps[axisCnt] ) const;
Q_SIGNALS:
/*!
A signal which is emitted when the user has clicked on
a legend item, which is in QwtLegend::ClickableItem mode.
\param plotItem Corresponding plot item of the
selected legend item
\note clicks are disabled as default
\sa QwtLegend::setItemMode(), QwtLegend::itemMode()
*/
void legendClicked( QwtPlotItem *plotItem );
/*!
A signal which is emitted when the user has clicked on
a legend item, which is in QwtLegend::CheckableItem mode
\param plotItem Corresponding plot item of the
selected legend item
\param on True when the legen item is checked
\note clicks are disabled as default
\sa QwtLegend::setItemMode(), QwtLegend::itemMode()
*/
void legendChecked( QwtPlotItem *plotItem, bool on );
public Q_SLOTS:
virtual void replot();
void autoRefresh();
protected Q_SLOTS:
virtual void legendItemClicked();
virtual void legendItemChecked( bool );
protected:
static bool axisValid( int axisId );
virtual void updateTabOrder();
virtual void resizeEvent( QResizeEvent *e );
private:
void initAxesData();
void deleteAxesData();
void updateScaleDiv();
void initPlot( const QwtText &title );
class AxisData;
AxisData *d_axisData[axisCnt];
class PrivateData;
PrivateData *d_data;
};
#endif
|