Provided by: libqwt-doc_6.1.4-2_all bug

NAME

       qwtchangelog - What's new in Qwt 6.1

New plot items

QwtPlotBarChart
          Bar chart, see 'examples/distrowatch'

       • QwtPlotMultiBarChart
          Chart of grouped bars - stacked or aligned side by side. See 'examples/barchart'

       • QwtPlotTradingCurve
          Candlestick or OHLC charts typically used to describe price movements over time. See
         'examples/stockchart'

       • QwtPlotShapeItem
          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
          A legend on the plot canvas. See 'examples/legends'

       • QwtPlotZoneItem
          A horizontal or vertical section

       • QwtPlotTextLabel
          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'.

Scales beyond linear and logarithmic transformations

       QwtScaleTransformation has been replaced by QwtTransform and its derived classes:

       • QwtTransformQwtNullTransformQwtLogTransformQwtPowerTransform

       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.

   Datetime scales
       A set of a new classes for displaying datetime values:

       • QwtDate
          A collection of methods to convert between QDateTime and doubles

       • QwtDateScaleEngine
          A scale engine that aligns and finds ticks in terms of datetime units.

       • QwtDateScaleDraw
          A scale draw mapping values to datetime strings.

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

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 QwtAbstractScaleQwtDial, QwtKnob, QwtSlider are derived from QwtAbstractSliderQwtCounter is derived from QWidget

       QwtDoubleRange has been removed.

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

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.

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
          shows how to use the new legend system

       • examples/stockchart
          implementats a QTreeView with checkable items as legend

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.

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.

QwtSymbol

       New symbol types have been introduced:

       • QwtSymbol::PathQwtSymbol::PixmapQwtSymbol::GraphicQwtSymbol::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.

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::FilterPointsQwtPlotCurve::MinimizeMemoryQwtPlotCurve::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.

QwtPlot

       A footer similar to a title has been added.

       QwtPlot::ExternalLegend is obsolete with the new 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:

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

       plot->setCanvas( canvas );

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

Other

   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()
          The valid state was left over from early Qwt versions indicating a state of the
         autoscaler.

   QwtScaleEngine
       The following methods have been added:

       • QwtScaleEngine::setBase()QwtScaleEngine::setTransformation()

   QwtPlotLayout
       The following flags have been added:

       • QwtPlotLayout::IgnoreTitleQwtPlotLayout::IgnoreFooterQwtPlotLayout::setAlignCanvasToScale()

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

   Other changesQwtWeedingCurveFitter
          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
          QwtPlotAbstractSeriesItem has been split into QwtPlotSeriesItem and
         QwtPlotAbstractSeriesStore.

       • QwtText
          A metatype declaration has been added, so that QwtText can be used with QVariant.

       • QwtEventPattern, QwtPanner, QwtMagnifier
          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()
          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.

       • ...

Summary of the new classes

QwtAbstractLegendQwtDateQwtDateScaleDrawQwtDateScaleEngineQwtGraphicQwtLegendDataQwtLegendLabelQwtPainterCommandQwtPixelMatrixQwtPlotAbstractBarChartQwtPlotBarChartQwtPlotMultiBarChartQwtPlotGLCanvasQwtPlotLegendItemQwtPlotShapeItemQwtPlotTextLabelQwtPlotTradingCurveQwtPlotZoneItem

       • QwtPointData

       • QwtPointMapperQwtTransform, QwtNullTransform, QwtLogTransform, QwtPowerTransformQwtWidgetOverlay