forked from OpenModelica/OpenModelica
-
Notifications
You must be signed in to change notification settings - Fork 0
/
qwt_raster_data.h
129 lines (98 loc) · 3.58 KB
/
qwt_raster_data.h
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
/******************************************************************************
* 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_RASTER_DATA_H
#define QWT_RASTER_DATA_H
#include "qwt_global.h"
#include <qnamespace.h>
class QwtInterval;
class QPolygonF;
class QRectF;
class QSize;
template< typename T > class QList;
template< class Key, class T > class QMap;
/*!
\brief QwtRasterData defines an interface to any type of raster data.
QwtRasterData is an abstract interface, that is used by
QwtPlotRasterItem to find the values at the pixels of its raster.
Gaps inside the bounding rectangle of the data can be indicated by NaN
values ( when WithoutGaps is disabled ).
Often a raster item is used to display values from a matrix. Then the
derived raster data class needs to implement some sort of resampling,
that maps the raster of the matrix into the requested raster of
the raster item ( depending on resolution and scales of the canvas ).
QwtMatrixRasterData implements raster data, that returns values from
a given 2D matrix.
\sa QwtMatrixRasterData
*/
class QWT_EXPORT QwtRasterData
{
public:
//! Contour lines
typedef QMap< double, QPolygonF > ContourLines;
/*!
\brief Raster data attributes
Additional information that is used to improve processing
of the data.
*/
enum Attribute
{
/*!
The bounding rectangle of the data is spanned by
the interval(Qt::XAxis) and interval(Qt::YAxis).
WithoutGaps indicates, that the data has no gaps
( unknown values ) in this area and the result of
value() does not need to be checked for NaN values.
Enabling this flag will have an positive effect on
the performance of rendering a QwtPlotSpectrogram.
The default setting is false.
\note NaN values indicate an undefined value
*/
WithoutGaps = 0x01
};
Q_DECLARE_FLAGS( Attributes, Attribute )
//! Flags to modify the contour algorithm
enum ConrecFlag
{
//! Ignore all vertices on the same level
IgnoreAllVerticesOnLevel = 0x01,
//! Ignore all values, that are out of range
IgnoreOutOfRange = 0x02
};
Q_DECLARE_FLAGS( ConrecFlags, ConrecFlag )
QwtRasterData();
virtual ~QwtRasterData();
void setAttribute( Attribute, bool on = true );
bool testAttribute( Attribute ) const;
/*!
\return Bounding interval for an axis
\sa setInterval
*/
virtual QwtInterval interval( Qt::Axis ) const = 0;
virtual QRectF pixelHint( const QRectF& ) const;
virtual void initRaster( const QRectF&, const QSize& raster );
virtual void discardRaster();
/*!
\return the value at a raster position
\param x X value in plot coordinates
\param y Y value in plot coordinates
*/
virtual double value( double x, double y ) const = 0;
virtual ContourLines contourLines( const QRectF& rect,
const QSize& raster, const QList< double >& levels,
ConrecFlags ) const;
class Contour3DPoint;
class ContourPlane;
private:
Q_DISABLE_COPY(QwtRasterData)
class PrivateData;
PrivateData* m_data;
};
Q_DECLARE_OPERATORS_FOR_FLAGS( QwtRasterData::ConrecFlags )
Q_DECLARE_OPERATORS_FOR_FLAGS( QwtRasterData::Attributes )
#endif