Releases: jkriege2/JKQtPlotter
Releases · jkriege2/JKQtPlotter
v5.0.0-beta1
First Beta-Release for upcoming 5.0.0 of JKQtPlotter
Changes, compared to v4.0.0 include:
General/Build-System:
- BREAKING: renamed library JKQTCommonStatisticsAndMath to JKQTMath. Note: A CMake-ALIAS-Library JKQTCommonStatisticsAndMath was also added to ease transition for users
- BREAKING: JKQTFastPlotter class and library are now deprecated and will be removed in future versions!
- BREAKING: The QMake build system is deprecated and will not get the same love and atttention as the recommended CMake system. The QMake scripts might be removed in future versions!
- FIXED/SECURITY not using sprintf() any more ... replaced by e.g. snprintf() , which is more secure.
- FIXED issue #102: Fix CMake Compile Error: JKQTCommonLib no properly linked in JKQTMath static build (thanks to user:Neumann-A for reporting)
- CLEANUP (BREAKING) of library structure
- NEW: Using precompiled headers in CMake-build to speed up build times
- NEW/BREAKING: split jkqtcommon into basic tools and jkqtmath for advanced math tools not used by all libs
- NEW: When using a MSVC compiler, the generated PDB files are installed to CMAKE_INSTALL_PREFIX/bin/
- NEW: Added CMake option JKQtPlotter_BUILD_WITH_TIMING_INFO_OUTPUT, which activates several runtime-measurement guards of type JKQTPAutoOutputTimer (output via qDebug())
- NEW/BREAKING: provide general targets JKQTPlotter5/6::JKQTPlotter5/6, JKQTPlotter5/6::JKQTMathText5/6, ... which are independent of the type of build (shared/static)
- NEW/BREAKING: refactor CMake-Code, so static/dynamic switch is done via BUILD_SHARED_LIBS, which retires JKQtPlotter_BUILD_STATIC_LIBS, JKQtPlotter_BUILD_SHARED_LIBS and removes the capability to build static and shared libraries in one location (fixes issue #104)
- NEW: prepareed library for CMake's FetchContent-API
- NEW: the different sub-libraries JKQTPlotter, JKQTFastPlotter (DEPRECATED), JKQTMath, JKQTMathText can be activated/deactivated with CMake options JKQtPlotter_BUILD_LIB_JKQTPLOTTER, JKQtPlotter_BUILD_LIB_JKQTFASTPLOTTER, JKQtPlotter_BUILD_LIB_JKQTMATHTEXT, JKQtPlotter_BUILD_LIB_JKQTMATH
- NEW add JKQTPExpected datatype, jkqtp_roundToDigits(), generic RegularExpression functions (jkqtp_rxExactlyMatches(), jkqtp_rxIndexIn(), jkqtp_rxContains(), jkqtp_rxPartiallyMatchesAt() )
- NEW CSS-parser JKQTPCSSParser in order to parse e.g. linear-gradient() specifications in jkqtp_String2QBrushStyleExt()
JKQTPlotter:
JKQTPlotter
- BREAKING/REWORKED: Updated default styling of graphs. They are now more modern!
- BREAKING/REWORKED: Implement better/more access functions to the graphs (inlcuding sorting, moving up/down, appending/prepending, graphs-iterators ...), solves issue #97, thanks to user:sim186 for bringing this up
- BREAKING/FIXED: fixed issue #96: JKQTPlotter::saveAsPixelImage() does not add a border around the image any longer (can be reacivated by a new optional function parameter), thanks to user:nmielcarek for reporting
- BREAKING/FIXED: JKQTPXFunctionLineGraph and JKQTPYFunctionLineGraph do no longer contribute to auto-scaling, as that depends on the current plot-axes (hen-egg-problem).
- BREAKING/FIXED: graph symbols were not properly applied when reading styles (in fact they were shuffled under some circumstances)
- BREAKING/NEW: rework layouting of keys/legends: new classes JKQTPBaseKey, JKQTPMainKey ... and removed several styling function for the main key from JKQTBasePlotter and JKQTPlotter (these are now accessible via JKQTBasePlotter::getMainKey()
- BREAKING/DEPRECATED: deprecated JKQTBasePlotter::zoom() and JKQTPlotter::zoom(), use JKQTBasePlotter::setXY() and JKQTPlotter::setXY() instead
- FIXED issue described in #62: Fix custom labels draw, because giving exactly two label-strings did not display all of them, thanks to user:FalsinSoft
- FIXED issue #70: Typo in jkqtplotter/CMakeLists.txt, thanks to user:tedlinlab
- FIXED issue #80: Bug with multiple inheritance with Q_GDAGET with CLANG, thanks to user:igormironchik, caused by QTBUG-104874
- FIXED: styling was not properly applied to coordinate axes of colorbars outside the plot
- FIXED issue #73: Symbol thickness differs in actual plot and legend, thanks to user:sim186
- FIXED plot-size calculation for filled graphs
- FIXED issue #98: Signal JKQTPlotter::plotMouseWheelOperated() was called with wrong x/y-position-coordinates, thanks to user:fpalazzolo for reporting this bug
- FIXED: first symbol in symbols rotation was never used
- FIXED: color palettes with few entries (i.e. "step"-palettes) were not applied correctly
- FIXED: fixes strange rendering with distortions (especially in text!), by correcting size calculation of internal image buffer
- FIXED: exporting gridPrinting plots when using only a JKQTBasePlotter
- FIXED: fixed impleentations of JKQTPlotter::beginGraphs(), which actually returned the end-iterator (COPY-PASTE-ERROR!!!)
- FIXED issue #99: Clipping of Tick Labels: for horizontal axes, additional space at the left and/or right of the plot is allowed so labels are no longer clipped (thanks to user:allenbarnett5 for reporting)
- FIXED issue #99: Height of one-column key/legend was too large (thanks to user:allenbarnett5 for reporting)
- FIXED issue mentioned in #110: Lock the panning action to certain values: View zooms in, when panning close to AbosluteXY (thanks to user:sim186 for reporting)
- FIXED: jkqtpstatSum() and jkqtpstatSumSqr() did not work, as a non-existing function is called internally
- FIXED removed unnecessary operators (<,>,<=,>=) from JKQTPColumnIterator and JKQTPColumnConstIterator, which lead to exceptions on some compilers (MSVC)
- FIXED/IMPROVED issue #100: Add option to disable resize delay feature by setting the delay to zero (thanks to user:fpalazzolo for reporting)
- FIXED symmetry ...
Bugfix-Release for 4.0.0 branch, (replaces v4.0.2)
Bugfix-Release for 4.0.0 branch
bugfix release for v4.0.0
same contents as https://github.com/jkriege2/JKQtPlotter/releases/v4.0.0
in addition fixed:
- #113: fixed a bug in the CMakeLists.txt-file for JKQTPlotterLib: some headers were not properly installed
Qt6 compatibility & rework of class hierarchy & diverse improvements + bugfixes
Changes, compared to v2019.11.3 include:
- fixed issue #34: Skip drawing the line for negative values in log plots, thanks to user:certik
- fixed issue #38: Buffer overflow, thanks to user:zertyz
- fixed issue #43: jkqtp_format() had undefined behaviour, thanks to user:Makis42
- fixed issue #41: Build error when JKQtPlotter_BUILD_INCLUDE_XITS_FONTS set to OFF , thanks to user:smistad
- fixed issue #37: CMake installs things into $PREFIX/doc/*.txt , thanks to user:certik
- fixed issue #45: Build error on mac jkqtfastplotter.cpp:342:28: Variable has incomplete type 'QPainterPath', thanks to user:abdedixit
- merged PR #47: Some minor build fixes, thanks to user:patstew
- fixed issue #48: Cannot #include QPrintPreviewWidget, thanks to user:schlenger
- fixed issue #49: Incorrect tag in style .ini-files, thanks to user:smistad
- fixed issue #50: Double-Click Zoom Issue, thanks to user:Delfinos
- fixed issue #52: 'runtime_error': is not a member of 'std', thanks to user:gomgomi
- fixed issue #56: Logscale zoom multiple zeros? , thanks to user:sufuk
- merged PR #51: Bug: JKMathParser exception return local variable , thanks to user:StephanOostveen
- renamed/breaking change: renamed JKQTPPlotObject->JKQTPGeometricPlotElement and added new base class JKQTPPlotAnnotationElement
- renamed/breaking change: renamed JKQTPColorPaletteStyleAndToolsMixin::setPalette() -> JKQTPColorPaletteStyleAndToolsMixin::setColorPalette()
- removed/breaking change: removed the usage of some deprecated functions and objects (e.g. QMatrix)
- removed/breaking change: removed the overlay elements (derived from JKQTPOverlayElement), which were not very well set up and are more confusing than useful.
- improved/breaking change: geometric objects now use an adaptive drawing algorithm to represent curves (before e.g. ellipses were always separated into a fixed number of line-segments)
- improved/breaking change: geometric elements constructor: removed all styling properties, added setStyle()-functions to replace them. This is necessary to better work with the extended Styling system
- improved: constructors and access functions for several geometric objects (e.g. more constructors, additional functions to retrieve parameters in diferent forms, iterators for polygons, ...)
- improved/breaking change: reworked class hierarchy of parsed function plots and declared several setters as slots.
- improved/breaking change: reworked class hierarchy of bar & impulse charts.
- improved/breaking change: reworked class hierarchy of range charts.
- improved/breaking change: reworked class hierarchy of special line (step) graphs.
- improved/breaking change: reworked class hierarchy of filled line graphs.
- improved/breaking change: reworked class hierarchy of range plot elements (JKQTPVerticalRange and JKQTPHorizontalRange).
- improved/breaking change: reworked class hierarchy of boxplots.
- improved/breaking change: reworked class hierarchy of violin plots.
- improved/breaking change: extended styling system for graphs.
- improved/breaking change: reworked graph Base-Classes (promoted several setters to slots, added Q_PROPERTY- and Q_ENUM-declarations...)
- improved/breaking change: made more functions and function parameters const
- improved/breaking change: image plots now manage CONST-data, not plain pointer arrays... This is OK, since the raw data is never owned nor modified by the plot, only referenced!.
- bugfixed/improved: aspect ratio handling in JKQTPlotter.
- new: switching to semantic versioning ... starting with v4.0.0
- new: Compatibility with Qt 5.15 and Qt6
- new: added support for high-dpi devices (thanks for PR #55: Enable high-dpi support for plots by user:akenmorris.
- new: added geometric plot objects JKQTPGeoArrow to draw arrows (aka lines with added line-end decorators, also extended JKQTPGeoLine, JKQTPGeoInfiniteLine, JKQTPGeoPolyLines to draw line-end decorator (aka arrows)
- new: all geometric objects can either be drawn as graphic element (i.e. lines are straight line, even on non-linear axes), or as mathematical curve (i.e. on non-linear axes, lines become the appropriate curve representing the linear function, connecting the given start/end-points). The only exceptions are ellipses (and the derived arcs,pies,chords), which are always drawn as mathematical curves
- new: a new graph class JKQTPXYFunctionLineGraph draws parametric 2D curves ( [x,y] = f(t) ), see \ref JKQTPlotterEvalCurves for an example
- new: added several new copy/set-functions to JKQTPDatastore
- new: added JKQTPlotter signal, when widget was resized
- new: added JKQTPFilledHorizontalRangeGraph, complementing JKQTPFilledVerticalRangeGraph
v2019.11.3: 3rd bugfix release for v2019.11
- fixed issue #43: jkqtp_format() had undefined behaviour, thanks to user:Makis42
- fixed issue #41: Build error when JKQtPlotter_BUILD_INCLUDE_XITS_FONTS set to OFF , thanks to user:smistad
- fixed issue #37: CMake installs things into $PREFIX/doc/*.txt , thanks to user:certik
v2019.11.2: 2nd bugfix release for v2019.11
fixed issue #38: Buffer overflow, thanks to user:zertyz
v2019.11.1: 1st bugfix release for v2019.11
First Release after Major Update/Refactoring
Starting in summer 2018, JKQTPlotter received some major workover. During this, it lost compatibility to the QuickFit 3.0 code base.
Changes, compared to v2018.08 include:
- new: CMake-base build, which deprecated the QMake-build
- new: added QMake-Projects for static and for shared library builds
- new: extensive set of Examples and Tutorials
- new: checked builds with continuous integration from AppVeyor: https://ci.appveyor.com/project/jkriege2/jkqtplotter/branch/master
- new/update: support for building with Microsoft Visual Studio (Win), MinGW (Win), GCC (Linux/MacOS)
- update: massively improved (doxygen-generated) Online-Documentation (http://jkriege2.github.io/JKQtPlotter/index.html) (automatically generated after each commit using ravis CI)
- update: refactoring of the library's directory structure
- update: refactoring/renaming of API, including the function anming scheme and class names
- changed: using static const variables instead of #define for fixed default values (e.g. JKQTPImageTools::LUTSIZE, JKQTPImageTools::PALETTE_ICON_WIDTH, JKQTPlotterDrawinTools::ABS_MIN_LINEWIDTH, JKQTMathText::ABS_MIN_LINEWIDTH ...)
- Updates to JKQTPlotter:
- new: added JKQTPSingleColumnSymbolsGraph for single-column data, e.g. drawn as (random) scatter or bee-swarm or rug plots
- new: stacked barcharts with JKQTPBarVerticalStackableGraph, JKQTPBarHorizontalStackableGraph
- new: use/support of C++11 features (e.g. std::function<> and lambda functions in JKQTPXFunctionLineGraph / JKQTPYFunctionLineGraph )
- new: optional OpenCV interface
- new: optional CImg interface
- new: Styling System for JKQTPlotter
- new: added debugging option, which surrounds different regions with visible rectangles (JKQTBasePlotter::enableDebugShowRegionBoxes() )
- new: frames (plot viewport, key/legend ...) may be rounded off at the corners
- new: diverse new styling options (default font name/size ...)
- new: additionl options for styling coordinate axes
- new: Mix-In classes to unify plot styleing functions (setters/getters) in all graphs
- new: additional options for graph filling (color gradients, textures, ...) as provided by QBrush
- new: added a general feature to JKQTPPlotElement which allows to show a graph in a highlighted state (if supported by the derived graph class!)
- new: JKQTPXYParametrizedScatterGraph: added functors to transform column values into symbol type+size and line-width to give even more control
- new: user-interaction tool that shows coordinates of data points near the current mouse position (when mouse is dragged, while mouse button is pressed), see: jkqtpmdaToolTipForClosestDataPoint
- new: user-interaction tool that measures distances and angles when mouse is dragged, while mouse button is pressed), see: jkqtpmdaRuler
- new: advanced styling options for boxplots + example for the styling: Example (JKQTPlotter): Styling different aspects of boxplots
- new: notched boxplots, see: Example (JKQTPlotter): Styling different aspects of boxplots
- new: several new plot symbols, see: JKQTPGraphSymbols
- new: Statistics library with functions to calculate histograms, regression, kernel density estimates, ... see: Statistical Computations
- new: iterator interface and improved documentation for JKQTPDatastore
- new: violin plots (see Example (JKQTPlotter): Violin Plots )
- changed: removed old selection-code and replaced by general highlighting feature
- changed: JKQTPStepHorizontalGraph has been renamed to JKQTPSpecialLineHorizontalGraph (vertical variants also) and have gained additional features (baseline for filling and drawing of symbols)
- changed: filled curve graphs (e.g. JKQTPSpecialLineHorizontalGraph) are now merely a specializedly initialized JKQTPSpecialLineHorizontalGraph
- removed: Removed datarange-feature
- update: reworked user interactions API
- update: reworked error indicator base classes
- update: improvements to contour plots (e.g. highlighting single contour levels, split into a class for simple C-arrays [JKQTPContourPlot] and one for image data in a JKQTPDatastore column [JKQTPColumnContourPlot]) + added example, see JKQTPColumnContourPlot and Example (JKQTPlotter): Contour Plots
- fixed: colorbars at top were positioned over the plot label
- fixed: RGB-image plots now work properly with inverted axes (image is inverted, befor image was not shown at all)
- Updates to JKQTMathText:
- new: slanted fractions (\sfrac{}{}, \stfrac{}{})
- update/fix: several general improvements and bugfixes
- update/fix: improved error handling
- update: updated contained version of STIX fonts, better handling of different STIX versions
- update: improved documentation