JKQTPlotter trunk/v5.0.0
an extensive Qt5+Qt6 Plotter framework (including a feature-richt plotter widget, a speed-optimized, but limited variant and a LaTeX equation renderer!), written fully in C/C++ and without external dependencies
Loading...
Searching...
No Matches
What's New (Release Notes/Versions)

This page lists release notes for the different version of JKQTPlotter

trunk/master

trunk: Overview

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:

  • JKQTMathText:
    • FIXED: JKQTMathText added a little whitespace before and after the LaTeX-string. This was removed as it disturbed the layout of text in plots
    • FIXED: height-calculation of frac-like instructions: before the ascent and descent were equal, even if the numerator and denominator have different heights
    • FIXED: strikeoutPos was not correctly calculated in sub-/superscript node
    • FIXED: symbol spacing in math mode (and text mode)
    • FIXED/IMPROVED: JKQTMathText renders several LaTeX strings better (simple braces in math mode, +-*... as symbols with proper sizes in math mode, added some missing instruction aliases, improved size of \vec and \hat, corrrected fonts usage for \mathrm
    • FIXED: \sum and \prod used the wrong symbol in XITS-mode
    • FIXED issue #117: Unnecessary printing of tilde symbol in math (thanks to user:igormironchik for reporting):
      Tilde was not recognized as a LaTeX instruction, now is interpreted as non-breaking whitespace
    • FIXED issue #118: Dangerous warning in MacOS and clang (thanks to user:igormironchik for reporting):
      a forward-declared class (i.e. incomplete type) was deleted
    • FIXED issue #128: Question about rendering unicode in plot labels: Unicode characters were not rendered if they are not in the currently active font, as fallback-rendering was switched off. It is now switched on again for text and verbatim nodes. Thanks to user:fpalazzolo for reporting this bug
    • IMPROVED: high-dpr-support in JKQTMathText
    • IMPROVED: typesetting of sub-/supercripts, especially for large math operators and braces
    • MODIFIED: brace node now calculates the extension of the child height above or below the strikeoutPos, in order to center braces around the strikeoutPos
    • IMPROVED: improved drawing of parantheses, square brackets ... , underbrace/overbrace
    • IMPROVED: added x-correction for sub/superscript above/below/besides integrals
    • IMPROVED: rendering of sqrt
    • IMPROVED: rendering and size calculation of decorations
    • IMPROVED: tokenizing and parsing of text in text-mode: now a lot of accents with commands like \"a, \'e and variants (e.g. {\"a}, \"{a}, ...) are supported now
    • IMPROVED: all functions in JKQTMathText are re-entrant + diverse speed improvements for parallel use-cases (via caches)
    • IMPROVED/BREAKING: refactored symbol node JKQTMathTextSymbolNode and changed font-lookup!
    • IMPROVED/NEW/BREAKING: refactored whitespace-processing node JKQTMathTextWhitespaceNode, now all major LaTeX whitespace commands are supported properly
    • IMPROVED/NEW/BREAKING: refactored LaTeX parser in JKQTMathText
    • REMOVED/BREAKING: \v[a-zA-Z] and shorthand for \vec{a-zA-Z} was removed, implementation of \bbR,\bbC,... changed
    • MODIFIED/BREAKING: new options interface for JKQTMathText::parse()
    • EMOVED/BREAKING: removed JKQTMathtext::unparsedNode
    • IMPROVED/REWORKED rendering of text in text- and math-mode. Now it is more consistent with the output of LaTeX itself
    • IMPROVED/REWORKED rendering of blackboard font: now several different rendering modes can be selected using JKQTMathText::setFontBlackboradMode()
    • BREAKING/REWORKED: The \verb!...!-command now works the same as in LaTeX
    • BREAKING/REWORKED: Separated the LaTeX parser into JKQTMathTextLatexParser from JKQTMathText
    • BREAKING/CLEANUP: cleanup: Removed Parameter prevNodeSize from JKQTMathTextNode::draw() and JKQTMathTextNode::getSize()/JKQTMathTextNode::getSizeInternal(), since it is only really necessary for JKQTMathTextSubscriptNode and JKQTMathTextSuperscriptNode
    • BREAKING/CLEANUP: using JKQTMathTextNodeSize for all size-calculation functions and got rid of all functions that take the output parameters with call-by-reference, additional information can be outut by local size-classes that derive from JKQTMathTextNodeSize, see e.g. JKQTMathTextSymbolNode::NodeSize and JKQTMathTextSymbolNode::getSymbolSize()
    • NEW: JKQTMathTextVerticalListNode allows to typeset a vertical list of lines
    • NEW: JKQTMathText::parse() by default allows linebreaks in the LaTeX string to be parsed. This can be switched off by a parameter
    • NEW: added functions to set the font-size in pixels (as alternative to the existing functions that set them in points), implements request #76 from user:igormironchik
    • NEW: reworked drawing of decorations: improved appearance and positioning!
    • NEW: additional method JKQTMathtext::getSizeDetail() that returns all size-properties as a convenient struct, also added matching varinat JKQTMathTextNode::getSize()
    • NEW: additional method JKQTMathtext::drawIntoPixmap(), JKQTMathtext::drawIntoPicture(), JKQTMathtext::drawIntoImage() which returns a QPixmap, QPicture and QImage respectively that contains the render result of the currently parsed markup
    • NEW: array/tabular-environments have limited support for formatting string like l|r|c and for \hline , \hdashline , \toprule , \midrule , \bottomrule
    • NEW: reworked code structure: broke up large, single CPP-files into several smaller files!
    • NEW: reworked node class tree: inserted base-class nodes for single-child, dual-child!
    • NEW: improved frac-rendering: font-scaling takes nesting-level into account, overall-rendering, sizes, if a brace surrounds a frac, the heights are equal above and below to center the brace , ...
    • NEW: shows strikeoutPos when drawing Debug-Boxes
    • NEW: LaTeX-Parser understands optional instruction parameters in [...] now
    • NEW: LaTeX-Parser simplifies parse-tree to increase speed of execution
    • NEW: added new decoration instructions: \cancel, \xcancel, \bcancel, \sout, \ocirc, \widetilde, \widehat, \breve
    • NEW: \limits and \nolimits works as in LaTeX now (before it was simply removed and the functionality implemented for a fixed list of symbols)
    • NEW: added top-corner (\ulcorner/\urcorner ) and bottom-corner brackets (\llcorner/\lrcorner )
    • NEW: added \overbracket and \underbracket
    • NEW: added \shaded{color}{...}
    • NEW: added \dashbox{...}
    • NEW: added \dottedbox{...}
    • NEW: added \snugshade{...}
    • NEW: added \snugbox{...}
    • NEW: added \acute{X}, \grave{X}, \acute{X}
    • NEW: added \dashuline{X}, \dotuline{X}
    • NEW: added \underleftarrow{X}, \underrightarrow{X}, \underleftrightarrow{X}, \overleftarrow{X}, \overrightarrow{X}, \overleftrightarrow{X}
    • NEW: added \userfont{SystemFontName}{Text} instruction
    • NEW: added \unicode{HEX} and \utfeight{HEX} instruction to draw unicide characters by code
    • NEW: added \substack[lcr]{...\\...} , \lsubstack{...\\...} , \rsubstack{...\\...} instructions
    • NEW: added \phantom{xXy} , \vphantom{xXy} and \hphantom{xXy} instructions for whitespaces with the size of xXy
    • NEW: added \~{} , \^{}, \`{}, ... instructions
    • NEW: added support for flushleft/flushright/center-environments with linebreaks
    • NEW: added support for framed/shaded/snugshade-environments with linebreaks and framed
    • NEW: added support for – and — for en- and em-dashes
    • NEW: added support for \char"HEX , \char\'OCTAL and \charDECIMAL for inserting any uicode character code
    • NEW: added support for \bigl,\bigr,\Bigr,... commands for fixed-size but enlarged paramtheses
    • NEW: added support for \begin{verbatim}...\end{verbatim}, \begin{verbatim*}...\end{verbatim*}
    • NEW: added command line tool Tool (JKQTMathText): Command-Line Utility jkqtmathtext_render that renders LaTeX into images, using it to generate the documentation images for JKQTMathText
    • NEW: added environment-modifying commands for font sizes: \tiny ... \normalsize ... \Huge
    • NEW: added environment-modifying commands for text color: {\color{COL}...}
    • NEW: added environment-modifying commands for text formatting: {\bfseries...}, {\itshape...}, {\bf...}, {\it...}, {\sffamily...}, {\ttfamily...}, ...
    • NEW: Added the Fira Math fonts as sans-serif symbol font to the library (as a ressource) and added JKQTMathText::useFiraMath()
    • NEW: Added JKQTMathText::useGuiFonts()
    • NEW: Added JKQTMathText::setFontOptions(), which allows to make fonts initially e.g. bold, italic, ... and extended JKQTMathText::setFontSpecial() accordingly
  • JKQTPCommon:
    • NEW: iadded variant of jkqtp_bounded<T>(TIn v), which limits to the limits of a type T and can cope with cases where TIn is signed, but T is unsigned
  • JKQTFastPloter:
    • BREAKING: This class/library is now deprecated and will be removed in future versions!

trunk: Download

This release is available from

V4.0.0: Qt6 compatibility & diverse improvements + bugfixes

V4.0.0: Overview

Changes, compared to v2019.11 include:

V4.0.0: Download

This release is available from

v2019.11: Major rework of the library

Starting in summer 2018, JKQTPlotter received some major workover. During this, it lost compatibility to the QuickFit 3.0 code base.

v2019.11: Overview

Changes, compared to v2018.08 include:

v2019.11: Download

This release is available from

v2018.08: Minor Modifications (Final QuickFit3-compatible Version)

v2018.08: Overview

This is the final version of JKQTPlotter, which is still compatible with the QuickFit 3.0 code base. It contains minor changes as compared to v2015.10

  • new: added Qt data model to switch graphs on/off
  • update: some improvements to test programs

v2018.08: Download

This release is available from

v2015.10: Initial Release

v2015.10: Overview

This is the initial release of the library. It was developed initially as part of QuickFit 3.0 and then separated out into a separate repository.

v2015.10: Download

This release is available from