File: changes.dox

package info (click to toggle)
qwt 6.1.2-6
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 23,848 kB
  • ctags: 15,811
  • sloc: cpp: 57,382; makefile: 41
file content (306 lines) | stat: -rw-r--r-- 9,340 bytes parent folder | download | duplicates (3)
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
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
/*!
\page qwtchangelog What's new in Qwt 6.1

\tableofcontents

\section ITEMS New plot items

  - QwtPlotBarChart\n
    Bar chart, see "examples/distrowatch"

  - QwtPlotMultiBarChart\n
    Chart of grouped bars - stacked or aligned side by side.
    See "examples/barchart"

  - QwtPlotTradingCurve\n
    Candlestick or OHLC charts typically used to describe 
    price movements over time. See "examples/stockchart"

  - QwtPlotShapeItem\n
    A plot item to display rectangles, circles, polygons and all
    other type of shapes ( built from intersections or unifications ), 
    that can be expressed by a QPainterPath.  See "examples/itemeditor"

  - QwtPlotLegendItem\n
    A legend on the plot canvas. See "examples/legends"

  - QwtPlotZoneItem\n
    A horizontal or vertical section 

  - QwtPlotTextLabel\n
    In opposite to a QwtPlotMarker the text is not aligned to a plot coordinate 
    but according to the geometry of the canvas ( f.e top/centered for a title ).
    See "playground/curvetracker".


\section SCALES Scales beyond linear and logarithmic transformations

QwtScaleTransformation has been replaced by QwtTransform and its derived classes:

  - QwtTransform 
  - QwtNullTransform
  - QwtLogTransform
  - QwtPowerTransform

Individual transformations ( f.e. different scaling for special sections )
can be implemented by overloading QwtTransform ( see playground/scaleengine ).

QwtLinearScaleEngine and QwtLogScaleEngine are not limited to 
base 10 anymore.

\subsection DATETIME Datetime scales

A set of a new classes for displaying datetime values:
 
  - QwtDate\n
    A collection of methods to convert between QDateTime and doubles

  - QwtDateScaleEngine\n 
    A scale engine that aligns and finds ticks in terms of datetime units.

  - QwtDateScaleDraw\n
    A scale draw mapping values to datetime strings.

Scales for Qt::UTC and Qt::LocalTime are supported.

\section CONTROLS Redesign of the dial and meter widgets

Many parts of the class design of the dial and meter widgets were left over 
from the 90s ( Qwt 0.2, Qt 1.1 ). 

The derivation tree is simpler and more logical:

  - QwtAbstractScale is a QWidget 
  - QwtAbstractSlider is a QwtAbstractScale. 
    ( for sliders without scales QAbstractSlider should be the base class )
  - QwtThermo is also a QwtAbstractScale
  - QwtDial, QwtKnob, QwtSlider are derived from QwtAbstractSlider
  - QwtCounter is derived from QWidget

QwtDoubleRange has been removed.

All classes use the terminology known from QAbstractSlider - as far as possible.
The extended \ref SCALES "system for scales" is completely supported.

\section OPENGL Basic support for an OpenGL plot canvas

QwtPlotGLCanvas offers the option to draw plot items using an
OpenGL paint engine ( QPaintEngine::OpenGL/OpenGL2 ),
This is not what could be implemented with native OpenGL,
but it offers hardware acceleration in environments,
where the raster paint engine is the only option. 
( f.e Qt4/Windows, or Qt5 on all platforms ). 

QwtPlotGLCanvas is in an experimental state and is not recommended for average 
use cases. 

\section LEGEND A new system for plot legends

QwtLegend has been decoupled from QwtPlot and can be replaced by
application specific implementations. Plot items and the legend
exchange the information using QwtLegendData.

QwtPlotLegendItem is a new plot item that displays a legend on the
plot canvas.

The following examples demonstrate how to use the new system:

  - examples/legends\n
    shows how to use the new legend system 
  - examples/stockchart\n
    implementats a QTreeView with checkable items as legend

\section GRAPHIC Off-screen paint device for vector graphics

QwtGraphic can be copied like QImage or QPixmap but is scalable like QSvgGenerator.
It is implemented as a record/replay paint device like QPicture.

\section OVERLAY QwtWidgetOverlay

QwtWidgetOverlay is a base class for implementing widget overlays - primarily
used for use cases like graphical editors or running cursors for the plot canvas.

The following examples show how to use overlays:

  - examples/itemeditor
  - examples/curvetracker

QwtPicker ( -> QwtPlotPicker, QwtPlotZoomer ) internally uses 
QwtWidgetOverlay now, making it easier to implement individual rubber bands.

\section SYMBOL QwtSymbol 

New symbol types have been introduced:

 - QwtSymbol::Path 
 - QwtSymbol::Pixmap 
 - QwtSymbol::Graphic 
 - QwtSymbol::SvgDocument

QwtSymbol autodetect the most performant paint strategy for a paint device
what is in most situations using a QPixmap cache.

QwtSymbol::setPinPoint() allows one to align the symbol individually, f.e to the position
of the peak of an arrow.

\section PLOTCURVE QwtPlotCurve

Some optimizations that got lost with introducing the floating point
based render code with Qwt 6.0 have been reenabled. Other specific optimizations
have been added.

New paint attributes:

  - QwtPlotCurve::FilterPoints
  - QwtPlotCurve::MinimizeMemory
  - QwtPlotCurve::ImageBuffer 

QwtPlotCurve::CacheSymbols has been removed, as caching is implemented
in QwtSymbol now.  

QwtPlotCurve::drawLines(), QwtPlotCurve::drawDots(), 
QwtPlotCurve::drawSteps() and QwtPlotCurve::drawSticks() are virtual now.

\section PLOT QwtPlot 

A footer similar to a title has been added.

QwtPlot::ExternalLegend is obsolete with the 
new \ref LEGEND "system for legends". The signals
QwtPlot::legendClicked(), QwtPlot::legendChecked() have been
removed. Applications need to connect to QwtLegend::clicked()
and QwtLegend::checked().

To support using an OpenGL canvas QwtPlot::setCanvas has been added.
This has 2 important implications for the application code:

  - QwtPlot::canvas() returns QWidget and needs to be casted, when
    using methods of QwtPlotCanvas.
  - QwtPlotCanvas can be created and assigned in application code,
    what makes it possible to derive and overload methods. 

The initialization of a plot canvas with Qwt 6.1 will probably look like
this:

\code
  QwtPlotCanvas* canvas = new QwtPlotCanvas();
  canvas->setXY( ... );
  ...

  plot->setCanvas( canvas );
\endcode

To have a consistent API QwtPlot::setPlotLayout() has been added,


\section OTHER Other

\subsection SCALEDIV QwtScaleDiv

The following methods have been added:

  - QwtScaleDiv::inverted() 
  - QwtScaleDiv::bounded() 
  - QwtScaleDiv::isEmpty() 
  - QwtScaleDiv::isIncreasing() 
  - QDebug operator

The following methods have been removed:

  - QwtScaleDiv::isValid(), QwtScaleDiv::invalidate()\n
    The valid state was left over from early Qwt versions indicating
    a state of the autoscaler.

\subsection SCALEENGINE QwtScaleEngine

The following methods have been added:

  - QwtScaleEngine::setBase() 
  - QwtScaleEngine::setTransformation() 
  
\subsection PLOTLAYOUT QwtPlotLayout

The following flags have been added:

  - QwtPlotLayout::IgnoreTitle
  - QwtPlotLayout::IgnoreFooter 
  - QwtPlotLayout::setAlignCanvasToScale()

\subsection PLOTCANVAS QwtPlotCanvas

Rounded borders ( like with style sheets ) can configured
using QwtPlotCanvas::setBorderRadius();

\subsection OTHERS Other changes

  - QwtWeedingCurveFitter\n
    QwtWeedingCurveFitter::setChunkSize() has been added, with drastic 
    performance improvements for huge sets of points.

  - QwtPlotRenderer
    The frame of the plot canvas can be rendered, what makes the result
    even closer to WYSWYG.  QwtPlotRenderer::exportTo() has been added.

  - QwtSystemClock
    For Qt >= 4.9 QwtSystemClock uses QElapsedTimer internally. As it doesn't
    support a similar feature, QwtSystemClock::precision() has been removed.

  - QwtPlotAbstractSeriesItem\n 
    QwtPlotAbstractSeriesItem has been split into QwtPlotSeriesItem
    and QwtPlotAbstractSeriesStore.

  - QwtText\n
    A metatype declaration has been added, so that QwtText can be used
    with QVariant.
    
  - QwtEventPattern, QwtPanner, QwtMagnifier\n
    Forgotten Qt3 leftovers have been fixed: int -> Qt::KeyboardModifiers

  - QPen Qt5/Qt4 incompatibility
    The default pen width for Qt5 is 1, what makes it a non cosmetic.
    To hide this nasty incompatibility several setPen() methods have been added
    the build pens with a width 0. See QPen::isCosmetic(),

  - qwtUpperSampleIndex()\n
    A binary search algorithm for sorted samples
  
  - QwtMatrixRasterData 
    QwtMatrixRasterData::setValue() has been added

  - QwtPicker
     QwtPicker::rubberBandWidget(), QwtPicker::trackerWidget() have been replaced by
     QwtPicker::rubberBandOverlay(), QwtPicker::trackerOverlay(). 
     QwtPicker::rubberBandMask() has been added. QwtPicker::pickRect() has been 
     replaced by QwtPicker::pickArea()

  - QwtPlotItem
    QwtPlotItem::ItemInterest has been added. QwtPlotItem::setRenderThreadCount()
    was shifted from QwtPlotRasterItem.

  - ...

\section CLASSES Summary of the new classes

  - QwtAbstractLegend
  - QwtDate
  - QwtDateScaleDraw
  - QwtDateScaleEngine
  - QwtGraphic
  - QwtLegendData
  - QwtLegendLabel
  - QwtPainterCommand
  - QwtPixelMatrix
  - QwtPlotAbstractBarChart
  - QwtPlotBarChart
  - QwtPlotMultiBarChart
  - QwtPlotGLCanvas
  - QwtPlotLegendItem
  - QwtPlotShapeItem
  - QwtPlotTextLabel
  - QwtPlotTradingCurve
  - QwtPlotZoneItem
  - QwtPointData
  - QwtPointMapper
  - QwtTransform, QwtNullTransform, QwtLogTransform, QwtPowerTransform
  - QwtWidgetOverlay
*/