diff --git a/Doxyfile b/Doxyfile index 8e9a80e8a9..e5d7a3aa0d 100644 --- a/Doxyfile +++ b/Doxyfile @@ -2321,7 +2321,7 @@ INCLUDE_FILE_PATTERNS = # recursively expanded use the := operator instead of the = operator. # This tag requires that the tag ENABLE_PREPROCESSING is set to YES. -PREDEFINED = +PREDEFINED = DOXYGEN # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this # tag can be used to specify a list of macro names that should be expanded. The @@ -2432,7 +2432,7 @@ DOT_NUM_THREADS = 0 # The default value is: Helvetica. # This tag requires that the tag HAVE_DOT is set to YES. -DOT_FONTNAME = FreeSans +DOT_FONTNAME = Helvetica # The DOT_FONTSIZE tag can be used to set the size (in points) of the font of # dot graphs. @@ -2629,7 +2629,10 @@ DOT_PATH = # command). # This tag requires that the tag HAVE_DOT is set to YES. -DOTFILE_DIRS = doc/dot/ +DOTFILE_DIRS = doc/dot/ \ + ./doc/dot/ \ + doc/dot \ + ./doc/dot # The MSCFILE_DIRS tag can be used to specify one or more directories that # contain msc files that are included in the documentation (see the \mscfile diff --git a/doc/dox/examples_and_tutorials.dox b/doc/dox/examples_and_tutorials.dox index 53a437b7a7..f165d667cd 100644 --- a/doc/dox/examples_and_tutorials.dox +++ b/doc/dox/examples_and_tutorials.dox @@ -226,10 +226,10 @@ All test-projects are Qt-projects that use qmake to build. You can load them int
Screenshot Description Notes -
\image html jkqtmathtext/jkqtmathtext_simpletest_small.png +
\image html jkqtmathtext_simpletest_small.png \subpage JKQTMathTextSimpleExample JKQTMathText
render LaTeX markup (Schrödinger's equation) -
\image html jkqtmathtext/jkqtmathtext_testapp_small.png +
\image html jkqtmathtext_testapp_small.png \subpage JKQTMathTextTestApp JKQTMathText
render LaTeX markup
\image html jkqtfastplotter_test_small.png @@ -242,7 +242,7 @@ All test-projects are Qt-projects that use qmake to build. You can load them int
Screenshot Description Notes -
\image html jkqtmathtext/jkqtmathtext_simpletest_small.png +
\image html jkqtplotter_cmakelink_small.png \subpage JKQTCMakeLinkExample explains how to link against JKQTPlotter with CMake
diff --git a/doc/dox/jkqtcommon.dox b/doc/dox/jkqtcommon.dox index 995f3b3f27..c8625ca383 100644 --- a/doc/dox/jkqtcommon.dox +++ b/doc/dox/jkqtcommon.dox @@ -5,6 +5,9 @@ This summarizes all functions from JKQTCommon-library, which provides basic (Qt-bound) tools for all other libs in the package JKQtPlotter (i.e. also JKQtFastPlotter and JKQtMathText). +\defgroup jkqtptools_general General Functions & Tools +\ingroup jkqtptools_jkqtcommon + \defgroup jkqtptools_math_basic Mathematical Functions & Tools \ingroup jkqtptools_jkqtcommon @@ -12,17 +15,21 @@ This summarizes all functions from JKQTCommon-library, which provides basic (Qt- This group assembles a variety of mathematical tool functions that are used in different places. - -\defgroup jkqtptools_string String/String-Conversion Tool Functions +\defgroup jkqtptools_string String(-Conversion) Functions \ingroup jkqtptools_jkqtcommon Offers diverse function to convert different datatypes (e.g. double, int, diverse enums) to and from strings and for string manipulation. -\defgroup jkqtptools_qt Additional Tools for Qt +\defgroup jkqtptools_qt Tools around Qt's clasess \ingroup jkqtptools_jkqtcommon +\defgroup jkqtptools_icons Special QIcon generation +\ingroup jkqtptools_jkqtcommon -\defgroup jkqtptools_qtwidgets Additional Widgets for Qt +In many cases it makes sense to generate special QIcons to represent a certain property, enum entry, QBrush, QPen etc. +This group assembles functions that do exactly that. + +\defgroup jkqtptools_qtwidgets Additional Widgets for \ingroup jkqtptools_jkqtcommon \defgroup jkqtptools_drawing Drawing & Graphics Tools @@ -41,6 +48,9 @@ Functions that help during debugging (e.g. an assert function/macro). Classes and functions that help to structure the code (e.g. RAII constructs) +\defgroup jkqtptools_libfacilities Library Facilities for JKQTCommon +\ingroup jkqtptools_jkqtcommon + */ \ No newline at end of file diff --git a/doc/dox/jkqtcommon_statistics_and_math.dox b/doc/dox/jkqtcommon_statistics_and_math.dox index 48be3b2be3..ab67a04787 100644 --- a/doc/dox/jkqtcommon_statistics_and_math.dox +++ b/doc/dox/jkqtcommon_statistics_and_math.dox @@ -6,7 +6,7 @@ This summarizes all functions from JKQTCommonStatisticsAndMath-library, which provides special and advanced math and statistics tools, mostly used by JKQtPlotter. -\defgroup jkqtptools_algorithms Diverse Algorithms +\defgroup jkqtptools_algorithms General Algorithms (Sorting ...) \ingroup jkqtcommon_statistics_and_math \defgroup jkqtptools_math_parser Parser/Evaluator for Mathematical Expressions @@ -17,13 +17,13 @@ In the context of the sequencer program this is a tool class that can be used by in the project. E.g. used by JKQTPXParsedFunctionLineGraph, JKQTPYParsedFunctionLineGraph -\defgroup jkmpultil JKQTPMathParser: Utilities +\defgroup jkqtptools_math_parser_utils JKQTPMathParser: Utilities \ingroup jkqtptools_math_parser -\defgroup jkmpNodes JKQTPMathParser: Memory Representation of Expressions +\defgroup jkqtptools_math_parser_Nodes JKQTPMathParser: Memory Representation of Expressions \ingroup jkqtptools_math_parser -\defgroup jkmpErrorhandling JKQTPMathParser Error Handling +\defgroup jkqtptools_math_parser_Errorhandling JKQTPMathParser Error Handling \ingroup jkqtptools_math_parser \defgroup jkqtptools_math_array Data Array Tools @@ -105,4 +105,10 @@ All statistics functions use all values in the given range and convert each valu \defgroup jkqtptools_math_statistics_adaptors Statistics To Plot Adaptors \ingroup jkqtptools_math_statistics + + +\defgroup jkqtcommon_statistics_and_math_libfacilities Library Facilities for JKQTCommonStatisticsAndMath +\ingroup jkqtcommon_statistics_and_math + + */ \ No newline at end of file diff --git a/doc/dox/jkqtfastplotter.dox b/doc/dox/jkqtfastplotter.dox index e2e0416d0f..80a5405410 100644 --- a/doc/dox/jkqtfastplotter.dox +++ b/doc/dox/jkqtfastplotter.dox @@ -6,6 +6,16 @@ output quality. It lacks several of the advanced features of JKQTPlotter, but can be used in cases, where fast update of plots or real-time plotting is required. - An example for the usage of this class can be found here: \subpage JKQTFastPlotterTest + An example for the usage of this class can be found here: \ref JKQTFastPlotterTest + + \image html jkqtfastplotter_test.png + + + + \defgroup jkqtfastplotter_PlotItems Plot Elements available in JKQTFastPlotter + \ingroup jkqtfastplotter + + \defgroup jkqtfastplotter_tools Tool Functions, Enums, Classes for JKQTFastPlotter + \ingroup jkqtfastplotter */ \ No newline at end of file diff --git a/doc/dox/jkqtmathtext.dox b/doc/dox/jkqtmathtext.dox index 434e683450..11f03504fc 100644 --- a/doc/dox/jkqtmathtext.dox +++ b/doc/dox/jkqtmathtext.dox @@ -13,17 +13,21 @@ . - \defgroup jkqtmathtext_render JKQTMathText Main (Render) Class + \defgroup jkqtmathtext_render Main (Render) Class (JKQTMathText) \ingroup jkqtmathtext - \defgroup jkqtmathtext_items JKQTMathText Render-Tree Items + \defgroup jkqtmathtext_items Render-Tree Items for JKQTMathText \ingroup jkqtmathtext - \defgroup jkqtmathtext_widgets JKQTMathText widgets + \defgroup jkqtmathtext_widgets Widgets using JKQTMathText \ingroup jkqtmathtext - \defgroup jkqtmathtext_tools JKQTMathText Tool Functions and Types + \defgroup jkqtmathtext_tools Tool Functions and Types for JKQTMathText \ingroup jkqtmathtext + + \defgroup jkqtmathtext_libfacilities Library Facilities for JKQTMathText + \ingroup jkqtmathtext + */ \ No newline at end of file diff --git a/doc/dox/jkqtplotter.dox b/doc/dox/jkqtplotter.dox index 54efa3244b..57d613dd30 100644 --- a/doc/dox/jkqtplotter.dox +++ b/doc/dox/jkqtplotter.dox @@ -113,7 +113,139 @@ These are used to e.g. add color-scales to the side of the graph: Usually if writing a new graph, one would not directly derive from JKQTPPlotElement, but from a cass in it's hirarchy of children. These children already provide certain facilities for certain types of graphs. -\dotfile jkqtplotter_graphhirarchy.gv +\dot +digraph +{ + // LATEX_PDF_SIZE + bgcolor="transparent"; + edge [fontname="FreeSans",fontsize="12",labelfontname="FreeSans",labelfontsize="12"]; + node [fontname="FreeSans",fontsize="12",shape=record]; + rankdir="LR"; + + { + rank=same; + JKQTPPlotElement [URL="\link JKQTPPlotElement"]; + noteJKQTPPlotElement [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nelements drawn\nonto a plot"]; + JKQTPPlotElement -> noteJKQTPPlotElement [style=dashed,arrowhead=none]; + } + + { + rank=same; + JKQTPGraph [URL="\link JKQTPPlotElement"]; + noteJKQTPGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nactual graphs"]; + JKQTPGraph -> noteJKQTPGraph [style=dashed,arrowhead=none]; + + JKQTPGeometricPlotElement [URL="\link JKQTPGeometricPlotElement"]; + noteJKQTPGeometricPlotElement [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nnon-graph elements,\ne.g. geometric elements"]; + JKQTPGeometricPlotElement -> noteJKQTPGeometricPlotElement [style=dashed,arrowhead=none]; + + JKQTPPlotAnnotationElement [URL="\link JKQTPPlotAnnotationElement"]; + noteJKQTPPlotAnnotationElement [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraph annotation elements,\ne.g. text, symbols, ranges ..."]; + JKQTPPlotAnnotationElement -> noteJKQTPPlotAnnotationElement [style=dashed,arrowhead=none]; + } + + + { + rank=same; + + JKQTPXYGraph [URL="\link JKQTPXYGraph"] + noteJKQTPXYGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on\n (x,y) data pairs"]; + JKQTPXYGraph -> noteJKQTPXYGraph [style=dashed,arrowhead=none]; + + JKQTPSingleColumnGraph [URL="\link JKQTPSingleColumnGraph"] + noteJKQTPSingleColumnGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on only\n a single column of data"]; + JKQTPSingleColumnGraph -> noteJKQTPSingleColumnGraph [style=dashed,arrowhead=none]; + + JKQTPImageBase [URL="\link JKQTPImageBase"] + noteJKQTPImageBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs that represent \n2D images/matrices"]; + JKQTPImageBase -> noteJKQTPImageBase [style=dashed,arrowhead=none]; + } + + { + rank=same; + + JKQTPXYYGraph [URL="\link JKQTPXYYGraph"] + noteJKQTPXYYGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on\n (x, y1, y2) data tripels"]; + JKQTPXYYGraph -> noteJKQTPXYYGraph [style=dashed,arrowhead=none]; + + JKQTPXXYGraph [URL="\link JKQTPXXYGraph"] + noteJKQTPXXYGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on\n (x1, x2, y) data tripels"]; + JKQTPXXYGraph -> noteJKQTPXXYGraph [style=dashed,arrowhead=none]; + + JKQTPXYBaselineGraph [URL="\link JKQTPXYBaselineGraph"] + noteJJKQTPXYBaselineGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on\n (x,y) data pairs and a baseline"]; + JKQTPXYBaselineGraph -> noteJJKQTPXYBaselineGraph [style=dashed,arrowhead=none]; + + JKQTPEvaluatedFunctionGraphBase [URL="\link JKQTPEvaluatedFunctionGraphBase"] + noteJKQTPEvaluatedFunctionGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs that represent \ndynamically evaluated functions"]; + JKQTPEvaluatedFunctionGraphBase -> noteJKQTPEvaluatedFunctionGraphBase [style=dashed,arrowhead=none]; + + JKQTPMathImageBase [URL="\link JKQTPMathImageBase"] + noteJKQTPMathImageBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ndata-based images"]; + JKQTPMathImageBase -> noteJKQTPMathImageBase [style=dashed,arrowhead=none]; + } + + { + rank=same; + + JKQTPBarGraphBase [URL="\link JKQTPBarGraphBase"] + noteJKQTPBarGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nbarcharts"]; + JKQTPBarGraphBase -> noteJKQTPBarGraphBase [style=dashed,arrowhead=none]; + + JKQTPFilledCurveGraphBase [URL="\link JKQTPFilledCurveGraphBase"] + noteJKQTPFilledCurveGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nfilled graphs"]; + JKQTPFilledCurveGraphBase -> noteJKQTPFilledCurveGraphBase [style=dashed,arrowhead=none]; + + JKQTPImpulsesGraphBase [URL="\link JKQTPImpulsesGraphBase"] + noteJKQTPImpulsesGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nimpulse graphs"]; + JKQTPImpulsesGraphBase -> noteJKQTPImpulsesGraphBase [style=dashed,arrowhead=none]; + + JKQTPSpecialLineGraphBase [URL="\link JKQTPSpecialLineGraphBase"] + noteJKQTPSpecialLineGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nspecial line graphs"]; + JKQTPSpecialLineGraphBase -> noteJKQTPSpecialLineGraphBase [style=dashed,arrowhead=none]; + + JKQTPBoxplotGraphBase [URL="\link JKQTPBoxplotGraphBase"] + noteJKQTPBoxplotGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs that represent \na set of boxplots"]; + JKQTPBoxplotGraphBase -> noteJKQTPBoxplotGraphBase [style=dashed,arrowhead=none]; + + JKQTPRangeBase [URL="\link JKQTPRangeBase"]; + noteJKQTPRangeBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nrange annotations"]; + JKQTPRangeBase -> noteJKQTPRangeBase [style=dashed,arrowhead=none]; + + JKQTPBoxplotElementBase [URL="\link JKQTPBoxplotElementBase"] + noteJKQTPBoxplotElementBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs that represent \na single boxplot"]; + JKQTPBoxplotElementBase -> noteJKQTPBoxplotElementBase [style=dashed,arrowhead=none]; + + JKQTPViolinplotElementBase [URL="\link JKQTPViolinplotElementBase"] + noteJKQTPViolinplotElementBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs that represent \na single violin plot"]; + JKQTPViolinplotElementBase -> noteJKQTPViolinplotElementBase [style=dashed,arrowhead=none]; + } + + JKQTPPlotElement -> JKQTPGraph + JKQTPPlotElement -> JKQTPGeometricPlotElement + JKQTPPlotElement -> JKQTPPlotAnnotationElement + JKQTPPlotElement -> JKQTPRangeBase + JKQTPPlotElement -> JKQTPBoxplotElementBase + JKQTPPlotElement -> JKQTPViolinplotElementBase + + JKQTPGraph -> JKQTPXYGraph + JKQTPGraph -> JKQTPSingleColumnGraph + JKQTPGraph -> JKQTPImageBase -> JKQTPMathImageBase + JKQTPGraph -> JKQTPEvaluatedFunctionGraphBase + JKQTPGraph -> JKQTPBoxplotGraphBase + + JKQTPXYGraph -> JKQTPXYYGraph + JKQTPXYGraph -> JKQTPXXYGraph + JKQTPXYGraph -> JKQTPXYBaselineGraph + + JKQTPXYBaselineGraph -> JKQTPBarGraphBase + JKQTPXYBaselineGraph -> JKQTPFilledCurveGraphBase + JKQTPXYBaselineGraph -> JKQTPImpulsesGraphBase + JKQTPXYBaselineGraph -> JKQTPSpecialLineGraphBase + +} + +\enddot \subsection jkqtplotter_graphsgroup_classstructure_mixins Mix-In Classes for Graphs diff --git a/doc/dox/mainpage.dox b/doc/dox/mainpage.dox index d32ea51586..cb0e3acf48 100644 --- a/doc/dox/mainpage.dox +++ b/doc/dox/mainpage.dox @@ -36,7 +36,7 @@ - \ref jkqtplotter_filledgraphs "filled curves" - \ref jkqtplotter_barssticks "barcharts (also stacked)" - extensive support for different styles of error indicators - - \ref jkmp "integrated mathematical function parser for function plots (with intelligent rendering algorithm)" + - \ref jkqtptools_math_parser "integrated mathematical function parser for function plots (with intelligent rendering algorithm)" - \ref jkqtplotter_functiongraphs "line/scatter graphs can also be based on C/C++ functions instead of data series (C++11 support!)" - \ref jkqtplotter_statgraphs "statistical plots (e.g. boxplots)" - \ref jkqtplotter_imagelots_elements "extensive library of image plots" (inclusing different color-scale modes, RGBA-plots, overlays/masks) diff --git a/doc/dox/todo.dox b/doc/dox/todo.dox index 0dcce5e4f6..0c4bccf112 100644 --- a/doc/dox/todo.dox +++ b/doc/dox/todo.dox @@ -24,6 +24,7 @@ This page lists several todos and wishes for future version of JKQTPlotter
  • graphic elements: annotation graphic element with text positionable like legend, or with (0..1),(0..1)-coordinates within plot
  • graphic elements: cubic/bezier curves for graphic elements
  • data management: allow for other datatypes than double, would be good to have, double, float, ints, bool, string ... as for images
  • +
  • data management: binding for the Eigen library
  • user interactions: support for touch/pad gestures
  • graphic elements: make coordinate systems selectable for all: x/y-axis, 0..1/0..1, topleft/topright...
  • plot: reqork layouting of legends: there are some inconsistencies/too large gaps ...
  • @@ -38,15 +39,15 @@ This page lists several todos and wishes for future version of JKQTPlotter
  • JKQTMathText:
      -
    • add instruction for unicode-characters \charDDDD, \char"XXXX, \unicode{XXXX}, \utf8{XXXX}, \utf16{XXXX}, \utf32{XXXX} ...
    • +
    • add instruction for unicode-characters \\charDDDD, \\char"XXXX, \\unicode{XXXX}, \\utf8{XXXX}, \\utf16{XXXX}, \\utf32{XXXX} ...
    • check sub/superscript with italic text in math mode, possibly a correction is necessary
    • explore where QFontMetricsF::horizontalAdvance() can be used (for Qt >=5.15)
    • -
    • add support for \bigl,\bigr,\Bigr,... commands for fixed-size but large paramtheses
    • -
    • explore options to make font-environment-modifying commands avails, like "{blacktext\color{red}redtext}", today only commands like "\textcolor{red}{redtext}" work
    • +
    • add support for \\bigl,\\bigr,\\Bigr,... commands for fixed-size but large paramtheses
    • +
    • explore options to make font-environment-modifying commands avails, like "{blacktext\\color{red}redtext}", today only commands like "\\textcolor{red}{redtext}" work
    • maybe: add support for text with linebreaks by adding a JKQTMathTextVerticalListNode in addition to JKQTMathTextListNode
    • maybe: add tool programs to auto-generate some example images
    • -
    • add support for \substack command below \sum etc.
    • -
    • improve support for array-environment with limited support for formatting string like l|r|c and maybe add support for \hline command, possibly also \cellcolor etz.
    • +
    • add support for \\substack command below \\sum etc.
    • +
    • improve support for array-environment with limited support for formatting string like l|r|c and maybe add support for \\hline command, possibly also \\cellcolor etz.
  • diff --git a/doc/dox/whatsnew.dox b/doc/dox/whatsnew.dox index 9ffe17e9e8..f23ddec218 100644 --- a/doc/dox/whatsnew.dox +++ b/doc/dox/whatsnew.dox @@ -19,7 +19,7 @@ Changes, compared to \ref page_whatsnew_V4_0_0 "v4.0.0" include:
  • NEW: Using precompiled headers in CMake-build to speed up build times
  • NEW/BREAKING: split jkqtcommon into basic tools and jkqtcommon_statistics_and_math for advanced math tools not used by all libs
  • -
  • 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/IMPROVED: JKQTMathText renders several LaTeX strings better (simple braces in math mode, \c +-*... 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: \c \\sum and \c \\prod used the wrong symbol in XITS-mode
    • 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
    • @@ -47,12 +47,12 @@ Changes, compared to \ref page_whatsnew_V4_0_0 "v4.0.0" include:
    • 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: tokenizing and parsing of text in text-mode: now a lot of accents with commands like \c \\\"a, \c \\'e and variants (e.g. \c {\\\"a}, \c \\\"{a}, ...) are supported now
    • 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
    • -
    • NEW: now supports new decoration instructions: \cancel, \xcancel, \bcancel, \sout, \ocirc, \widetilde, \widehat, \breve
    • +
    • REMOVED/breaking: \c \\v[a-zA-Z] and shorthand for \c \\vec{a-zA-Z} was removed, implementation of \c \\bbR,\c \\bbC,... changed
    • +
    • NEW: now supports new decoration instructions: \c \\cancel, \c \\xcancel, \c \\bcancel, \c \\sout, \c \\ocirc, \c \\widetilde, \c \\widehat, \c \\breve
    • NEW: reworked drawing of decorations: improved appearance and positioning!
    • 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!
    • @@ -60,13 +60,13 @@ Changes, compared to \ref page_whatsnew_V4_0_0 "v4.0.0" include:
    • 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: \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 \acute{X}, \grave{X}, \acute{X}
    • +
    • NEW: \c \\limits and \c \\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 (\c \\ulcorner/\c \\urcorner ) and bottom-corner brackets (\c \\llcorner/\c \\lrcorner )
    • +
    • NEW: added \c \\overbracket and \c \\underbracket
    • +
    • NEW: added \c \\shaded{color}{...}
    • +
    • NEW: added \c \\acute{X}, \c \\grave{X}, \c \\acute{X}
    • 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
    • -
    +
  • \subsection page_whatsnew_TRUNK_DOWNLOAD trunk: Download @@ -123,7 +123,7 @@ Changes, compared to \ref page_whatsnew_V2019_11 "v2019.11" include:
  • 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 ( \f$ [x,y] = f(t) \f$ ), see \ref JKQTPlotterEvalCurves for an example
  • +
  • new: a new graph class JKQTPXYFunctionLineGraph draws parametric 2D curves ( \\f$ [x,y] = f(t) \\f$ ), 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
  • @@ -159,7 +159,7 @@ Changes, compared to \ref page_whatsnew_V2018_08 "v2018.08" include:
    • 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. \c std::function<> and lambda functions in JKQTPXFunctionLineGraph / JKQTPYFunctionLineGraph )
    • +
    • new: use/support of C++11 features (e.g. \\c std::function<> and lambda functions in JKQTPXFunctionLineGraph / JKQTPYFunctionLineGraph )
    • new: \ref jkqtpinterfaceopencv "optional OpenCV interface"
    • new: \ref jkqtpinterfacecimg "optional CImg interface"
    • new: \ref jkqtpplotter_styling "Styling System for JKQTPlotter"
    • @@ -167,32 +167,32 @@ Changes, compared to \ref page_whatsnew_V2018_08 "v2018.08" include:
    • 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: \ref JKQTPlotterBoxplotStyling
    • -
    • new: notched boxplots, see: \ref JKQTPlotterBoxplotStyling
    • -
    • new: several new plot symbols, see: JKQTPGraphSymbols
    • -
    • new: Statistics library with functions to calculate histograms, regression, kernel density estimates, ... see: \ref jkqtptools_math_statistics
    • -
    • new: iterator interface and improved documentation for JKQTPDatastore
    • -
    • new: violin plots (see \ref JKQTPlotterViolinplotGraphs )
    • -
    • 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: \ref JKQTPLOTTER_USERINTERACTION "reworked user interactions API"
    • -
    • update: \ref jkqtplotter_basegraphserrors "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 \ref JKQTPlotterContourPlot
    • +
    • 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: \ref JKQTPlotterBoxplotStyling
    • +
    • new: notched boxplots, see: \ref JKQTPlotterBoxplotStyling
    • +
    • new: several new plot symbols, see: JKQTPGraphSymbols
    • +
    • new: Statistics library with functions to calculate histograms, regression, kernel density estimates, ... see: \ref jkqtptools_math_statistics
    • +
    • new: iterator interface and improved documentation for JKQTPDatastore
    • +
    • new: violin plots (see \ref JKQTPlotterViolinplotGraphs )
    • +
    • 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: \ref JKQTPLOTTER_USERINTERACTION "reworked user interactions API"
    • +
    • update: \ref jkqtplotter_basegraphserrors "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 \ref JKQTPlotterContourPlot
    • 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: 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
    • diff --git a/doc/images/jkqtmathtext/jkqtmathparser_OldEnglish.png b/doc/images/jkqtmathtext/jkqtmathtext_OldEnglish.png similarity index 100% rename from doc/images/jkqtmathtext/jkqtmathparser_OldEnglish.png rename to doc/images/jkqtmathtext/jkqtmathtext_OldEnglish.png diff --git a/doc/images/jkqtmathtext/jkqtmathparser_arial.png b/doc/images/jkqtmathtext/jkqtmathtext_arial.png similarity index 100% rename from doc/images/jkqtmathtext/jkqtmathparser_arial.png rename to doc/images/jkqtmathtext/jkqtmathtext_arial.png diff --git a/doc/images/jkqtmathtext/jkqtmathparser_asana.png b/doc/images/jkqtmathtext/jkqtmathtext_asana.png similarity index 100% rename from doc/images/jkqtmathtext/jkqtmathparser_asana.png rename to doc/images/jkqtmathtext/jkqtmathtext_asana.png diff --git a/doc/images/jkqtmathtext/jkqtmathparser_comicsans.png b/doc/images/jkqtmathtext/jkqtmathtext_comicsans.png similarity index 100% rename from doc/images/jkqtmathtext/jkqtmathparser_comicsans.png rename to doc/images/jkqtmathtext/jkqtmathtext_comicsans.png diff --git a/doc/images/jkqtmathtext/jkqtmathparser_comicsans_textonly.png b/doc/images/jkqtmathtext/jkqtmathtext_comicsans_textonly.png similarity index 100% rename from doc/images/jkqtmathtext/jkqtmathparser_comicsans_textonly.png rename to doc/images/jkqtmathtext/jkqtmathtext_comicsans_textonly.png diff --git a/doc/images/jkqtmathtext/jkqtmathparser_couriernew.png b/doc/images/jkqtmathtext/jkqtmathtext_couriernew.png similarity index 100% rename from doc/images/jkqtmathtext/jkqtmathparser_couriernew.png rename to doc/images/jkqtmathtext/jkqtmathtext_couriernew.png diff --git a/doc/images/jkqtmathtext/jkqtmathparser_frac_factor.png b/doc/images/jkqtmathtext/jkqtmathtext_frac_factor.png similarity index 100% rename from doc/images/jkqtmathtext/jkqtmathparser_frac_factor.png rename to doc/images/jkqtmathtext/jkqtmathtext_frac_factor.png diff --git a/doc/images/jkqtmathtext/jkqtmathparser_mathoperator_width_factor.png b/doc/images/jkqtmathtext/jkqtmathtext_mathoperator_width_factor.png similarity index 100% rename from doc/images/jkqtmathtext/jkqtmathparser_mathoperator_width_factor.png rename to doc/images/jkqtmathtext/jkqtmathtext_mathoperator_width_factor.png diff --git a/doc/images/jkqtmathtext/jkqtmathparser_stix.png b/doc/images/jkqtmathtext/jkqtmathtext_stix.png similarity index 100% rename from doc/images/jkqtmathtext/jkqtmathparser_stix.png rename to doc/images/jkqtmathtext/jkqtmathtext_stix.png diff --git a/doc/images/jkqtmathtext/jkqtmathparser_timesnewroman.png b/doc/images/jkqtmathtext/jkqtmathtext_timesnewroman.png similarity index 100% rename from doc/images/jkqtmathtext/jkqtmathparser_timesnewroman.png rename to doc/images/jkqtmathtext/jkqtmathtext_timesnewroman.png diff --git a/doc/images/jkqtmathtext/jkqtmathparser_xits.png b/doc/images/jkqtmathtext/jkqtmathtext_xits.png similarity index 100% rename from doc/images/jkqtmathtext/jkqtmathparser_xits.png rename to doc/images/jkqtmathtext/jkqtmathtext_xits.png diff --git a/doc/images/jkqtmathtext/jkqtmathparser_xits_all.png b/doc/images/jkqtmathtext/jkqtmathtext_xits_all.png similarity index 100% rename from doc/images/jkqtmathtext/jkqtmathparser_xits_all.png rename to doc/images/jkqtmathtext/jkqtmathtext_xits_all.png diff --git a/examples/README.md b/examples/README.md index be143e66b2..80e11880d3 100644 --- a/examples/README.md +++ b/examples/README.md @@ -107,4 +107,4 @@ All test-projects are Qt-projects that use qmake to build. You can load them int | Screenshot | Description | Notes | |:-------------:| ------------- | ------------- | -| [![](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/jkqtplotter_simpletest1_small.png)](https://github.com/jkriege2/JKQtPlotter/tree/master/examples/simpletest/README.md) | [CMake Example Linking Against JKQTPlotter](https://github.com/jkriege2/JKQtPlotter/tree/master/examples/cmake_link_example) | explains how to link against JKQTPlotter with CMake | +| [![](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/jkqtplotter_cmakelink_small.png)](https://github.com/jkriege2/JKQtPlotter/tree/master/examples/cmake_link_example/README.md) | [CMake Example Linking Against JKQTPlotter](https://github.com/jkriege2/JKQtPlotter/tree/master/examples/cmake_link_example) | explains how to link against JKQTPlotter with CMake | diff --git a/lib/jkqtcommon/jkqtcommon_imexport.h b/lib/jkqtcommon/jkqtcommon_imexport.h index 088df74b54..efc5e6baf5 100644 --- a/lib/jkqtcommon/jkqtcommon_imexport.h +++ b/lib/jkqtcommon/jkqtcommon_imexport.h @@ -24,7 +24,7 @@ /*! \def JKQTCOMMON_LIB_EXPORT - \ingroup tools + \ingroup jkqtptools_libfacilities This define allows to export functions and classes from the jkqtcommon-library when building a dynamic/shared library. Usage is as follows: @@ -56,16 +56,24 @@ */ +// necessary to add this define to the Doxygen autodoc!!! +#ifdef DOXYGEN +# define JKQTCOMMON_LIB_IN_DLL +#endif /*! \def JKQTCOMMON_LIB_IN_DLL - \ingroup tools + \ingroup jkqtptools_libfacilities \brief declares that the application should link against a shared version of JKQTCommon, i.e. \c JKQTCommonSharedLib_XYZ . This needs to be defined while compiling the library and while compiling any application linking against \c JKQTCommonSharedLib_XYZ. */ -/*! \def JKQTCOMMON_LIB_EXPORT_LIBRARY - \ingroup tools +// necessary to add this define to the Doxygen autodoc!!! +#ifdef DOXYGEN +# define JKQTCOMMON_LIB_EXPORT_LIBRARY +#endif +/*! \def JKQTCOMMON_LIB_EXPORT_LIBRARY + \ingroup jkqtptools_libfacilities \brief is only defined while compiling JKQTCommon into \c JKQTCommonSharedLib_XYZ and ensures thet the symbols are exported. If it is not defined (e.g. while compiling an application), the symbols are imported diff --git a/lib/jkqtcommon/jkqtpbasicimagetools.h b/lib/jkqtcommon/jkqtpbasicimagetools.h index 743505c828..9641117be5 100644 --- a/lib/jkqtcommon/jkqtpbasicimagetools.h +++ b/lib/jkqtcommon/jkqtpbasicimagetools.h @@ -198,25 +198,21 @@ enum JKQTPMathImageColorRangeFailAction { /*! \brief tool structure that summarizes several static properties of JKQTPlotters palette system, also provides functions to work with palettes and register user-defined palettes. - \ingroup jkqtptools_qt + \ingroup jkqtplotter_imagelots_tools \see \ref JKQTPlotterImagePlot */ struct JKQTPImageTools { - /*! \brief Datatype to store lookup-tables used to map data values (scales to 0..size-1) onto RGB-colors - \ingroup jkqtptools_qt */ + /*! \brief Datatype to store lookup-tables used to map data values (scales to 0..size-1) onto RGB-colors */ typedef QVector LUTType; - /*! \brief Width of the Palette-Icons, generated e.g. by JKQTPImageTools::GetPaletteIcon() - \ingroup jkqtptools_qt */ + /*! \brief Width of the Palette-Icons, generated e.g. by JKQTPImageTools::GetPaletteIcon() */ static JKQTCOMMON_LIB_EXPORT const int PALETTE_ICON_WIDTH; - /*! \brief Height of the Palette-Icons, generated e.g. by JKQTPImageTools::GetPaletteIcon() - \ingroup jkqtptools_qt */ + /*! \brief Height of the Palette-Icons, generated e.g. by JKQTPImageTools::GetPaletteIcon() */ static JKQTCOMMON_LIB_EXPORT const int PALETTE_IMAGEICON_HEIGHT; - /*! \brief size of the lookup tables used by JKQTFPimagePlot_array2image() - */ + /*! \brief size of the lookup tables used by JKQTFPimagePlot_array2image() */ static JKQTCOMMON_LIB_EXPORT const int LUTSIZE; /*! \brief loads all palettes defined in the given palette files \a filename into global_jkqtpimagetools_userluts diff --git a/lib/jkqtcommon/jkqtpicons.h b/lib/jkqtcommon/jkqtpicons.h index 7dadf0fbfb..1fb53cd538 100644 --- a/lib/jkqtcommon/jkqtpicons.h +++ b/lib/jkqtcommon/jkqtpicons.h @@ -32,28 +32,28 @@ #include "jkqtcommon/jkqtpdrawingtools.h" /** \brief make a QIcon representing a QColor - * \ingroup tools + * \ingroup jkqtptools_icons */ JKQTCOMMON_LIB_EXPORT QIcon jkqtp_makeQColorIcon(QColor style); /** \brief make a QIcon representing a Qt::BrushStyle - * \ingroup tools + * \ingroup jkqtptools_icons */ JKQTCOMMON_LIB_EXPORT QIcon jkqtp_makeQBrushStyleIcon(Qt::BrushStyle style); /** \brief make a QIcon representing a Qt::PenStyle - * \ingroup tools + * \ingroup jkqtptools_icons */ JKQTCOMMON_LIB_EXPORT QIcon jkqtp_makeQPenStyleIcon(Qt::PenStyle style); /** \brief make a QIcon representing a JKQTPLineDecoratorStyle - * \ingroup tools + * \ingroup jkqtptools_icons */ JKQTCOMMON_LIB_EXPORT QIcon JKQTPLineDecoratorStyle2Icon(JKQTPLineDecoratorStyle style); /** \brief make a QIcon representing a JKQTPGraphSymbols - * \ingroup tools + * \ingroup jkqtptools_icons */ JKQTCOMMON_LIB_EXPORT QIcon JKQTPGraphSymbols2Icon(JKQTPGraphSymbols style); diff --git a/lib/jkqtcommon_statistics_and_math/jkqtcommon_statistics_and_math_imexport.h b/lib/jkqtcommon_statistics_and_math/jkqtcommon_statistics_and_math_imexport.h index 50b6558d09..ef5d6831b6 100644 --- a/lib/jkqtcommon_statistics_and_math/jkqtcommon_statistics_and_math_imexport.h +++ b/lib/jkqtcommon_statistics_and_math/jkqtcommon_statistics_and_math_imexport.h @@ -24,7 +24,7 @@ /*! \def JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT - \ingroup tools + \ingroup jkqtcommon_statistics_and_math_libfacilities This define allows to export functions and classes from the jkqtcommon_statistics_and_math-library when building a dynamic/shared library. Usage is as follows: @@ -56,16 +56,24 @@ */ -/*! \def JKQTCOMMON_STATISTICS_AND_MATH_LIB_IN_DLL - \ingroup tools +// necessary to add this define to the Doxygen autodoc!!! +#ifdef DOXYGEN +# define JKQTCOMMON_STATISTICS_AND_MATH_LIB_IN_DLL +#endif +/*! \def JKQTCOMMON_STATISTICS_AND_MATH_LIB_IN_DLL + \ingroup jkqtcommon_statistics_and_math_libfacilities \brief declares that the application should link against a shared version of JKQTCommonStatisticsAndMath, i.e. \c JKQTCommonStatisticsAndMathSharedLib_XYZ . This needs to be defined while compiling the library and while compiling any application linking against \c JKQTCommonStatisticsAndMathSharedLib_XYZ. */ -/*! \def JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT_LIBRARY - \ingroup tools +// necessary to add this define to the Doxygen autodoc!!! +#ifdef DOXYGEN +# define JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT_LIBRARY +#endif +/*! \def JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT_LIBRARY + \ingroup jkqtcommon_statistics_and_math_libfacilities \brief is only defined while compiling JKQTCommonStatisticsAndMath into \c JKQTCommonStatisticsAndMathSharedLib_XYZ and ensures thet the symbols are exported. If it is not defined (e.g. while compiling an application), the symbols are imported diff --git a/lib/jkqtcommon_statistics_and_math/jkqtpmathparser.h b/lib/jkqtcommon_statistics_and_math/jkqtpmathparser.h index 45cda573fe..51acdcdf35 100644 --- a/lib/jkqtcommon_statistics_and_math/jkqtpmathparser.h +++ b/lib/jkqtcommon_statistics_and_math/jkqtpmathparser.h @@ -222,7 +222,7 @@ class JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT JKQTPMathParser void* data; /** \brief the possible tokens that can be recognized by the tokenizer in JKQTPMathParser::getToken() - * \ingroup jkmpultil + * \ingroup jkqtptools_math_parser_utils */ enum jkmpTokenType { END, /*!< \brief end token */ @@ -260,7 +260,7 @@ class JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT JKQTPMathParser /** \brief internal names for logic operations - * \ingroup jkmpultil */ + * \ingroup jkqtptools_math_parser_utils */ enum { jkmpLOPand='a', jkmpLOPor='o', @@ -272,7 +272,7 @@ class JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT JKQTPMathParser /** \brief jkmpCOMPdefs internal names for compare operations - * \ingroup jkmpultil*/ + * \ingroup jkqtptools_math_parser_utils*/ enum { jkmpCOMPequal='=', jkmpCOMPnequal='!', @@ -286,7 +286,7 @@ class JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT JKQTPMathParser public: /** \brief possible result types - * \ingroup jkmpultil + * \ingroup jkqtptools_math_parser_utils */ enum jkmpResultType {jkmpDouble, /*!< \brief a floating-point number with double precision. This is also used to deal with integers */ jkmpString, /*!< \brief a string of characters */ @@ -295,7 +295,7 @@ class JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT JKQTPMathParser /** \brief result of any expression - * \ingroup jkmpultil*/ + * \ingroup jkqtptools_math_parser_utils*/ struct JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT jkmpResult { jkmpResult(); @@ -315,7 +315,7 @@ class JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT JKQTPMathParser /** \brief This struct is for managing variables. Unlike jkmpResult this struct * only contains pointers to the data - * \ingroup jkmpultil + * \ingroup jkqtptools_math_parser_utils */ struct JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT jkmpVariable { jkmpVariable(); @@ -327,7 +327,7 @@ class JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT JKQTPMathParser }; /** \brief This struct is for managing temporary variables. It is generally like jkmpVariable. - * \ingroup jkmpultil + * \ingroup jkqtptools_math_parser_utils */ struct JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT jkmpTempVariable { std::string name; /*!< \brief name of the variable */ @@ -379,7 +379,7 @@ class JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT JKQTPMathParser /** * \brief This class is the abstract base class for nodes. * All allowed node types must inherit from jkmpNode - * \ingroup jkmpNodes + * \ingroup jkqtptools_math_parser_Nodes */ class JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT jkmpNode { protected: @@ -409,7 +409,7 @@ class JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT JKQTPMathParser /** * \brief This class represents a binary arithmetic operation: * add (+), subtract (-), multiply (*), divide (/), a to the power of b (a^b) - * \ingroup jkmpNodes + * \ingroup jkqtptools_math_parser_Nodes */ class JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT jkmpBinaryArithmeticNode: public jkmpNode { private: @@ -434,7 +434,7 @@ class JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT JKQTPMathParser /** * \brief This class represents a binary boolean operation: and, or, xor, nor, nand - * \ingroup jkmpNodes + * \ingroup jkqtptools_math_parser_Nodes */ class JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT jkmpBinaryBoolNode: public jkmpNode { private: @@ -459,7 +459,7 @@ class JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT JKQTPMathParser /** * \brief This class represents a binary compare operation: !=, ==, >=, <=, >, < - * \ingroup jkmpNodes + * \ingroup jkqtptools_math_parser_Nodes */ class JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT jkmpCompareNode: public jkmpNode { private: @@ -484,7 +484,7 @@ class JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT JKQTPMathParser /** * \brief This class represents a unary operations: ! (bool negation), - (arithmetic negation) - * \ingroup jkmpNodes + * \ingroup jkqtptools_math_parser_Nodes */ class JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT jkmpUnaryNode: public jkmpNode { private: @@ -508,7 +508,7 @@ class JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT JKQTPMathParser /** * \brief This class represents a variable assignment (a = expression) - * \ingroup jkmpNodes + * \ingroup jkqtptools_math_parser_Nodes */ class JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT jkmpVariableAssignNode: public jkmpNode { private: @@ -533,7 +533,7 @@ class JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT JKQTPMathParser /** * \brief This class represents a number, a string contant or a boolean contant (true/false) - * \ingroup jkmpNodes + * \ingroup jkqtptools_math_parser_Nodes */ class JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT jkmpConstantNode: public jkmpNode { private: @@ -552,7 +552,7 @@ class JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT JKQTPMathParser /** * \brief This class represents a variable. - * \ingroup jkmpNodes + * \ingroup jkqtptools_math_parser_Nodes */ class JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT jkmpVariableNode: public jkmpNode { private: @@ -571,7 +571,7 @@ class JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT JKQTPMathParser /** * \brief This class represents an arbitrary function. - * \ingroup jkmpNodes + * \ingroup jkqtptools_math_parser_Nodes * * When initialized this class will get the function description that is * linked to the supplied function name from JKQTPMathParser object. This @@ -604,7 +604,7 @@ class JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT JKQTPMathParser /** * \brief This class represents a list of jkmpNode. - * \ingroup jkmpNodes + * \ingroup jkqtptools_math_parser_Nodes * * when evaluating the result will be the result of the last node in the list. */ @@ -640,7 +640,7 @@ class JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT JKQTPMathParser /** \brief error handling: exceptions of the type of this class will be thrown if an error occurs - * \ingroup jkmpErrorhandling + * \ingroup jkqtptools_math_parser_Errorhandling * * \attention If you do not want to use the exception handling which throws * jkmpException exceptions, but want to write your own error handling, you should write your own @@ -669,26 +669,26 @@ class JKQTCOMMON_STATISTICS_AND_MATH_LIB_EXPORT JKQTPMathParser }; /** \brief type for a custom error handler. This an alternative error handling - * \ingroup jkmpErrorhandling */ + * \ingroup jkqtptools_math_parser_Errorhandling */ typedef void (*jkmpexceptionf)(std::string); /** \brief function that throws an exception or calls an error handler - * \ingroup jkmpErrorhandling */ + * \ingroup jkqtptools_math_parser_Errorhandling */ void jkmpError(const std::string& st); private: /** \brief if this is nullptr then an exception may be thrown otherwise this should point to an error handler that will be called. - * \ingroup jkmpErrorhandling */ + * \ingroup jkqtptools_math_parser_Errorhandling */ jkmpexceptionf jkmathparser_exception_function; public: /** \brief activate error handling by use of an exception function - * \ingroup jkmpErrorhandling */ + * \ingroup jkqtptools_math_parser_Errorhandling */ void setException_function(jkmpexceptionf exception_function); /** \brief deactivate error handling by use of an exception function - * \ingroup jkmpErrorhandling */ + * \ingroup jkqtptools_math_parser_Errorhandling */ void resetException_function(); diff --git a/lib/jkqtfastplotter/jkqtfastplotter.cpp b/lib/jkqtfastplotter/jkqtfastplotter.cpp index 1d77294e7d..36195fba10 100644 --- a/lib/jkqtfastplotter/jkqtfastplotter.cpp +++ b/lib/jkqtfastplotter/jkqtfastplotter.cpp @@ -642,6 +642,30 @@ void JKQTFastPlotter::updateDataImmediate() { repaint(); } +void JKQTFastPlotter::setXMin(double value){ + setPlotUpdateEnabled(false); + setXRange(value,xMax,xAxisLog); + setPlotUpdateEnabled(true); +} + +void JKQTFastPlotter::setXMax(double value){ + setPlotUpdateEnabled(false); + setXRange(xMin,value,xAxisLog); + setPlotUpdateEnabled(true); +} + +void JKQTFastPlotter::setYMin(double value){ + setPlotUpdateEnabled(false); + setYRange(value,yMax,yAxisLog); + setPlotUpdateEnabled(true); +} + +void JKQTFastPlotter::setYMax(double value){ + setPlotUpdateEnabled(false); + setYRange(yMin,value,yAxisLog); + setPlotUpdateEnabled(true); +} + void JKQTFastPlotter::calcPlotScaling() { internalPlotBorderBottom=plotBorderBottom; internalPlotBorderTop=plotBorderTop; diff --git a/lib/jkqtfastplotter/jkqtfastplotter.h b/lib/jkqtfastplotter/jkqtfastplotter.h index deb98c494f..0e8e185380 100644 --- a/lib/jkqtfastplotter/jkqtfastplotter.h +++ b/lib/jkqtfastplotter/jkqtfastplotter.h @@ -91,6 +91,11 @@ class JKQTFPPlot; both in pixel and world coordinates by using plotterSizesChanged() and synchronizeX() / synchronizeY(). . + \image html jkqtfastplotter_test.png + + \see An example for the usage of this class can be found here: \ref JKQTFastPlotterTest + + */ class JKQTFASTPLOTTER_LIB_EXPORT JKQTFastPlotter : #if (QT_VERSION>=QT_VERSION_CHECK(6, 0, 0)) @@ -979,29 +984,13 @@ class JKQTFASTPLOTTER_LIB_EXPORT JKQTFastPlotter : void updateDataImmediate(); /** \brief set xMin*/ - void setXMin(double value){ - setPlotUpdateEnabled(false); - setXRange(value,xMax,xAxisLog); - setPlotUpdateEnabled(true); - } + void setXMin(double value); /** \brief set xMax*/ - void setXMax(double value){ - setPlotUpdateEnabled(false); - setXRange(xMin,value,xAxisLog); - setPlotUpdateEnabled(true); - } + void setXMax(double value); /** \brief set yMin*/ - void setYMin(double value){ - setPlotUpdateEnabled(false); - setYRange(value,yMax,yAxisLog); - setPlotUpdateEnabled(true); - } + void setYMin(double value); /** \brief set yMax*/ - void setYMax(double value){ - setPlotUpdateEnabled(false); - setYRange(yMin,value,yAxisLog); - setPlotUpdateEnabled(true); - } + void setYMax(double value); }; @@ -1011,7 +1000,7 @@ class JKQTFASTPLOTTER_LIB_EXPORT JKQTFastPlotter : /*! \brief base class for all plots that may be plotted by JKQTFastPlotter - \ingroup jkqtfastplotter + \ingroup jkqtfastplotter_PlotItems */ class JKQTFASTPLOTTER_LIB_EXPORT JKQTFPPlot: public QObject { Q_OBJECT @@ -1050,7 +1039,7 @@ class JKQTFASTPLOTTER_LIB_EXPORT JKQTFPPlot: public QObject { /*! \brief a simple line plot for JKQTFastPlotter - \ingroup jkqtfastplotter + \ingroup jkqtfastplotter_PlotItems This class plots data as (x,y) points connected by straight lines. If errors for the y values are provided, also y+/-yerr errorlines are drawn. @@ -1279,7 +1268,7 @@ class JKQTFASTPLOTTER_LIB_EXPORT JKQTFPLinePlot: public JKQTFPPlot { /*! \brief a simple plot that draws a cross for every datapoint - \ingroup jkqtfastplotter + \ingroup jkqtfastplotter_PlotItems This class does not support y errors! */ @@ -1334,7 +1323,7 @@ class JKQTFASTPLOTTER_LIB_EXPORT JKQTFPVCrossPlot: public JKQTFPLinePlot { /*! \brief a simple vertical bar plot for JKQTFastPlotter - \ingroup jkqtfastplotter + \ingroup jkqtfastplotter_PlotItems This class does not support y errors! */ @@ -1370,7 +1359,7 @@ class JKQTFASTPLOTTER_LIB_EXPORT JKQTFPVBarPlot: public JKQTFPLinePlot { /*! \brief plot a range of x values - \ingroup jkqtfastplotter + \ingroup jkqtfastplotter_PlotItems */ class JKQTFASTPLOTTER_LIB_EXPORT JKQTFPXRangePlot: public JKQTFPPlot { @@ -1534,7 +1523,7 @@ class JKQTFASTPLOTTER_LIB_EXPORT JKQTFPXRangePlot: public JKQTFPPlot { /*! \brief plot a range of x values - \ingroup jkqtfastplotter + \ingroup jkqtfastplotter_PlotItems */ class JKQTFASTPLOTTER_LIB_EXPORT JKQTFPYRangePlot: public JKQTFPPlot { @@ -1698,7 +1687,7 @@ class JKQTFASTPLOTTER_LIB_EXPORT JKQTFPYRangePlot: public JKQTFPPlot { /*! \brief a plot of a QImage - \ingroup jkqtfastplotter + \ingroup jkqtfastplotter_PlotItems */ class JKQTFASTPLOTTER_LIB_EXPORT JKQTFPQImagePlot: public JKQTFPPlot { Q_OBJECT @@ -1795,7 +1784,7 @@ class JKQTFASTPLOTTER_LIB_EXPORT JKQTFPQImagePlot: public JKQTFPPlot { /*! \brief An enum for selecting the palette for coloring - \ingroup jkqtfastplotter + \ingroup jkqtfastplotter_tools Here, the color palettes are illustrated (left is the color for the minimum and right for the maximum). */ @@ -1822,7 +1811,7 @@ enum JKQTFPColorPalette { }; /*! \brief datatype for an image plotpalette for coloring - \ingroup jkqtfastplotter + \ingroup jkqtfastplotter_tools Here, the color palettes are illustrated (left is the color for the minimum and right for the maximum). */ @@ -1838,7 +1827,7 @@ enum JKQTFPImageFormat { /*! \brief convert a 2D image (as 1D array) into a QImage with given palette (see JKQTFPColorPalette) - \ingroup jkqtfastplotter + \ingroup jkqtfastplotter_tools This method uses lookup tables which are saved as static variables to convert the 2D array into an image. The luts are only created once, and stored then, so mor CPU time is saved. The precompiler define @@ -2358,24 +2347,24 @@ inline void JKQTFPimagePlot_array2image(T* dbl, int width, int height, QImage &i }; /*! \brief get list with all available palettes - \ingroup jkqtfastplotter + \ingroup jkqtfastplotter_tools \see JKQTFPimagePlot_array2image() */ JKQTFASTPLOTTER_LIB_EXPORT QStringList JKQTFPimagePlot_getPalettes(); /*! \brief get QIcon representing the given palette - \ingroup jkqtfastplotter + \ingroup jkqtfastplotter_tools \see JKQTFPimagePlot_array2image() */ JKQTFASTPLOTTER_LIB_EXPORT QIcon JKQTFPimagePlot_getPaletteIcon(int i); /*! \brief get QIcon representing the given palette - \ingroup jkqtfastplotter + \ingroup jkqtfastplotter_tools \see JKQTFPimagePlot_array2image() */ JKQTFASTPLOTTER_LIB_EXPORT QIcon JKQTFPimagePlot_getPaletteIcon(JKQTFPColorPalette palette); /*! \brief plots a given grayscale image with a given color palette - \ingroup jkqtfastplotter + \ingroup jkqtfastplotter_PlotItems - This plot may plot any 2D array of data (8-, 16-, 32-bit integer images, float and double). - This class also draws a color bar in the right border of the plot @@ -2644,7 +2633,7 @@ class JKQTFASTPLOTTER_LIB_EXPORT JKQTFPimagePlot: public JKQTFPPlot { /*! \brief convert a 2D image (as 1D array) into a QImage and puts the image values into one color channel (set by \a channel). - \ingroup jkqtfastplotter + \ingroup jkqtfastplotter_tools */ template @@ -2746,7 +2735,7 @@ inline void JKQTFPRGBImageOverlayPlot_array2image(T* dbl, int width, int height, /*! \brief plots 1,2 or 3 given grayscale images as an overlay plot, where each channel is drawn as one color channel (e.g. red, green or blue). - \ingroup jkqtfastplotter + \ingroup jkqtfastplotter_PlotItems - This plot may plot any 2D array of data (8-, 16-, 32-bit integer images, float and double). - The images all have to have the same size @@ -3112,7 +3101,7 @@ class JKQTFASTPLOTTER_LIB_EXPORT JKQTFPRGBImageOverlayPlot: public JKQTFPPlot { /*! \brief plots an image overlay, i.e. a boolean image where each \c true pixel is drawn with a given color and the \c false pixels are transparent - \ingroup jkqtfastplotter + \ingroup jkqtfastplotter_PlotItems */ class JKQTFASTPLOTTER_LIB_EXPORT JKQTFPimageOverlayPlot: public JKQTFPPlot { @@ -3267,7 +3256,7 @@ class JKQTFASTPLOTTER_LIB_EXPORT JKQTFPimageOverlayPlot: public JKQTFPPlot { /*! \brief plot a horizontal scale bar - \ingroup jkqtfastplotter + \ingroup jkqtfastplotter_PlotItems */ class JKQTFASTPLOTTER_LIB_EXPORT JKQTFPQScaleBarXPlot: public JKQTFPPlot { @@ -3391,7 +3380,7 @@ class JKQTFASTPLOTTER_LIB_EXPORT JKQTFPQScaleBarXPlot: public JKQTFPPlot { /*! \brief plot a horizontal scale bar - \ingroup jkqtfastplotter + \ingroup jkqtfastplotter_PlotItems */ class JKQTFASTPLOTTER_LIB_EXPORT JKQTFPQOverlayLinearGridPlot: public JKQTFPPlot { diff --git a/lib/jkqtfastplotter/jkqtfastplotter_imexport.h b/lib/jkqtfastplotter/jkqtfastplotter_imexport.h index a212562d5d..3826813dcb 100644 --- a/lib/jkqtfastplotter/jkqtfastplotter_imexport.h +++ b/lib/jkqtfastplotter/jkqtfastplotter_imexport.h @@ -25,7 +25,7 @@ /*! \def JKQTFASTPLOTTER_LIB_EXPORT - \ingroup tools + \ingroup jkqtfastplotter_tools This define allows to export functions and classes from the jkqtcommon-library when building a dynamic/shared library. Usage is as follows: @@ -57,16 +57,24 @@ */ -/*! \def JKQTFASTPLOTTER_LIB_IN_DLL - \ingroup tools +// necessary to add this define to the Doxygen autodoc!!! +#ifdef DOXYGEN +# define JKQTFASTPLOTTER_LIB_IN_DLL +#endif +/*! \def JKQTFASTPLOTTER_LIB_IN_DLL + \ingroup jkqtfastplotter_tools \brief declares that the application should link against a shared version of JKQTFastPlotter, i.e. \c JKQTFastPlotterSharedLib_XYZ . This needs to be defined while compiling the library and while compiling any application linking against \c JKQTFastPlotterSharedLib_XYZ. */ -/*! \def JKQTFASTPLOTTER_LIB_EXPORT_LIBRARY - \ingroup tools +// necessary to add this define to the Doxygen autodoc!!! +#ifdef DOXYGEN +# define JKQTFASTPLOTTER_LIB_EXPORT_LIBRARY +#endif +/*! \def JKQTFASTPLOTTER_LIB_EXPORT_LIBRARY + \ingroup jkqtfastplotter_tools \brief is only defined while compiling JKQTFastPlotter into \c JKQTFastPlotterSharedLib_XYZ and ensures thet the symbols are exported. If it is not defined (e.g. while compiling an application), the symbols are imported diff --git a/lib/jkqtmathtext/jkqtmathtext.h b/lib/jkqtmathtext/jkqtmathtext.h index 849136d0a0..2a0d2d5601 100644 --- a/lib/jkqtmathtext/jkqtmathtext.h +++ b/lib/jkqtmathtext/jkqtmathtext.h @@ -124,9 +124,9 @@ class JKQTMathTextNode; // forward - \c \\textcolor{color}{...} \c \\color{color} \c \\mathcolor{color}{...} : draw colored text \image html jkqtmathtext/jkqtmathtext_colored.png - \c \\boxed{...} : draw text with a box around it \image html jkqtmathtext/jkqtmathtext_boxed.png - \c \\doublebox{...} : draw text with a rounded box around it \image html jkqtmathtext/jkqtmathtext_doublebox.png - - \c \\ovalbox{...} : draw text with a rounded box around it \image html jkqtmathtext/jkqtmathtext_ovalbox.png + - \c \\ovalbox{...} : draw text with a rounded box around it \image html jkqtmathtext/jkqtmathtext_ovalboxed.png - \c \\Ovalbox{...} : draw a thick oval box \image html jkqtmathtext/jkqtmathtext_oovalbox.png - - \c \\ovaldoublebox{...} : draw a double oval box \image html jkqtmathtext/jkqtmathtext_ovaldoublebox.png + - \c \\ovaldoublebox{...} : draw a double oval box \image html jkqtmathtext/jkqtmathtext_doubleovalbox.png - \c \\colorbox{bordercolor}{...} : draw a colored box \image html jkqtmathtext/jkqtmathtext_colorbox.png - \c \\shaded{backgroundcolor}{...} : draw a filled box \image html jkqtmathtext/jkqtmathtext_shaded.png - \c \\fcolorbox{bordercolor}{backgroundcolor}{...} : draw a colored, filled box \image html jkqtmathtext/jkqtmathtext_fcolorbox.png @@ -206,14 +206,14 @@ class JKQTMathTextNode; // forward . These fonts are generic font classes, which font is actually used can be configured in JKQTMathText class with the \c set...() functions mentioned above. You can also use these functions to set the fonts used for math rendering in math-mode: - - useSTIX() use the STIX fonts from https://www.stixfonts.org/ in math-mode
      \image html jkqtmathtext/jkqtmathparser_stix.png - - useXITS() use the XITS fonts from https://github.com/alif-type/xits in math-mode. These are included by default in this library and also activated by default.
      \image html jkqtmathtext/jkqtmathparser_xits.png - - useASANA() use the ASANA fonts from https://ctan.org/tex-archive/fonts/Asana-Math/ in math-mode
      \image html jkqtmathtext/jkqtmathparser_asana.png - - useAnyUnicode() use generic Unicode fonts, e.g. "Arial" and "Times New Roman" in math-mode. You should use fonts that contain as many of the mathematical symbols as possible to ensure good rendering results.
      using "Times New Roman": \image html jkqtmathtext/jkqtmathparser_timesnewroman.png -
      using "Arial": \image html jkqtmathtext/jkqtmathparser_arial.png -
      using "Courier New": \image html jkqtmathtext/jkqtmathparser_couriernew.png -
      using "Comic Sans MS": \image html jkqtmathtext/jkqtmathparser_comicsans.png -
      using "Old English Text": \image html jkqtmathtext/jkqtmathparser_OldEnglish.png + - useSTIX() use the STIX fonts from https://www.stixfonts.org/ in math-mode
      \image html jkqtmathtext/jkqtmathtext_stix.png + - useXITS() use the XITS fonts from https://github.com/alif-type/xits in math-mode. These are included by default in this library and also activated by default.
      \image html jkqtmathtext/jkqtmathtext_xits.png + - useASANA() use the ASANA fonts from https://ctan.org/tex-archive/fonts/Asana-Math/ in math-mode
      \image html jkqtmathtext/jkqtmathtext_asana.png + - useAnyUnicode() use generic Unicode fonts, e.g. "Arial" and "Times New Roman" in math-mode. You should use fonts that contain as many of the mathematical symbols as possible to ensure good rendering results.
      using "Times New Roman": \image html jkqtmathtext/jkqtmathtext_timesnewroman.png +
      using "Arial": \image html jkqtmathtext/jkqtmathtext_arial.png +
      using "Courier New": \image html jkqtmathtext/jkqtmathtext_couriernew.png +
      using "Comic Sans MS": \image html jkqtmathtext/jkqtmathtext_comicsans.png +
      using "Old English Text": \image html jkqtmathtext/jkqtmathtext_OldEnglish.png . Math-mode is activated by enclosing your equation in \c $...$ or \c \\[...\\] . This mode is optimized for mathematical equations. Here is an example of the difference: @@ -285,7 +285,7 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathText : public QObject { * * \param painter the QPainter to use for drawing * \param rect rectangle to draw the text/expression into (see sketch below) - * \param flags alignment within \a rect (see below), use e.g. \c Qt::AlignHCenter|Qt::AlignVCenter to center the expression inside \a rect + * \param flags alignment within \a rect (see below), use e.g. Qt::AlignHCenter | Qt::AlignVCenter to center the expression inside \a rect * \param drawBoxes if \c true boxes defining the size of each node are drawn, example output: \image html jkqtmathtext/jkqtmathtext_drawboxes.png * * These options are interpreted for \a flags (dark-red is the rectangle \a rect): @@ -425,7 +425,7 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathText : public QObject { * * use STIX (1.x/2.x) fonts from https://www.stixfonts.org/ in math-mode * - * \image html jkqtmathtext/stix.png + * \image html jkqtmathtext/jkqtmathtext_stix.png */ bool useSTIX(bool mathModeOnly=true); @@ -434,7 +434,7 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathText : public QObject { * use XITS fonts from https://github.com/alif-type/xits in math-mode. * These are included by default in this library and also activated by default. * - * \image html jkqtmathtext/xits.png + * \image html jkqtmathtext/jkqtmathtext_xits.png * * \note The XITS fonts can be compiled into JKQTPlotter, when the CMake-option \c is set to ON (default: ON). * Then the XITS fonts are added as Qt-Ressources to the library binary. @@ -447,7 +447,7 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathText : public QObject { * * use the ASANA fonts from https://ctan.org/tex-archive/fonts/Asana-Math/ in math-mode * - * \image html jkqtmathtext/asana.png + * \image html jkqtmathtext/jkqtmathtext_asana.png */ bool useASANA(bool mathModeOnly=true); @@ -457,11 +457,11 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathText : public QObject { * You should use fonts that contain as many of the mathematical symbols as possible * to ensure good rendering results. * - * useAnyUnicode("Times New Roman", "Times New Roman"):
      \image html jkqtmathtext/jkqtmathparser_timesnewroman.png

      - * useAnyUnicode("Arial", "Arial"):
      \image html jkqtmathtext/jkqtmathparser_arial.png

      - * useAnyUnicode("Courier New", "Courier New"):
      \image html jkqtmathtext/jkqtmathparser_couriernew.png

      - * useAnyUnicode("Comic Sans MS", "Comic Sans MS"):
      \image html jkqtmathtext/jkqtmathparser_comicsans.png

      - * useAnyUnicodeForTextOnly("Comic Sans MS", "Comic Sans MS");:
      \image html jkqtmathparser_comicsans_textonly.png + * useAnyUnicode("Times New Roman", "Times New Roman"):
      \image html jkqtmathtext/jkqtmathtext_timesnewroman.png

      + * useAnyUnicode("Arial", "Arial"):
      \image html jkqtmathtext/jkqtmathtext_arial.png

      + * useAnyUnicode("Courier New", "Courier New"):
      \image html jkqtmathtext/jkqtmathtext_couriernew.png

      + * useAnyUnicode("Comic Sans MS", "Comic Sans MS"):
      \image html jkqtmathtext/jkqtmathtext_comicsans.png

      + * useAnyUnicodeForTextOnly("Comic Sans MS", "Comic Sans MS");:
      \image html jkqtmathtext/jkqtmathtext_comicsans_textonly.png */ void useAnyUnicode(QString timesFont, const QString& sansFont, JKQTMathTextFontEncoding encodingTimes=JKQTMathTextFontEncoding::MTFEUnicode, JKQTMathTextFontEncoding encodingSans=JKQTMathTextFontEncoding::MTFEUnicode); /** \brief sets \a timesFont (with its encoding \a encodingTimes ) for serif-text and \a sansFont (with its encoding \a encodingSans ) for mathmode fonts only @@ -476,8 +476,8 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathText : public QObject { * * \see useAnyUnicodeForMathOnly(), useAnyUnicode() * - * useAnyUnicode("Comic Sans MS", "Comic Sans MS"):
      \image html jkqtmathtext/jkqtmathparser_comicsans.png

      - * useAnyUnicodeForTextOnly("Comic Sans MS", "Comic Sans MS");:
      \image html jkqtmathparser_comicsans_textonly.png + * useAnyUnicode("Comic Sans MS", "Comic Sans MS"):
      \image html jkqtmathtext/jkqtmathtext_comicsans.png

      + * useAnyUnicodeForTextOnly("Comic Sans MS", "Comic Sans MS");:
      \image html jkqtmathtext/jkqtmathtext_comicsans_textonly.png */ void useAnyUnicodeForTextOnly(QString timesFont, const QString& sansFont, JKQTMathTextFontEncoding encodingTimes=JKQTMathTextFontEncoding::MTFEUnicode, JKQTMathTextFontEncoding encodingSans=JKQTMathTextFontEncoding::MTFEUnicode); @@ -559,9 +559,9 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathText : public QObject { void setUnderbraceBraceSizeXFactor(double __value); /** \copydoc underbrace_bracesize_xfactor */ double getUnderbraceBraceSizeXFactor() const; - /** \copydoc undersetFactor */ + /** \copydoc underset_factor */ void setUndersetFactor(double __value); - /** \copydoc undersetFactor */ + /** \copydoc underset_factor */ double getUndersetFactor() const; /** \copydoc frac_factor */ void setFracFactor(double __value); @@ -702,7 +702,7 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathText : public QObject { * The next image demonstrates the effect of this property, which adds extra space * around certain math operators in math mode: * - * \image html jkqtmathparser_mathoperator_width_factor.png + * \image html jkqtmathtext/jkqtmathtext_mathoperator_width_factor.png */ double mathoperator_width_factor; /** \brief factor, used to increase the font size for big math operators, such as \c \\sum , \c \\prod , ... @@ -737,12 +737,12 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathText : public QObject { /** \brief scaling factor for font size of nominator and denominator of a fraction * - * \image html jkqtmathtext_frac_factor.png + * \image html jkqtmathtext/jkqtmathtext_frac_factor.png */ double frac_factor; /** \brief scaling factor for font size of nominator and denominator of a nested fraction * - * \image html jkqtmathtext_frac_factor.png + * \image html jkqtmathtext/jkqtmathtext_frac_factor.png */ double frac_nested_factor; /** \brief shift of denominator/nummerator away from central line of a frac @@ -798,7 +798,7 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathText : public QObject { enum tokenType { MTTnone, /*!< \brief no token */ MTTtext, /*!< \brief a piece of general text */ - MTTinstruction, /*!< \brief an instruction, started by \c "\\", e.g. \c "\textbf", ... */ + MTTinstruction, /*!< \brief an instruction, started by \c "\\", e.g. \c "\\textbf", ... */ MTTunderscore, /*!< \brief the character \c "_" */ MTThat, /*!< \brief the character \c "^" */ MTTdollar, /*!< \brief the character \c "$" */ @@ -816,7 +816,7 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathText : public QObject { * * \param get if \c true this calls getToken() * \param quitOnClosingBrace if unequal MTBTAny, this returns if the given closing brace is found - * \param quitOnEnvironmentEnd wuit if \end{quitOnEnvironmentEnd} is found + * \param quitOnEnvironmentEnd wuit if \c \\end{quitOnEnvironmentEnd} is found * \param quitOnClosingBracket if \c true, quits on encountering a MTTclosebracket token */ JKQTMathTextNode* parseLatexString(bool get, JKQTMathTextBraceType quitOnClosingBrace=JKQTMathTextBraceType::MTBTAny, const QString& quitOnEnvironmentEnd=QString(""), bool quitOnClosingBracket=false); diff --git a/lib/jkqtmathtext/jkqtmathtext_imexport.h b/lib/jkqtmathtext/jkqtmathtext_imexport.h index 7127db3fda..2eefe86c38 100644 --- a/lib/jkqtmathtext/jkqtmathtext_imexport.h +++ b/lib/jkqtmathtext/jkqtmathtext_imexport.h @@ -25,7 +25,7 @@ /*! \def JKQTMATHTEXT_LIB_EXPORT - \ingroup jkqtmathtext_tools + \ingroup jkqtmathtext_libfacilities This define allows to export functions and classes from the jkqtcommon-library when building a dynamic/shared library. Usage is as follows: @@ -57,16 +57,24 @@ */ -/*! \def JKQTMATHTEXT_LIB_IN_DLL - \ingroup jkqtmathtext_tools +// necessary to add this define to the Doxygen autodoc!!! +#ifdef DOXYGEN +# define JKQTMATHTEXT_LIB_IN_DLL +#endif +/*! \def JKQTMATHTEXT_LIB_IN_DLL + \ingroup jkqtmathtext_libfacilities \brief declares that the application should link against a shared version of JKQTMathText, i.e. \c JKQTMathTextSharedLib_XYZ . This needs to be defined while compiling the library and while compiling any application linking against \c JKQTMathTextSharedLib_XYZ. */ -/*! \def JKQTMATHTEXT_LIB_EXPORT_LIBRARY - \ingroup jkqtmathtext_tools +// necessary to add this define to the Doxygen autodoc!!! +#ifdef DOXYGEN +# define JKQTMATHTEXT_LIB_EXPORT_LIBRARY +#endif +/*! \def JKQTMATHTEXT_LIB_EXPORT_LIBRARY + \ingroup jkqtmathtext_libfacilities \brief is only defined while compiling JKQTMathText into \c JKQTMathTextSharedLib_XYZ and ensures thet the symbols are exported. If it is not defined (e.g. while compiling an application), the symbols are imported diff --git a/lib/jkqtmathtext/jkqtmathtexttools.h b/lib/jkqtmathtext/jkqtmathtexttools.h index 59db81cc9d..be1f54cf36 100644 --- a/lib/jkqtmathtext/jkqtmathtexttools.h +++ b/lib/jkqtmathtext/jkqtmathtexttools.h @@ -318,7 +318,7 @@ struct JKQTMATHTEXT_LIB_EXPORT JKQTMathTextFontDefinition { * \param x x-center-position of the brace * \param ybrace y-center-position of the brace * \param width with of the overall brace - * \param height of the brace + * \param bw height of the brace * \param lineWidth linewidth when drawing, used for correcting so the brace exactly fills the rectangle and not overshoots it * \param cubicshrink * \param cubiccontrolfac diff --git a/lib/jkqtmathtext/nodes/jkqtmathtextdecoratednode.h b/lib/jkqtmathtext/nodes/jkqtmathtextdecoratednode.h index b96a317a0f..86ecaf05eb 100644 --- a/lib/jkqtmathtext/nodes/jkqtmathtextdecoratednode.h +++ b/lib/jkqtmathtext/nodes/jkqtmathtextdecoratednode.h @@ -97,7 +97,7 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathTextDecoratedNode: public JKQTMathTextSing DecorationType decoration; /** \brief lists all supported instructions */ static QHash instructions; - /** \biref fills instructions */ + /** \brief fills instructions */ static void fillInstructions(); }; #endif // JKQTMATHTEXTDECORATEDNODE_H diff --git a/lib/jkqtmathtext/nodes/jkqtmathtextfracnode.h b/lib/jkqtmathtext/nodes/jkqtmathtextfracnode.h index 206a7f6520..f520304812 100644 --- a/lib/jkqtmathtext/nodes/jkqtmathtextfracnode.h +++ b/lib/jkqtmathtext/nodes/jkqtmathtextfracnode.h @@ -91,7 +91,7 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathTextFracNode: public JKQTMathTextDualChild protected: /** \brief lists all supported instructions */ static QHash instructions; - /** \biref fills instructions */ + /** \brief fills instructions */ static void fillInstructions(); /** \copydoc JKQTMathTextNode::getSizeInternal() */ virtual void getSizeInternal(QPainter& painter, JKQTMathTextEnvironment currentEv, double& width, double& baselineHeight, double& overallHeight, double& strikeoutPos, const JKQTMathTextNodeSize* prevNodeSize=nullptr) override; diff --git a/lib/jkqtmathtext/nodes/jkqtmathtextinstructionnode.cpp b/lib/jkqtmathtext/nodes/jkqtmathtextinstructionnode.cpp index 45f38ed6d8..5690f4c4c2 100644 --- a/lib/jkqtmathtext/nodes/jkqtmathtextinstructionnode.cpp +++ b/lib/jkqtmathtext/nodes/jkqtmathtextinstructionnode.cpp @@ -133,131 +133,193 @@ void JKQTMathTextModifiedTextPropsInstructionNode::fillInstructions() { { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) {ev.bold=true; }, 0); + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.bold=true; + }, 0); instructions["bf"] = i; instructions["textbf"] = i; instructions["mathbf"]= i; } { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) {ev.italic=!ev.italic; }, 0); + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.italic=!ev.italic; + }, 0); instructions["em"]= i; } { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) {ev.italic=true; }, 0); + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.italic=true; + }, 0); instructions["it"] = i; instructions["textit"] = i; instructions["mathit"]= i; } { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& parameters) {ev.color=jkqtp_String2QColor(parameters.value(0, ev.color.name())); }, 1); + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& parameters) { + ev.color=jkqtp_String2QColor(parameters.value(0, ev.color.name())); + }, 1); instructions["textcolor"] = i; instructions["mathcolor"] = i; instructions["color"]= i; } { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { ev.italic=true; ev.insideMath=true; }, 0); + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.italic=true; ev.insideMath=true; + }, 0); instructions["ensuremath"] = i; instructions["equation"]= i; } { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) {ev.smallCaps=true; }, 0); + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.smallCaps=true; + }, 0); instructions["sc"] = i; instructions["textsc"] = i; instructions["mathsc"]= i; } { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) {ev.underlined=true; }, 0); + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.underlined=true; + }, 0); instructions["ul"] = i; instructions["underline"] = i; instructions["underlined"]= i; } { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) {ev.overline=true; }, 0); + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.overline=true; + }, 0); instructions["ol"] = i; instructions["overline"] = i; instructions["overlined"]= i; } { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) {ev.strike=true; }, 0); + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.strike=true; + }, 0); instructions["strike"]= i; } { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { ev.font=JKQTMathTextEnvironmentFont::MTEroman; ev.italic=false; }, 0); + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEroman; + ev.italic=false; + }, 0); instructions["rm"] = i; instructions["textrm"]= i; } { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { ev.font=JKQTMathTextEnvironmentFont::MTEroman; ev.italic=false; }, 0); + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEroman; + ev.italic=false; + }, 0); instructions["mathrm"] = i; instructions["unit"] = i; instructions["operatorname"]= i; } { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { ev.bold=true; ev.italic=true; }, 0); + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.bold=true; + ev.italic=true; + }, 0); instructions["mathbfit"] = i; instructions["bfit"] = i; instructions["textbfit"]= i; } { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { ev.insideMath=false; ev.font=JKQTMathTextEnvironmentFont::MTEroman; ev.italic=false; }, 0); + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.insideMath=false; + ev.font=JKQTMathTextEnvironmentFont::MTEroman; + ev.italic=false; + }, 0); instructions["text"] = i; instructions["mbox"] = i; instructions["ensuretext"]= i; } { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { ev.font=JKQTMathTextEnvironmentFont::MTEroman; ev.italic=false; ev.bold=true; }, 0); + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEroman; + ev.italic=false; + ev.bold=true; + }, 0); instructions["mat"]= i; } { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { ev.font=JKQTMathTextEnvironmentFont::MTEcaligraphic; ev.italic=false; }, 0); + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEcaligraphic; + ev.italic=false; + }, 0); instructions["cal"] = i; instructions["textcal"] = i; instructions["mathcal"]= i; } { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { ev.font=JKQTMathTextEnvironmentFont::MTEcaligraphic; ev.bold=true; }, 0); + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEcaligraphic; + ev.bold=true; + }, 0); instructions["fcal"] = i; instructions["textfcal"] = i; instructions["mathfcal"]= i; } { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { ev.font=JKQTMathTextEnvironmentFont::MTEfraktur; ev.italic=false; }, 0); + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEfraktur; + ev.italic=false; + }, 0); instructions["frak"] = i; instructions["textfrak"] = i; instructions["mathfrak"]= i; } { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { ev.font=JKQTMathTextEnvironmentFont::MTEfraktur; ev.bold=true; }, 0); + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEfraktur; + ev.bold=true; + }, 0); instructions["ffrak"] = i; instructions["textffrak"] = i; instructions["mathffrak"]= i; } { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { ev.font=JKQTMathTextEnvironmentFont::MTEblackboard; ev.italic=false; }, 0); + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEblackboard; + ev.italic=false; + }, 0); instructions["bb"] = i; instructions["textbb"] = i; instructions["mathbb"]= i; } { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { ev.font=JKQTMathTextEnvironmentFont::MTEtypewriter; ev.italic=false; }, 0); + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEtypewriter; + ev.italic=false; + }, 0); instructions["tt"] = i; instructions["texttt"] = i; instructions["mathtt"]= i; } { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { ev.font=JKQTMathTextEnvironmentFont::MTEsans; ev.italic=false; }, 0); + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEsans; + ev.italic=false; + }, 0); instructions["sf"] = i; instructions["textsf"] = i; instructions["mathsf"]= i; } { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { ev.font=JKQTMathTextEnvironmentFont::MTEsans; ev.italic=true; }, 0); + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEsans; + ev.italic=true; + }, 0); instructions["sfit"] = i; instructions["textsfit"] = i; instructions["mathsfit"]= i; } { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { ev.font=JKQTMathTextEnvironmentFont::MTEscript; ev.italic=false; }, 0); + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEscript; + ev.italic=false; + }, 0); instructions["script"] = i; instructions["scr"] = i; instructions["textscript"] = i; @@ -266,7 +328,11 @@ void JKQTMathTextModifiedTextPropsInstructionNode::fillInstructions() instructions["mathscr"]= i; } { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { ev.font=JKQTMathTextEnvironmentFont::MTEscript; ev.bold=true; ev.italic=false; }, 0); + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEscript; + ev.bold=true; + ev.italic=false; + }, 0); instructions["fscript"] = i; instructions["fscr"] = i; instructions["textfscript"] = i; @@ -275,15 +341,21 @@ void JKQTMathTextModifiedTextPropsInstructionNode::fillInstructions() instructions["mathfscr"]= i; } { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { ev.fontSize=ev.fontSize/0.8; }, 0); + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.fontSize=ev.fontSize/0.8; + }, 0); instructions["displaystyle"]= i; } { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { ev.fontSize=ev.fontSize*0.8; }, 0); + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.fontSize=ev.fontSize*0.8; + }, 0); instructions["scriptstyle"]= i; } { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { ev.fontSize=ev.fontSize*0.8*0.8; }, 0); + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.fontSize=ev.fontSize*0.8*0.8; + }, 0); instructions["scriptscriptstyle"]= i; } } @@ -534,12 +606,16 @@ void JKQTMathTextBoxInstructionNode::fillInstructions() JKQTMathTextBoxInstructionNode::InstructionProperties::ModifyEnvironmentFunctor JKQTMathTextBoxInstructionNode::InstructionProperties::NoModification= [](JKQTMathTextEnvironment& /*ev*/, const QStringList& /*parameters*/){}; + JKQTMathTextBoxInstructionNode::InstructionProperties::GetBoxPenFunctor JKQTMathTextBoxInstructionNode::InstructionProperties::DefaultPen= [](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, JKQTMathText* parent){ return QPen(ev.color, QFontMetricsF(ev.getFont(parent)).lineWidth(), Qt::SolidLine); }; + JKQTMathTextBoxInstructionNode::InstructionProperties::GetBoxPenFunctor JKQTMathTextBoxInstructionNode::InstructionProperties::NoPen= [](JKQTMathTextEnvironment& /*ev*/, const QStringList& /*parameters*/, JKQTMathText* /*parent*/){ return Qt::NoPen; }; + JKQTMathTextBoxInstructionNode::InstructionProperties::GetBoxBrushFunctor JKQTMathTextBoxInstructionNode::InstructionProperties::NoBrush= [](JKQTMathTextEnvironment& /*ev*/, const QStringList& /*parameters*/, JKQTMathText* /*parent*/){ return Qt::NoBrush; }; + double JKQTMathTextBoxInstructionNode::InstructionProperties::DefaultPadding=0.5; JKQTMathTextBoxInstructionNode::InstructionProperties::InstructionProperties(): diff --git a/lib/jkqtmathtext/nodes/jkqtmathtextinstructionnode.h b/lib/jkqtmathtext/nodes/jkqtmathtextinstructionnode.h index aa8e8ab156..7a7e04aa95 100644 --- a/lib/jkqtmathtext/nodes/jkqtmathtextinstructionnode.h +++ b/lib/jkqtmathtext/nodes/jkqtmathtextinstructionnode.h @@ -46,7 +46,7 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathTextInstruction1Node: public JKQTMathTextS public: explicit JKQTMathTextInstruction1Node(JKQTMathText* parent, const QString& name, JKQTMathTextNode* child, const QStringList& parameters=QStringList()); virtual ~JKQTMathTextInstruction1Node() override; - /** \copydoc name */ + /** \copydoc instructionName */ const QString& getInstructionName() const; /** \copydoc parameters */ const QStringList& getParameters() const; @@ -162,9 +162,9 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathTextBoxInstructionNode: public JKQTMathTex static ModifyEnvironmentFunctor NoModification; /** \brief this functor returns the QPen to use for the box outline */ typedef std::function GetBoxPenFunctor; - /** \bbrief generates a QPen with the lineWidth associated with the QFont of the environment (using QFontMetricsF::lineWidth() ) */ + /** \brief generates a QPen with the lineWidth associated with the QFont of the environment (using QFontMetricsF::lineWidth() ) */ static GetBoxPenFunctor DefaultPen; - /** \bbrief generates an invisible pen with 0 width */ + /** \brief generates an invisible pen with 0 width */ static GetBoxPenFunctor NoPen; /** \brief this functor returns the QBrush to use for the box fill */ typedef std::function GetBoxBrushFunctor; diff --git a/lib/jkqtmathtext/nodes/jkqtmathtextnode.h b/lib/jkqtmathtext/nodes/jkqtmathtextnode.h index 541a93ce3f..0be4bbc424 100644 --- a/lib/jkqtmathtext/nodes/jkqtmathtextnode.h +++ b/lib/jkqtmathtext/nodes/jkqtmathtextnode.h @@ -52,7 +52,7 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathTextNode { * */ void getSize(QPainter& painter, JKQTMathTextEnvironment currentEv, double& width, double& baselineHeight, double& overallHeight, double& strikeoutPos, const JKQTMathTextNodeSize* prevNodeSize=nullptr); - /** \brief calculates the x-size-difference between the given (probably) italic (width externally calculated: \A width_potentiallyitalic, \a ev_potentiallyitalic) and the non-italic version of \a child */ + /** \brief calculates the x-size-difference between the given (probably) italic (width externally calculated: \a width_potentiallyitalic, \a ev_potentiallyitalic) and the non-italic version of \a child */ double getNonItalicXCorretion(QPainter &painter, double width_potentiallyitalic, const JKQTMathTextEnvironment &ev_potentiallyitalic, JKQTMathTextNode* child) const; /** \brief draw the contents at the designated position * diff --git a/lib/jkqtmathtext/nodes/jkqtmathtextsymbolnode.h b/lib/jkqtmathtext/nodes/jkqtmathtextsymbolnode.h index 84187887e5..f9b08bb10e 100644 --- a/lib/jkqtmathtext/nodes/jkqtmathtextsymbolnode.h +++ b/lib/jkqtmathtext/nodes/jkqtmathtextsymbolnode.h @@ -88,7 +88,7 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathTextSymbolNode: public JKQTMathTextNode { protected: /** \copydoc JKQTMathTextNode::getSizeInternal() */ virtual void getSizeInternal(QPainter& painter, JKQTMathTextEnvironment currentEv, double& width, double& baselineHeight, double& overallHeight, double& strikeoutPos, const JKQTMathTextNodeSize* prevNodeSize=nullptr) override; - /** \copydoc JKQTMathTextNode::getSizeInternal() */ + /** \copydoc JKQTMathTextSymbolNode::getSymbolSize() */ virtual void getSymbolSizeInternal(QPainter& painter, JKQTMathTextEnvironment currentEv, double& width, double& baselineHeight, double& overallHeight, double& strikeoutPos, double& subSuperXCorrection, double& subBesidesXCorrection, const JKQTMathTextNodeSize* prevNodeSize=nullptr) ; @@ -184,15 +184,15 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathTextSymbolNode: public JKQTMathTextNode { SymbolFullProps(const SymbolFullProps& other)=default; SymbolFullProps& operator=(SymbolFullProps&& other)=default; SymbolFullProps& operator=(const SymbolFullProps& other)=default; - /** \brief typesets the symbol (described in \a props ) from the specified \a font, \a props is stored with encoding MTFEStandard, an optional HTML-string \A _html can be given */ + /** \brief typesets the symbol (described in \a props ) from the specified \a font, \a props is stored with encoding MTFEStandard, an optional HTML-string \a _html can be given */ SymbolFullProps(const QString& font, const SymbolProps& props, const QString& _html=QString(), SymbolFlags _htmlflags=AsOutside, double _htmlfontScalingFactor=1.0, double _htmlyShiftFactor=0.0); - /** \brief typesets the \a symbol from the specified \a font, \a props is stored with encoding MTFEStandard, an optional HTML-string \A _html can be given */ + /** \brief typesets the \a symbol from the specified \a font, \a props is stored with encoding MTFEStandard, an optional HTML-string \a _html can be given */ SymbolFullProps(const QString& font, const QString& symbol, const QString& _html=QString(), SymbolFlags _htmlflags=AsOutside, double _htmlfontScalingFactor=1.0, double _htmlyShiftFactor=0.0); - /** \brief \a props is stored with encoding MTFEStandard, an optional HTML-string \A _html can be given */ + /** \brief \a props is stored with encoding MTFEStandard, an optional HTML-string \a _html can be given */ SymbolFullProps(const SymbolProps& props, const QString& _html=QString(), SymbolFlags _htmlflags=AsOutside, double _htmlfontScalingFactor=1.0, double _htmlyShiftFactor=0.0); - /** \brief \a props is stored with encoding MTFEStandard, uses the specified \a _fontType for drawing, an optional HTML-string \A _html can be given */ + /** \brief \a props is stored with encoding MTFEStandard, uses the specified \a _fontType for drawing, an optional HTML-string \a _html can be given */ SymbolFullProps(JKQTMathTextEnvironmentFont _fontType, const SymbolProps& props, const QString& _html=QString(), SymbolFlags _htmlflags=AsOutside, double _htmlfontScalingFactor=1.0, double _htmlyShiftFactor=0.0); - /** \brief takes a \a symbol from the specified \a _fontType assuming MTFEStandard encoding, an optional HTML-string \A _html can be given */ + /** \brief takes a \a symbol from the specified \a _fontType assuming MTFEStandard encoding, an optional HTML-string \a _html can be given */ SymbolFullProps(JKQTMathTextEnvironmentFont _fontType, const QString& symbol, const QString& _html=QString(), SymbolFlags _htmlflags=AsOutside, double _htmlfontScalingFactor=1.0, double _htmlyShiftFactor=0.0); /** \brief single-alternative symbol for encoding \a enc0 and using symbol description \a props0 for it. An optional HTML-string \a _html can be provided */ SymbolFullProps(JKQTMathTextFontEncoding enc0, const SymbolProps& props0, const QString& _html=QString(), SymbolFlags _htmlflags=AsOutside, double _htmlfontScalingFactor=1.0, double _htmlyShiftFactor=0.0); diff --git a/lib/jkqtplotter/graphs/jkqtpviolinplotstylingmixins.h b/lib/jkqtplotter/graphs/jkqtpviolinplotstylingmixins.h index 455647e8e6..5dff0ac80b 100644 --- a/lib/jkqtplotter/graphs/jkqtpviolinplotstylingmixins.h +++ b/lib/jkqtplotter/graphs/jkqtpviolinplotstylingmixins.h @@ -313,7 +313,9 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPGraphViolinplotStyleMixin: public JKQTPGraphLi ViolinBottom=ViolinLeft, /*!< \brief draw violin on the bottom side only (for horizontal violins) \image html JKQTPGraphViolinplot_ViolinBottom.png */ ViolinRight, /*!< \brief draw violin on the right hand side only (for vertical violins) \image html JKQTPGraphViolinplot_ViolinRight.png */ ViolinTop=ViolinRight, /*!< \brief draw violin on the top side only (for horizontal violins) \image html JKQTPGraphViolinplot_ViolinTop.png */ - ViolinBoth /*!< \brief draw violin on the left+right or top+bottom side \image html JKQTPGraphViolinplot_ViolinBoth.png \image html JKQTPGraphViolinplot_ViolinHBoth.png */ + ViolinBoth /*!< \brief draw violin on the left+right or top+bottom side + \image html JKQTPGraphViolinplot_ViolinBoth.png + \image html JKQTPGraphViolinplot_ViolinHBoth.png */ }; /** \brief returns the position mode of the violin plot */ diff --git a/lib/jkqtplotter/jkqtpbaseplotter.h b/lib/jkqtplotter/jkqtpbaseplotter.h index 42eefafbe3..e81a6d9e7f 100644 --- a/lib/jkqtplotter/jkqtpbaseplotter.h +++ b/lib/jkqtplotter/jkqtpbaseplotter.h @@ -122,7 +122,7 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPPaintDeviceAdapter { * how to use it. This class implement a graph management, where graphs simply point to a set of columns inside the datastore * that contain the actual plot data! * - * If you call the \link JKQTBasePlotter::JKQTBasePlotter() constructor \endlink with no arguments, it will create an internal + * If you call the JKQTBasePlotter::JKQTBasePlotter() constructor with no arguments, it will create an internal * datastore object and you can start adding data by using getDatastore(). If you have an external JKQTPDatastore object you can * give it as parameter to the constructor or use one of the other methods: * - useExternalDatastore(): \copybrief JKQTBasePlotter::useExternalDatastore() diff --git a/lib/jkqtplotter/jkqtpdatastorage.h b/lib/jkqtplotter/jkqtpdatastorage.h index 74cbc60c53..cb4749daae 100644 --- a/lib/jkqtplotter/jkqtpdatastorage.h +++ b/lib/jkqtplotter/jkqtpdatastorage.h @@ -105,6 +105,7 @@ enum class JKQTPDatastoreItemFormat { * matrix with \c width columns and \c height rows. * - copyColumn() duplicates an existing column * - addCopiedColumn() copies an external dataset into the datastore. e.g. with code like: + * * \code{.cpp} * QVector X, Y; * const int Ndata=100; @@ -118,6 +119,7 @@ enum class JKQTPDatastoreItemFormat { * linegraph->setXColumn(datastore->addCopiedColumn(X, "x")); * linegraph->setYColumn(datastore->addCopiedColumn(Y, "y")); * \endcode + * * - addLinearColumn() adds a column with linearly increasing numbers (in a given range) * - addLogColumn() and addDecadeLogColumn() add columns with logarithmically spaced values * - addLinearGridColumns() adds two columns which represent x- and y- coordinates of points diff --git a/lib/jkqtplotter/jkqtplotter_configmacros.h b/lib/jkqtplotter/jkqtplotter_configmacros.h index 0086e1ea5c..03daf4e02b 100644 --- a/lib/jkqtplotter/jkqtplotter_configmacros.h +++ b/lib/jkqtplotter/jkqtplotter_configmacros.h @@ -23,6 +23,10 @@ #include +// necessary to add this define to the Doxygen autodoc!!! +#ifdef DOXYGEN +# define JKQTPLOTTER_COMPILE_WITHOUT_PRINTSUPPORT +#endif /*! \def JKQTPLOTTER_COMPILE_WITHOUT_PRINTSUPPORT \ingroup jkqtpplottersupprt \brief This is defined if JKQtPlotter shall be compiled without print-support, or print-support is not available. @@ -46,9 +50,13 @@ #endif +// necessary to add this define to the Doxygen autodoc!!! +#ifdef DOXYGEN +# define JKQTPLOTTER_WORKAROUND_QGADGET_BUG +#endif /*! \def JKQTPLOTTER_WORKAROUND_QGADGET_BUG \ingroup jkqtpplottersupprt - \brief This \c #define is used to work around a bug in Qt when compiled with CLANG (see https://bugreports.qt.io/browse/QTBUG-104874): + \brief This \c \#define is used to work around a bug in Qt when compiled with CLANG (see https://bugreports.qt.io/browse/QTBUG-104874): Multiple inheritance does not work with Q_GADGET in this setup. This can be used by surrounding code that causes compile-errors due to this bug with diff --git a/lib/jkqtplotter/jkqtplotter_imexport.h b/lib/jkqtplotter/jkqtplotter_imexport.h index 3f1c54fe12..22bab3dd70 100644 --- a/lib/jkqtplotter/jkqtplotter_imexport.h +++ b/lib/jkqtplotter/jkqtplotter_imexport.h @@ -57,7 +57,11 @@ */ -/*! \def JKQTPLOTTER_LIB_IN_DLL +// necessary to add this define to the Doxygen autodoc!!! +#ifdef DOXYGEN +# define JKQTPLOTTER_LIB_IN_DLL +#endif +/*! \def JKQTPLOTTER_LIB_IN_DLL \ingroup jkqtpplottersupprt \brief declares that the application should link against a shared version of JKQTPlotter, i.e. \c JKQTPlotterSharedLib_XYZ . @@ -65,7 +69,11 @@ any application linking against \c JKQTPlotterSharedLib_XYZ. */ -/*! \def JKQTPLOTTER_LIB_EXPORT_LIBRARY +// necessary to add this define to the Doxygen autodoc!!! +#ifdef DOXYGEN +# define JKQTPLOTTER_LIB_EXPORT_LIBRARY +#endif +/*! \def JKQTPLOTTER_LIB_EXPORT_LIBRARY \ingroup jkqtpplottersupprt \brief is only defined while compiling JKQTPlotter into \c JKQTPlotterSharedLib_XYZ and ensures thet the symbols are exported. If it is not defined (e.g. while diff --git a/lib/jkqtplotter/jkqtptools.h b/lib/jkqtplotter/jkqtptools.h index 5843da2824..78a24f6033 100644 --- a/lib/jkqtplotter/jkqtptools.h +++ b/lib/jkqtplotter/jkqtptools.h @@ -304,7 +304,7 @@ public: LighterColor, InvertColor }; - /** \brif specifies how the color should change */ + /** \brief specifies how the color should change */ ColorChangeMode colorModification; /** \brief replacement color when colorModification==ColorChangeMode::ReplaceColor */ QColor targetColor; diff --git a/screenshots/jkqtplotter_cmakelink_small.png b/screenshots/jkqtplotter_cmakelink_small.png new file mode 100644 index 0000000000..5975e2c012 Binary files /dev/null and b/screenshots/jkqtplotter_cmakelink_small.png differ