RiverWare Qwt 5.2.3 to Qwt 6.1.2 Port / October 2015

Qwt is the open source C++/Qt library used in RiverWare to implement plotting graphics. After an initial analysis done in the prior month (September 2015), RiverWare 6.8 development was ported to the new Qwt version. This is primarily a technology update, without significant functional enhancements. Some data point symbols have better appearance, and we have enabled anti-aliased rendering for slot curves. Upgrading to Qwt 6.1 or greater is a prerequisite for upgrading from Qt 4 to Qt 5, which we hope to complete in the next couple months. (Currently, RiverWare is using Qt 4.8.5. Qt 5 is at version 5.5).

Major porting tasks completed in October include:

  1. Building Qwt 6.1.2 from source code, and deploying it within our Windows development build system, including modifications of our win-config.pl tool. Both 32-bit and 64-bit Windows MSVC builds were required.
  2. Modifying RiverWare build source files, EngrObjs/riverware.pro and Makefiles/riverwarebase.pro.
  3. Creation of temporary stub classes for eliminated Qwt classes, primarily QwtPlotPrintFilter and QwtScaleTransformation.
  4. Various data type changes, including:
    1. Basic global data type substitutions. The new Qwt version relies more on basic Qt data types.
    2. QwtScaleDiv is now passed by value instead of by pointer.
    3. QwtSymbol is now passed by pointers to dynamically allocated instances.
  5. Modifications of printing and plot image export using QwtPlotRenderer.
  6. Modifications for changes to the QwtScaleTransformation class hierarchy. This is used only for our custom "probability scale" which is applied only to percentage series values.
  7. Extensive recoding of plot legends, many aspects, including special handling for Markers conditionally shown in the legend. The new Qwt library has a more extensible architecture for custom legend implementations.
  8. Adaptation of our custom code to support series having NaN values. NaNs are handled as gaps in the drawn slot curve.
  9. Recoding of special mouse operations in the plot canvas: rubber-band zoom and re-centering.

---