JKQTPlotter trunk/v5.0.0
an extensive Qt5+Qt6 Plotter framework (including a feature-richt plotter widget, a speed-optimized, but limited variant and a LaTeX equation renderer!), written fully in C/C++ and without external dependencies
Loading...
Searching...
No Matches
jkqtptools.h
1/*
2 Copyright (c) 2008-2024 Jan W. Krieger (<jan@jkrieger.de>)
3
4
5
6 This software is free software: you can redistribute it and/or modify
7 it under the terms of the GNU Lesser General Public License as published by
8 the Free Software Foundation, either version 3 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU Lesser General Public License for more details.
15
16 You should have received a copy of the GNU Lesser General Public License
17 along with this program. If not, see <http://www.gnu.org/licenses/>.
18*/
19
20
21
22#ifndef JKQTPTOOLS_H_INCLUDED
23#define JKQTPTOOLS_H_INCLUDED
24#include "jkqtplotter/jkqtplotter_imexport.h"
25#include <QString>
26#include <QElapsedTimer>
27#include <QLocale>
28#include <cfloat>
29#include <sys/types.h>
30#include <sys/stat.h>
31#include <errno.h>
32#include <string>
33#include <iostream>
34#include <fstream>
35#include <sstream>
36#include <cstdarg>
37#include <cstdio>
38#include <cstdlib>
39#include <vector>
40#include <ctime>
41#include <cmath>
42#include <limits>
43#include <cstdint>
44#include <stdexcept>
45#include <cctype>
46#include <QColor>
47#include <QFlags>
48#include "jkqtcommon/jkqtpstringtools.h"
49#include "jkqtcommon/jkqtpdebuggingtools.h"
50#include "jkqtcommon/jkqtpmathtools.h"
51#include "jkqtmath/jkqtpalgorithms.h"
52#include "jkqtcommon/jkqtpcodestructuring.h"
53#if __cplusplus >= 202002L
54# include <version>
55#endif
56
57
58
59
60
61class JKQTPEnhancedPainter; // forward
62class JKQTBasePlotter; // forward declaration
63
64
65/** \brief used to specify teh type of graph when calling getPlotStyle()
66 * \ingroup jkqtpplottersupprt
67 */
69 Default, /*!< general graphs */
70 Barchart, /*!< barchart-type graphs */
71 Boxplot, /*!< boxplot-type graphs */
72 Filled, /*!< filled graphs */
73 Impulses, /*!< impulse-type graphs */
74 Geometric, /*!< geometric elements (e.g. rectangles, circles, lines, ...) */
75 Annotation, /*!< annotation elements */
76 FinancialPositive, /*!< financial positive elements */
77 FinancialNegative, /*!< financial negative elements */
78};
79
80/** \brief Styles in which to mark single positions during user actions in JKQTPlotter
81 * \ingroup jkqtpplottersupprt
82 */
84 jkqtpuamtCircle=0, /*!< \brief a small circle around the position to mark */
85 jkqtpuamtCrossHair=1, /*!< \brief a cross-hair to the position to mark */
86 jkqtpuamtCircleAndCrossHair=2, /*!< \brief a cross-hair to the position to mark, with a circle-marker around the actual target (i.e. combines jkqtpuamtCircle and jkqtpuamtCrossHair) */
87};
88
89
90/** \brief convert a JKQTPUserActionMarkerType to a <a href="http://doc.qt.io/qt-5/qstring.html">QString</a>
91 * \ingroup jkqtpplottersupprt
92 *
93 * \see String2JKQTPUserActionMarkerType(), JKQTPUserActionMarkerType
94 */
96/** \brief convert a <a href="http://doc.qt.io/qt-5/qstring.html">QString</a> (created by JKQTPUserActionMarkerType2String() ) to JKQTPUserActionMarkerType
97 * \ingroup jkqtpplottersupprt
98 *
99 * \see JKQTPUserActionMarkerType2String(), JKQTPUserActionMarkerType
100 */
102
103
104
105/** \brief Availble action this JKQtPlotter can perform when mouse events occur.
106 * This allows you to e.g. draw rectangles or lines over the plot and receive a signal, when the drawing finishes
107 * \ingroup jkqtpplottersupprt
108
109 */
111 jkqtpmdaPanPlotOnMove=0, /*!< \brief the user can drag the current plot window while keeping the left mouse-button pushed down (=panning), the new widow is applied/displayed whenever the mouse moves \image html drag_viewport.gif "Drag the Plot Viewport" */
112 jkqtpmdaPanPlotOnRelease, /*!< \brief the user can drag the current plot window while keeping the left mouse-button pushed down (=panning), the new widow is applied/displayed when the left mouse button is released */
113 jkqtpmdaZoomByRectangle, /*!< \brief draw a rectangle and when finish zoom to that rectangle */
114 jkqtpmdaDrawRectangleForEvent, /*!< \brief draw a rectangle and when finished execute the signal JKQTPlotter::userRectangleFinished() \image html draw_rectangle.gif "Draw Rectangle User-Action" */
115 jkqtpmdaDrawCircleForEvent, /*!< \brief draw a circle and when finished execute the signal JKQTPlotter::userCircleFinished() \image html draw_circle.gif "Draw Circle User-Action" */
116 jkqtpmdaDrawEllipseForEvent, /*!< \brief draw an ellipse and when finished execute the signal JKQTPlotter::userEllipseFinished() \image html draw_ellipse.gif "Draw Ellipse User-Action" */
117 jkqtpmdaDrawLineForEvent, /*!< \brief draw a line and when finished execute the signal JKQTPlotter::userLineFinished() \image html draw_line.gif "Draw Lines User-Action" */
118 jkqtpmdaScribbleForEvents, /*!< \brief let the user scribble on the plot (left mouse button is kept pressed) and call JKQTPlotter::userScribbleClick() for each new position */
119 jkqtpmdaToolTipForClosestDataPoint, /*!< \brief shows a tooltip with data of the closest data-point in the plot \image html tooltiptool.gif */
120 jkqtpmdaRuler, /*!< \brief shows a ruler over the plot, which measures delta X, delta Y and sqrt(dx^2+dy^2) \image html rulertool.gif */
121};
122
123
124/** \brief convert a JKQTPMouseDragActions to a <a href="http://doc.qt.io/qt-5/qstring.html">QString</a>
125 * \ingroup jkqtpplottersupprt
126 *
127 * \see String2JKQTPMouseDragActions(), JKQTPMouseDragActions
128 */
130/** \brief convert a <a href="http://doc.qt.io/qt-5/qstring.html">QString</a> (created by JKQTPMouseDragActions2String() ) to JKQTPMouseDragActions
131 * \ingroup jkqtpplottersupprt
132 *
133 * \see JKQTPMouseDragActions2String(), JKQTPMouseDragActions
134 */
136
137/** \brief actions that can be bound to a double-click of the mouse
138 * \ingroup jkqtpplottersupprt
139 */
141 jkqtpdcaClickZoomsIn=0, /*!< \brief a double-click zooms into the plot at the current mouse location */
142 jkqtpdcaClickZoomsOut, /*!< \brief a double-click zooms out of the plot at the current mouse location */
143 jkqtpdcaClickOpensContextMenu, /*!< \brief a double-click opens the context menu */
144 jkqtpdcaClickOpensSpecialContextMenu, /*!< \brief a double-click opens the special context menu \see setSpecialContextMenu() */
145 jkqtpdcaClickMovesViewport, /*!< \brief a double-click centers the x/y-range around the clicked position */
146};
147
148/** \brief convert a JKQTPMouseDoubleClickActions to a <a href="http://doc.qt.io/qt-5/qstring.html">QString</a>
149 * \ingroup jkqtpplottersupprt
150 *
151 * \see String2JKQTPMouseDoubleClickActions(), JKQTPMouseDoubleClickActions
152 */
154/** \brief convert a <a href="http://doc.qt.io/qt-5/qstring.html">QString</a> (created by JKQTPMouseDoubleClickActions2String() ) to JKQTPMouseDoubleClickActions
155 * \ingroup jkqtpplottersupprt
156 *
157 * \see JKQTPMouseDoubleClickActions2String(), JKQTPMouseDoubleClickActions
158 */
160
161/** \brief actions that can be bound to a mouse wheel event
162 * \ingroup jkqtpplottersupprt
163 */
165 jkqtpmwaZoomByWheel=0, /*!< \brief use the mouse-wheel for zooming */
166 jkqtpmwaPanByWheel, /*!< \brief use the mouse-wheel for panning the plot */
167 jkqtpmwaZoomByWheelAndTrackpadPan, /*!< \brief use the mouse-wheel for zooming. In addition, this tries to recognize track-pad pan gestures and applies them. \note This is needed, because Qt converts track-pad zoom AND pan gestures to wheelEvents, but does not provide the source. Therefore a heuristics is required to interpret both! */
168};
169
170/** \brief convert a JKQTPMouseWheelActions to a <a href="http://doc.qt.io/qt-5/qstring.html">QString</a>
171 * \ingroup jkqtpplottersupprt
172 *
173 * \see String2JKQTPMouseWheelActions(), JKQTPMouseWheelActions
174 */
176/** \brief convert a <a href="http://doc.qt.io/qt-5/qstring.html">QString</a> (created by JKQTPMouseWheelActions2String() ) to JKQTPMouseWheelActions
177 * \ingroup jkqtpplottersupprt
178 *
179 * \see JKQTPMouseWheelActions2String(), JKQTPMouseWheelActions
180 */
182
183/** \brief Availble action this JKQtPlotter can perform when mouse events occur.
184 * This allows you to e.g. draw rectangles or lines over the plot and receive a signal, when the drawing finishes
185 * \ingroup jkqtpplottersupprt
186
187 */
189 jkqtpmmaToolTipForClosestDataPoint /*!< \brief shows a tooltip with data of the closest data-point in the plot \image html tooltiptool.gif */
191
192
193/** \brief convert a JKQTPMouseDragActions to a <a href="http://doc.qt.io/qt-5/qstring.html">QString</a>
194 * \ingroup jkqtpplottersupprt
195 *
196 * \see String2JKQTPMouseDragActions(), JKQTPMouseDragActions
197 */
199/** \brief convert a <a href="http://doc.qt.io/qt-5/qstring.html">QString</a> (created by JKQTPMouseDragActions2String() ) to JKQTPMouseDragActions
200 * \ingroup jkqtpplottersupprt
201 *
202 * \see JKQTPMouseDragActions2String(), JKQTPMouseDragActions
203 */
205
206/** \brief modes for the context menu
207 * \ingroup jkqtpplottersupprt
208 */
210 jkqtpcmmStandardContextMenu=0, /*!< \brief only show the standard context menu \image html zoomin_mouse_contextmenu.gif "Zooming with the mouse" */
211 jkqtpcmmSpecialContextMenu, /*!< \brief only show the special context menu \see setSpecialContextMenu() */
212 jkqtpcmmStandardAndSpecialContextMenu, /*!< \brief show the standard context menu, with the special context menu incorporated \see setSpecialContextMenu() */
213 jkqtpcmmNoContextMenu, /*!< \brief don't show a context menu at all */
214};
215
216/** \brief convert a JKQTPContextMenuModes to a <a href="http://doc.qt.io/qt-5/qstring.html">QString</a>
217 * \ingroup jkqtpplottersupprt
218 *
219 * \see String2JKQTPContextMenuModes(), JKQTPContextMenuModes
220 */
222/** \brief convert a <a href="http://doc.qt.io/qt-5/qstring.html">QString</a> (created by JKQTPContextMenuModes2String() ) to JKQTPContextMenuModes
223 * \ingroup jkqtpplottersupprt
224 *
225 * \see JKQTPContextMenuModes2String(), JKQTPContextMenuModes
226 */
228
229/** \brief data structure for storage of assigned JKQTPMouseDragActions \see JKQTPMouseDragActionsHashMapIterator
230 * \ingroup jkqtpplottersupprt */
231typedef QHash<QPair<Qt::MouseButton,Qt::KeyboardModifiers>, JKQTPMouseDragActions> JKQTPMouseDragActionsHashMap;
232/** \brief iterator for JKQTPMouseDragActionsHashMap \see JKQTPMouseDragActionsHashMap
233 * \ingroup jkqtpplottersupprt */
234typedef JKQTPMouseDragActionsHashMap::const_iterator JKQTPMouseDragActionsHashMapIterator;
235
236/** \brief data structure for storage of assigned JKQTPMouseWheelActions \see JKQTPMouseWheelActionsHashMapIterator
237 * \ingroup jkqtpplottersupprt */
238typedef QHash<Qt::KeyboardModifiers, JKQTPMouseWheelActions> JKQTPMouseWheelActionsHashMap;
239/** \brief iterator for JKQTPMouseWheelActionsHashMap \see JKQTPMouseWheelActionsHashMap
240 * \ingroup jkqtpplottersupprt */
241typedef JKQTPMouseWheelActionsHashMap::const_iterator JKQTPMouseWheelActionsHashMapIterator;
242
243/** \brief data structure for storage of assigned JKQTPMouseDoubleClickActions \see JKQTPMouseDoubleClickActionsHashMapIterator
244 * \ingroup jkqtpplottersupprt */
245typedef QHash<QPair<Qt::MouseButton,Qt::KeyboardModifiers>, JKQTPMouseDoubleClickActions> JKQTPMouseDoubleClickActionsHashMap;
246/** \brief iterator for JKQTPMouseDoubleClickActionsHashMap \see JKQTPMouseDoubleClickActionsHashMap
247 * \ingroup jkqtpplottersupprt */
248typedef JKQTPMouseDoubleClickActionsHashMap::const_iterator JKQTPMouseDoubleClickActionsHashMapIterator;
249
250
251/** \brief data structure for storage of assigned JKQTPMouseMoveActions \see JKQTPMouseMoveActionsHashMapIterator
252 * \ingroup jkqtpplottersupprt */
253typedef QHash<Qt::KeyboardModifiers, JKQTPMouseMoveActions> JKQTPMouseMoveActionsHashMap;
254/** \brief iterator for JKQTPMouseMoveActionsHashMap \see JKQTPMouseMoveActionsHashMap
255 * \ingroup jkqtpplottersupprt */
256typedef JKQTPMouseMoveActionsHashMap::const_iterator JKQTPMouseMoveActionsHashMapIterator;
257
258/** \brief Specifies how a fill-color is derived from a given color
259 * \ingroup jkqtpplotter_styling_classes
260
261 */
263public:
265 JKQTPFFCMFullyTransparentColor, /*!< \brief fully transparent color */
266 JKQTPFFCMNoColor=JKQTPFFCMFullyTransparentColor, /*!< \brief fully transparent color */
267 JKQTPFFCMBlack, /*!< \brief fill with black */
268 JKQTPFFCMGrey75, /*!< \brief fill with 75% grey */
269 JKQTPFFCMGrey50, /*!< \brief fill with 50% grey */
270 JKQTPFFCMGrey25, /*!< \brief fill with 25% grey */
271 JKQTPFFCMWhite, /*!< \brief fill with white */
272 JKQTPFFCMBlackTransparent, /*!< \brief fill with black, slightly transparent */
273 JKQTPFFCMGrey75Transparent, /*!< \brief fill with 75% grey, slightly transparent */
274 JKQTPFFCMGrey50Transparent, /*!< \brief fill with 50% grey, slightly transparent */
275 JKQTPFFCMGrey25Transparent, /*!< \brief fill with 25% grey, slightly transparent */
276 JKQTPFFCMWhiteTransparent, /*!< \brief fill with white, slightly transparent */
277 JKQTPFFCMSameColor, /*!< \brief fill with the same color */
278 JKQTPFFCMSameNonTransparentColor, /*!< \brief fill with the same color, but remove any transparency (if any) */
279 JKQTPFFCMSameMoreTransparentColor, /*!< \brief fill with the a partly transparent color */
280 JKQTPFFCMSameEvenMoreTransparentColor, /*!< \brief fill with the a more transparent color than JKQTPFFCMMoreTransparentColor */
281 JKQTPFFCMSameLessTransparentColor, /*!< \brief fill with the a partly transparent color */
282 JKQTPFFCMSameEvenLessTransparentColor, /*!< \brief fill with the a more transparent color than JKQTPFFCMLessTransparentColor*/
283 JKQTPFFCMInvertedColor, /*!< \brief fill with the inverted color */
284 JKQTPFFCMInvertedTransparentColor, /*!< \brief fill with the inverted color, slightly transparent */
285 JKQTPFFCMInvertedNonTransparentColor, /*!< \brief fill with the inverted color, non-transparent (even if the basecolor had some transparency) */
286 JKQTPFFCMLighterColor, /*!< \brief fill with the a lighter color */
287 JKQTPFFCMEvenLighterColor, /*!< \brief fill with the an even lighter color than JKQTPFFCMLighterColor */
288 JKQTPFFCMDarkerColor, /*!< \brief fill with the a darker color */
289 JKQTPFFCMEvenDarkerColor, /*!< \brief fill with the an even darker color than JKQTPFFCMDarkerColor */
290 JKQTPFFCMLighterAndTransparentColor, /*!< \brief fill with the a lighter color, that is in addition a bit transparent */
291 JKQTPFFCMEvenLighterAndTransparentColor, /*!< \brief fill with the an even lighter color than JKQTPFFCMLighterColor, that is in addition a bit transparent */
292 JKQTPFFCMDarkerAndTransparentColor, /*!< \brief fill with the a darker color, that is in addition a bit transparent */
293 JKQTPFFCMEvenDarkerAndTransparentColor, /*!< \brief fill with the an even darker color than JKQTPFFCMDarkerColor, that is in addition a bit transparent */
294 JKQTPFFCMLighterAndNonTransparentColor, /*!< \brief fill with the a lighter color, that is non-transparent (even if the basecolor had some transparency) */
295 JKQTPFFCMEvenLighterAndNonTransparentColor, /*!< \brief fill with the an even lighter color than JKQTPFFCMLighterColor, that is non-transparent (even if the basecolor had some transparency) */
296 JKQTPFFCMDarkerAndNonTransparentColor, /*!< \brief fill with the a darker color, that is non-transparent (even if the basecolor had some transparency) */
297 JKQTPFFCMEvenDarkerAndNonTransparentColor, /*!< \brief fill with the an even darker color than JKQTPFFCMDarkerColor, that is non-transparent (even if the basecolor had some transparency) */
298
299 JKQTPFFCMmax=JKQTPFFCMEvenDarkerAndNonTransparentColor
300 };
301 /** \brief for compatibility: use one of several predefined settings to iitialize object */
303 /** \brief initialize object from a string (calls fromString() ) */
304 JKQTPColorDerivationMode(const QString& mode);
305
314 /** \brief specifies how the color should change */
316 /** \brief replacement color when colorModification==ColorChangeMode::ReplaceColor */
318 /** \brief strength of colorModification-settings, such as ColorChangeMode::DarkerColor or ColorChangeMode::LighterColor */
320
327
328 /** \brief specifies how the transparency of the color chould change */
330 /** \brief target transparency (0:non-transparennt .. 1:fully-transparent, i.e. 1-alphaF!!!) for TransparencyChangeMode::ReplaceTransparency */
332 /** \brief strength of transparencyModification-settings, such as TransparencyChangeMode::MoreTransparent or TransparencyChangeMode::LessTransparent */
334
335 /** \brief convert object contents into a string */
336 QString toString() const;
337 /** \brief read values from a string */
338 static JKQTPColorDerivationMode fromString(const QString& mode);
339 /** \brief apply the modifications encoded in this object to a given color */
340 QColor apply(const QColor& basecolor) const;
341
342 /** \brief compares two objects for equality */
343 bool operator==(const JKQTPColorDerivationMode& other) const;
344
345 /** \brief determines whether the current object equals a default-initialized object with the given parameter, i.e. this is equivalent to calling \code operato==(JKQTPColorDerivationMode(other)) \endcode */
346 bool operator==(const PredefinedModes& other) const;
347
348};
349
350/** \brief use a JKQTPColorDerivationMode to derive a color from \a col as specified
351 * \ingroup jkqtpplotter_styling_classes
352 *
353 * \param mode the mode of how to modify the given color \a basecolor
354 * \param basecolor the color in which to base the derivation
355 *
356 * \see JKQTPColorDerivationMode
357 */
359
360/** \brief construct a QColor, based on the given \a color, but with alpha set to the specified value \a alphaF
361 * \ingroup jkqtpplotter_styling_classes
362 * \see QColorWithAlpha()
363 */
364inline QColor QColorWithAlphaF(const QColor& color, qreal alphaF) {
365 QColor c=color;
366 c.setAlphaF(alphaF);
367 return c;
368}
369
370/** \brief construct a QColor, based on the given \a color, but with alpha set to the specified value \a alpha
371 * \ingroup jkqtpplotter_styling_classes
372 * \see QColorWithAlphaF()
373 */
374inline QColor QColorWithAlpha(const QColor& color, int alpha) {
375 QColor c=color;
376 c.setAlpha(alpha);
377 return c;
378}
379
380/** \brief convert a JKQTPColorDerivationMode to a <a href="http://doc.qt.io/qt-5/qstring.html">QString</a>
381 * \ingroup jkqtpplotter_styling_classes
382 *
383 * \see String2JKQTPColorDerivationMode(), JKQTPColorDerivationMode
384 */
386/** \brief convert a <a href="http://doc.qt.io/qt-5/qstring.html">QString</a> (created by JKQTPColorDerivationMode2String() ) to JKQTPColorDerivationMode
387 * \ingroup jkqtpplotter_styling_classes
388 *
389 * \see JKQTPColorDerivationMode2String(), JKQTPColorDerivationMode
390 */
392
393
394/** \brief drawing flags for a coordinate axis
395 * \ingroup jkqtpplottersupprt
396 *
397 * \note This enum provides the elements for \ref JKQTPCADrawMode, which is actually used
398 * throughout the code.
399 *
400 * \see JKQTPCADrawMode, JKQTPCoordinateAxisStyle
401*/
403 JKQTPCADMLine=0x01, /*!< \brief draw axis as thick line \image html axisstyle/JKQTPCADMLine.png */
404 JKQTPCADMTicks=0x02, /*!< \brief draw axis ticks \image html axisstyle/JKQTPCADMTicks.png */
405 JKQTPCADMTickLabels=0x04, /*!< \brief draw axis tick labels \image html axisstyle/JKQTPCADMTickLabels.png */
406 JKQTPCADMAxisLabel=0x08, /*!< \brief draw axis axis Label \image html axisstyle/JKQTPCADMAxisLabel.png */
407
408 JKQTPCADMMaxArrow=0x0100, /*!< \brief an open arrow at the max-end of the axis \image html axisstyle/JKQTPCADMMaxArrow.png */
409 JKQTPCADMMaxFilledArrow=0x0200, /*!< \brief draw a filled arrow at the max-end of the axis \image html axisstyle/JKQTPCADMMaxFilledArrow.png */
410 JKQTPCADMMinArrow=0x1000, /*!< \brief an open arrow at the end of the axis at the min-end of the axis \image html axisstyle/JKQTPCADMMinArrow.png */
411 JKQTPCADMMinFilledArrow=0x2000, /*!< \brief draw a filled arrow at the min-end of the axis \image html axisstyle/JKQTPCADMMinFilledArrow.png */
412
413 JKQTPCADMLineTicksTickLabels=JKQTPCADMLine|JKQTPCADMTicks|JKQTPCADMTickLabels, /*!< \brief draw axis with ticks, line and tick labels \image html axisstyle/JKQTPCADMLineTicksTickLabels.png */
414 JKQTPCADMLineTicks=JKQTPCADMLine|JKQTPCADMTicks, /*!< \brief draw axis with ticks and line \image html axisstyle/JKQTPCADMLineTicks.png */
415 JKQTPCADMTicksTickLabelsAxisLabel=JKQTPCADMTicks|JKQTPCADMTickLabels|JKQTPCADMAxisLabel, /*!< \brief draw axis with ticks, tick labels and axisLabel \image html axisstyle/JKQTPCADMTicksTickLabelsAxisLabel.png */
416 JKQTPCADMTicksTickLabels=JKQTPCADMTicks|JKQTPCADMTickLabels, /*!< \brief draw axis with ticks and tick labels \image html axisstyle/JKQTPCADMTicksTickLabels.png */
417 JKQTPCADMTickLabelsAxisLabel=JKQTPCADMTickLabels|JKQTPCADMAxisLabel, /*!< \brief draw axis tick labels and axisLabel \image html axisstyle/JKQTPCADMTickLabelsAxisLabel.png */
418 JKQTPCADMnone=0x0000, /*!< \brief draw no axis \image html axisstyle/JKQTPCADMnone.png */
419 JKQTPCADMcomplete=JKQTPCADMLine|JKQTPCADMTicks|JKQTPCADMTickLabels|JKQTPCADMAxisLabel, /*!< \brief draw axis withline, ticks, ticklabels and axis label \image html axisstyle/JKQTPCADMcomplete.png */
420 JKQTPCADMcompleteMaxArrow=JKQTPCADMcomplete|JKQTPCADMMaxFilledArrow, /*!< \brief draw axis withline, ticks, ticklabels and axis label and an arrow pointing to the max-side of the axis \image html axisstyle/JKQTPCADMcompleteMaxArrow.png */
421 JKQTPCADMcompleteMinMaxArrow=JKQTPCADMcomplete|JKQTPCADMMaxFilledArrow|JKQTPCADMMinFilledArrow, /*!< \brief draw axis withline, ticks, ticklabels and axis label and arrows pointing to the min and max side of the axis \image html axisstyle/JKQTPCADMcompleteMinMaxArrow.png */
422};
423/** \brief drawing mode for a coordinate axis
424 * \ingroup jkqtplotter_basegraphserrors
425 *
426 * \qFlagsNote{JKQTPCADrawMode,JKQTPCADrawModeElements}
427 *
428 * \see JKQTPCADrawModeElements, JKQTPCoordinateAxisStyle
429 */
431Q_DECLARE_OPERATORS_FOR_FLAGS(JKQTPCADrawMode)
432
433
434
435
436/** \brief converts a JKQTPCADrawMode variable into a human-readable string
437 * \ingroup jkqtpplottersupprt
438 */
440
441/** \brief converts a string into a JKQTPCADrawMode
442 * \ingroup jkqtpplottersupprt
443 */
445
446
447/** \brief display mode for the (axis) labels
448 * \ingroup jkqtpplottersupprt */
450 JKQTPCALTdefault=0, /*!< \brief simply print the numbers \image html axisstyle/JKQTPCALTdefault.png */
451 JKQTPCALTscientific, /*!< \brief print the numbers in scientific notation, e.g. \c "1.23e-4" \image html axisstyle/JKQTPCALTscientific.png */
452 JKQTPCALTexponentCharacter, /*!< \brief print the numbers and show a unit character, i.e. 5&mu; for \f$ 5\cdot 10^{-6} \f$ , \c 3k for \f$ 3\cdot 10^3 \f$ ... \image html axisstyle/JKQTPCALTexponentCharacter.png */
453 JKQTPCALTexponent, /*!< \brief show numbers in exponential for, e.g. \f$ 3\cdot 10^5 \f$ ... \image html axisstyle/JKQTPCALTexponent.png */
454 JKQTPCALTprintf, /*!< \brief generate axis label from an arbitrary "printf" formatting string (see e.g. https://en.wikipedia.org/wiki/Printf_format_string ). The first data parameter is the tick value as \c double an the second is tickUnitName as string. The following image shows an example for \c "y=%+.2f": \image html axisstyle/JKQTPCALTprintf.png */
455 JKQTPCALTdate, /*!< \brief show numbers as dates \image html axisstyle/JKQTPCALTdate.png */
456 JKQTPCALTtime, /*!< \brief show numbers as times \image html axisstyle/JKQTPCALTtime.png*/
457 JKQTPCALTdatetime, /*!< \brief show numbers as times \image html axisstyle/JKQTPCALTdatetime.png */
458 JKQTPCALTfrac, /*!< \brief show numbers as fraction, the number is first rounded to the given precision and then a fraction is calculated and displayed like \f$ \frac{1}{2} \f$ \image html axisstyle/JKQTPCALTfrac.png */
459 JKQTPCALTslashfrac, /*!< \brief show numbers as fraction, the number is first rounded to the given precision and then a fraction is calculated and displayed like \c 1/2 \image html axisstyle/JKQTPCALTslashfrac.png */
460 JKQTPCALTsfrac, /*!< \brief show numbers as fraction, the number is first rounded to the given precision and then a fraction is calculated and displayed using \c \\sfrac{1}{2} \image html axisstyle/JKQTPCALTsfrac.png */
461 JKQTPCALTintfrac, /*!< \brief show numbers as integral+fraction, the number is first rounded to the given precision and then a fraction is calculated and displayed like \f$ -3\frac{1}{2} \f$ \image html axisstyle/JKQTPCALTintfrac.png */
462 JKQTPCALTintslashfrac, /*!< \brief show numbers as integral+fraction, the number is first rounded to the given precision and then a fraction is calculated and displayed like \c 1/2 \image html axisstyle/JKQTPCALTintslashfrac.png */
463 JKQTPCALTintsfrac, /*!< \brief show numbers as integral+fraction, the number is first rounded to the given precision and then a fraction is calculated and displayed using \c \\sfrac{1}{2} \image html axisstyle/JKQTPCALTintsfrac.png */
464#if defined(__cpp_lib_format) || DOXYGEN
465 JKQTPCALTformat, /*!< \brief generate axis label from an arbitrary "std::format" formatting string (see e.g. https://en.cppreference.com/w/cpp/utility/format/formatter#Standard_format_specification ). The first data parameter is the tick value as \c double an the second is tickUnitName as string. The following image shows an example for \c "\\texttt{{ y={:*^+8.1f}}}": \image html axisstyle/JKQTPCALTformat.png
466 \b NOte: This option is only available for C++20 and above, use the CMake option \c JKQtPlotter_ENABLED_CXX20=ON if your compiler supports this. */
467#endif
471
472
473
474/** \brief mode of the axis ticks
475 * \ingroup jkqtpplottersupprt */
477 JKQTPLTMLinOrPower=0, /*!< \brief linear, or log, depending on whether the axis is log \image html axisstyle/JKQTPLTMLinOrPower.png */
478 JKQTPLTMLin, /*!< \brief always linear (even for log-axes) \image html axisstyle/JKQTPLTMLin.png */
479 JKQTPLTMPower, /*!< \brief powers (of the log-base) \image html axisstyle/JKQTPLTMPower.png */
480
483
484/** \brief converts a JKQTPLabelTickMode variable into a human-readable string
485 * \ingroup jkqtpplottersupprt
486 */
488
489/** \brief converts a string into a JKQTPLabelTickMode
490 * \ingroup jkqtpplottersupprt
491 */
493
494
495/** \brief converts a JKQTPCALabelType variable into a human-readable string
496 * \ingroup jkqtpplottersupprt
497 */
499
500/** \brief converts a string into a JKQTPCALabelType
501 * \ingroup jkqtpplottersupprt
502 */
504
505/** \brief position of the axis labels
506 * \ingroup jkqtpplottersupprt
507 */
509 JKQTPLabelMin=0, /*!< \brief the axis label is near the min value of the axis (left/bottom)
510 \image html labelstyles/JKQTPLabelMin.png
511 \image html labelstyles/JKQTPLabelMin_zeroaxis.png */
512 JKQTPLabelMax, /*!< \brief the axis label is near the max value of the axis (right/top)
513 \image html labelstyles/JKQTPLabelMax.png
514 \image html labelstyles/JKQTPLabelMax_zeroaxis.png */
515 JKQTPLabelCenter, /*!< \brief the label is at the center of the axis
516 \image html labelstyles/JKQTPLabelCenter.png
517 \image html labelstyles/JKQTPLabelCenter_zeroaxis.png */
518 JKQTPLabelMinBesides, /*!< \brief the axis label is near the min value of the axis (left/bottom), but besides the axis tip
519 \image html labelstyles/JKQTPLabelMinBesides.png
520 \image html labelstyles/JKQTPLabelMinBesides_zeroaxis.png */
521 JKQTPLabelMaxBesides, /*!< \brief the axis label is near the max value of the axis (right/top), but besides the axis tip
522 \image html labelstyles/JKQTPLabelMaxBesides.png
523 \image html labelstyles/JKQTPLabelMaxBesides_zeroaxis.png */
526
527
528/** \brief converts a JKQTPLabelPosition variable into a human-readable string
529 * \ingroup jkqtpplottersupprt
530 */
532
533/** \brief converts a string into a JKQTPLabelPosition
534 * \ingroup jkqtpplottersupprt
535 */
537
538/** \brief position of the key
539 * \ingroup jkqtpplottersupprt
540 *
541 * \see JKQTPKeyPosition, JKQTPKeyStyle, JKQTPKeyBase, JKQTPGetTypicalKeyPositions()
542 */
544 JKQTPKeyInside =0x0001, /*!< \brief key is drawn inside the plot rectangle */
545 JKQTPKeyOutsideTop =0x0010, /*!< \brief key is drawn outside and above of the plot rectangle */
546 JKQTPKeyOutsideBottom=0x0020, /*!< \brief key is drawn outside and below of the plot rectangle */
547 JKQTPKeyOutsideLeft =0x0040, /*!< \brief key is drawn outside and on the left of the plot rectangle */
548 JKQTPKeyOutsideRight =0x0080, /*!< \brief key is drawn outside and on the rightof the plot rectangle */
549 JKQTPKeyLeft =0x0100, /*!< \brief key is drawn to the left */
550 JKQTPKeyHCenter =0x0200, /*!< \brief key is drawn to the horizontal center */
551 JKQTPKeyRight =0x0400, /*!< \brief key is drawn to the right */
552 JKQTPKeyTop =0x1000, /*!< \brief key is drawn to the top */
553 JKQTPKeyVCenter =0x2000, /*!< \brief key is drawn to the vertical center */
554 JKQTPKeyBottom =0x4000, /*!< \brief key is drawn to the bottom */
555
556
557 JKQTPKeyOutsideTopRight=JKQTPKeyOutsideTop|JKQTPKeyBottom|JKQTPKeyRight, /*!< \brief the key is positioned above the graph, on the right
558 \image html keypositions/JKQTPKeyOutsideTopRight.png */
559 JKQTPKeyOutsideTopLeft=JKQTPKeyOutsideTop|JKQTPKeyBottom|JKQTPKeyLeft, /*!< \brief the key is positioned above the graph, on the left
560 \image html keypositions/JKQTPKeyOutsideTopLeft.png */
561 JKQTPKeyOutsideTopCenter=JKQTPKeyOutsideTop|JKQTPKeyBottom|JKQTPKeyHCenter, /*!< \brief the key is positioned above the graph, in the center
562 \image html keypositions/JKQTPKeyOutsideTopCenter.png */
563 JKQTPKeyOutsideBottomLeft=JKQTPKeyOutsideBottom|JKQTPKeyTop|JKQTPKeyLeft, /*!< \brief the key is positioned below the graph, on the left
564 \image html keypositions/JKQTPKeyOutsideBottomLeft.png */
565 JKQTPKeyOutsideBottomRight=JKQTPKeyOutsideBottom|JKQTPKeyTop|JKQTPKeyRight, /*!< \brief the key is positioned below the graph, on the right
566 \image html keypositions/JKQTPKeyOutsideBottomRight.png */
567 JKQTPKeyOutsideBottomCenter=JKQTPKeyOutsideBottom|JKQTPKeyTop|JKQTPKeyHCenter, /*!< \brief the key is positioned below the graph, in the center
568 \image html keypositions/JKQTPKeyOutsideBottomCenter.png */
569 JKQTPKeyOutsideLeftTop=JKQTPKeyOutsideLeft|JKQTPKeyTop|JKQTPKeyRight, /*!< \brief the key is positioned on the left side of the graph, towards the top
570 \image html keypositions/JKQTPKeyOutsideLeftTop.png */
571 JKQTPKeyOutsideLeftCenter=JKQTPKeyOutsideLeft|JKQTPKeyVCenter|JKQTPKeyRight, /*!< \brief the key is positioned on the left side of the graph, in the center
572 \image html keypositions/JKQTPKeyOutsideLeftCenter.png */
573 JKQTPKeyOutsideLeftBottom=JKQTPKeyOutsideLeft|JKQTPKeyBottom|JKQTPKeyRight, /*!< \brief the key is positioned on the left side of the graph, towards the Bottom
574 \image html keypositions/JKQTPKeyOutsideLeftBottom.png */
575 JKQTPKeyOutsideRightBottom=JKQTPKeyOutsideRight|JKQTPKeyBottom|JKQTPKeyLeft, /*!< \brief the key is positioned on the right side of the graph, towards the bottom
576 \image html keypositions/JKQTPKeyOutsideRightBottom.png */
577 JKQTPKeyOutsideRightCenter=JKQTPKeyOutsideRight|JKQTPKeyVCenter|JKQTPKeyLeft, /*!< \brief the key is positioned on the right side of the graph, in the center
578 \image html keypositions/JKQTPKeyOutsideRightCenter.png */
579 JKQTPKeyOutsideRightTop=JKQTPKeyOutsideRight|JKQTPKeyTop|JKQTPKeyLeft, /*!< \brief the key is positioned on the left side of the graph, towards the top
580 \image html keypositions/JKQTPKeyOutsideRightTop.png */
581 JKQTPKeyInsideTopRight=JKQTPKeyInside|JKQTPKeyTop|JKQTPKeyRight, /*!< \brief the key is positioned inside on the top-right
582 \image html keypositions/JKQTPKeyInsideTopRight.png */
583 JKQTPKeyInsideTopLeft=JKQTPKeyInside|JKQTPKeyTop|JKQTPKeyLeft, /*!< \brief the key is positioned inside on the top-left
584 \image html keypositions/JKQTPKeyInsideTopLeft.png */
585 JKQTPKeyInsideBottomLeft=JKQTPKeyInside|JKQTPKeyBottom|JKQTPKeyLeft, /*!< \brief the key is positioned inside on the bottom-left
586 \image html keypositions/JKQTPKeyInsideBottomLeft.png */
587 JKQTPKeyInsideBottomRight=JKQTPKeyInside|JKQTPKeyBottom|JKQTPKeyRight, /*!< \brief the key is positioned inside on the bottom-right
588 \image html keypositions/JKQTPKeyInsideBottomRight.png */
589 JKQTPKeyInsideTop=JKQTPKeyInside|JKQTPKeyTop|JKQTPKeyHCenter, /*!< \brief the key is positioned inside on the top-center
590 \image html keypositions/JKQTPKeyInsideTop.png */
591 JKQTPKeyInsideBottom=JKQTPKeyInside|JKQTPKeyBottom|JKQTPKeyHCenter, /*!< \brief the key is positioned inside on the bottom-center
592 \image html keypositions/JKQTPKeyInsideBottom.png */
593 JKQTPKeyInsideLeft=JKQTPKeyInside|JKQTPKeyVCenter|JKQTPKeyLeft, /*!< \brief the key is positioned inside on the center-left
594 \image html keypositions/JKQTPKeyInsideLeft.png */
595 JKQTPKeyInsideRight=JKQTPKeyInside|JKQTPKeyVCenter|JKQTPKeyRight, /*!< \brief the key is positioned inside on the center-right
596 \image html keypositions/JKQTPKeyInsideRight.png */
598
600/** \brief position of the key
601 * \ingroup jkqtpplottersupprt
602 *
603 * \qFlagsNote{JKQTPKeyPosition,JKQTPKeyPositions}
604 *
605 * \see JKQTPKeyPositions, JKQTPKeyStyle, JKQTPKeyBase, JKQTPGetTypicalKeyPositions()
606 */
608Q_DECLARE_OPERATORS_FOR_FLAGS(JKQTPKeyPosition)
609
610/** \brief returns a list of typical positions of the main key
611 * \ingroup jkqtpplottersupprt
612 *
613 * \qFlagsNote{JKQTPKeyPosition,JKQTPKeyPositions}
614 *
615 * \see JKQTPKeyPositions, JKQTPKeyStyle, JKQTPKeyBase
616 */
618
619/** \brief converts a JKQTPLabelPosition variable into a human-readable string
620 * \ingroup jkqtpplottersupprt
621 */
623
624/** \brief converts a string into a JKQTPLabelPosition
625 * \ingroup jkqtpplottersupprt
626 */
628
629/** \brief layout of the key
630 * \ingroup jkqtpplottersupprt
631 */
633 JKQTPKeyLayoutOneColumn=0, /*!< \brief the key consists of one column. This may overflow the available space, use JKQTPKeyLayoutMultiColumn or JKQTPKeyLayoutMultiRow if you have many entries!
634 \image html keylayouts/JKQTPKeyLayout_one_column.png
635 \image html keylayouts/JKQTPKeyLayout_outsidebottom_one_column.png
636 \image html keylayouts/JKQTPKeyLayout_outsideright_one_column.png */
637 JKQTPKeyLayoutOneRow, /*!< \brief the key consists of one row. This may overflow the available space, use JKQTPKeyLayoutMultiColumn or JKQTPKeyLayoutMultiRow if you have many entries!
638 \image html keylayouts/JKQTPKeyLayout_one_row.png
639 \image html keylayouts/JKQTPKeyLayout_outsidebottom_one_row.png
640 \image html keylayouts/JKQTPKeyLayout_outsideright_one_row.png */
641 JKQTPKeyLayoutMultiColumn, /*!< \brief the key items are distributed over multiple columns that fill the available space, (top->bottom, top->bottom, ...)
642 \image html keylayouts/JKQTPKeyLayout_multi_column.png
643 \image html keylayouts/JKQTPKeyLayout_outsidebottom_multi_column.png
644 \image html keylayouts/JKQTPKeyLayout_outsideright_multi_column.png */
645 JKQTPKeyLayoutMultiRow, /*!< \brief the key items are distributed over multiple rows that fill the available space (left->right,left->right,...)
646 \image html keylayouts/JKQTPKeyLayout_multi_row.png
647 \image html keylayouts/JKQTPKeyLayout_outsidebottom_multi_row.png
648 \image html keylayouts/JKQTPKeyLayout_outsideright_multi_row.png */
649
652
653
654
655/** \brief converts a JKQTPKeyLayout variable into a human-readable string
656 * \ingroup jkqtpplottersupprt
657 */
659
660/** \brief converts a String into a JKQTPKeyLayout
661 * \ingroup jkqtpplottersupprt
662 */
664
665
666
667/** \brief used to represent the position of other graphs in \ref jkqtplotter_base_saveprint
668 * \ingroup jkqtpplottersupprt
669 * \internal
670 */
672 /** \brief logic x-position of a graph, relative to the current JKQtPlotter */
673 size_t x;
674 /** \brief logic y-position of a graph, relative to the current JKQtPlotter */
675 size_t y;
676 /** \brief JKQTBasePlotter */
678};
679
680
681
682
683/** \brief specifies the plot styles for the error information, e.g. error bars, boxes, lines ...
684 * \ingroup jkqtplotter_basegraphserrors
685 *
686 * \note This enum provides the elements for \ref JKQTPErrorPlotstyle, which is actually used
687 * throughout the code.
688 *
689 * \see JKQTPErrorPlotstyle, JKQTPXGraphErrorData, JKQTPYGraphErrorData
690 */
692 JKQTPNoError=0x00, /*!< \brief don't show error information \image html errorindicators/JKQTPNoError.png */
693 JKQTPErrorSimpleBars=0x01, /*!< \brief simplified error bars for each data point \image html errorindicators/JKQTPErrorSimpleBars.png */
694 JKQTPErrorLines=0x04, /*!< \brief a second and third graph line above and below the actual data which indicates the error value \image html errorindicators/JKQTPErrorLines.png */
695 JKQTPErrorPolygons=0x08, /*!< \brief line error lines, but with filled range in between \image html errorindicators/JKQTPErrorPolygons.png */
696 JKQTPErrorEllipses=0x10, /*!< \brief an ellipse spanned by the errors \image html errorindicators/JKQTPErrorEllipses.png */
697 JKQTPErrorBoxes=0x20, /*!< \brief a box spanned by the errors \image html errorindicators/JKQTPErrorBoxes.png */
698
699 JKQTPErrorDirectionBoth=0x000, /*!< \brief do not draw half error-bars, but in both directions (default) \image html errorindicators/JKQTPErrorBars.png */
700 JKQTPErrorDirectionOutwards=0x100, /*!< \brief used to specify the directon of half error bars: outwards pointing \image html errorindicators/JKQTPErrorHalfBarsOutwards.png */
701 JKQTPErrorDirectionInwards=0x200, /*!< \brief used to specify the directon of half error bars: inwards pointing \image html errorindicators/JKQTPErrorHalfBarsInwards.png */
702 JKQTPErrorDirectionAbove=04200, /*!< \brief used to specify the directon of half error bars: above pointing \image html errorindicators/JKQTPErrorHalfBarsAbove.png */
703 JKQTPErrorDirectionBelow=0x800, /*!< \brief used to specify the directon of half error bars: below pointing \image html errorindicators/JKQTPErrorHalfBarsBelow.png */
704 JKQTPErrorIndicatorNone=0x0000, /*!< \brief used to specify that error bars shall be un-decorated i.e. "simple error-bars" */
705 JKQTPErrorIndicatorBar=0x1000, /*!< \brief used to specify that error bars shall be decorated by bars \image html errorindicators/JKQTPErrorIndicatorBar.png */
706 JKQTPErrorIndicatorArrows=0x2000, /*!< \brief used to specify that error bars shall be decorated by arrows \image html errorindicators/JKQTPErrorIndicatorArrows.png */
707 JKQTPErrorIndicatorInwardArrows=0x4000, /*!< \brief used to specify that error bars shall be decorated by arrows \image html errorindicators/JKQTPErrorIndicatorInwardArrows.png */
708
709 JKQTPErrorArrows=JKQTPErrorSimpleBars|JKQTPErrorIndicatorArrows, /*!< \brief error bars decorated with arrows for each data point \image html errorindicators/JKQTPErrorArrows.png */
710 JKQTPErrorInwardArrows=JKQTPErrorSimpleBars|JKQTPErrorIndicatorInwardArrows, /*!< \brief error bars decorated with inwards-pointing arrows for each data point \image html errorindicators/JKQTPErrorInwardArrows.png */
711 JKQTPErrorBars=JKQTPErrorSimpleBars|JKQTPErrorIndicatorBar, /*!< \brief error bars for each data point \image html errorindicators/JKQTPErrorBars.png */
712 JKQTPErrorSimpleBarsPolygons=JKQTPErrorSimpleBars|JKQTPErrorPolygons, /*!< \brief simplified error barsand polygons for each data point \image html errorindicators/JKQTPErrorSimpleBarsPolygons.png */
713 JKQTPErrorSimpleBarsLines=JKQTPErrorSimpleBars|JKQTPErrorLines, /*!< \brief simplified error bars and line for each data point \image html errorindicators/JKQTPErrorSimpleBarsLines.png */
714 JKQTPErrorHalfBarsOutwards=JKQTPErrorBars|JKQTPErrorDirectionOutwards, /*!< \brief half error bars for each data point, pointing outwards \image html errorindicators/JKQTPErrorHalfBarsOutwards.png */
715 JKQTPErrorHalfBarsInwards=JKQTPErrorBars|JKQTPErrorDirectionInwards, /*!< \brief half error bars for each data point, pointing inwards \image html errorindicators/JKQTPErrorHalfBarsInwards.png */
716 JKQTPErrorHalfBarsAbove=JKQTPErrorBars|JKQTPErrorDirectionAbove, /*!< \brief half error bars for each data point, pointing up \image html errorindicators/JKQTPErrorHalfBarsAbove.png */
717 JKQTPErrorHalfBarsBelow=JKQTPErrorBars|JKQTPErrorDirectionBelow, /*!< \brief half error bars for each data point, pointing down \image html errorindicators/JKQTPErrorHalfBarsBelow.png */
718 JKQTPErrorBarsLines=JKQTPErrorBars|JKQTPErrorLines, /*!< \brief error bars and lines for each data point \image html errorindicators/JKQTPErrorBarsLines.png */
719 JKQTPErrorBarsPolygons=JKQTPErrorBars|JKQTPErrorPolygons, /*!< \brief error bars and polygons for each data point \image html errorindicators/JKQTPErrorBarsPolygons.png */
720};
721/** \brief specifies the plot styles for the error information, e.g. error bars, boxes, lines ...
722 * \ingroup jkqtplotter_basegraphserrors
723 *
724 * \qFlagsNote{JKQTPErrorPlotstyle,JKQTPErrorPlotstyleElements}
725 *
726 * \see JKQTPErrorPlotstyleElements, JKQTPXGraphErrorData, JKQTPYGraphErrorData
727 */
729Q_DECLARE_OPERATORS_FOR_FLAGS(JKQTPErrorPlotstyle)
730
731
732/** \brief converts a JKQTPErrorPlotstyle variable into a human-readable string
733 * \ingroup jkqtplotter_basegraphserrors
734 */
736
737/** \brief converts a String into a JKQTPErrorPlotstyle
738 * \ingroup jkqtplotter_basegraphserrors
739 */
741
742
743
744
745/** \brief plot styles for the error information
746 * \ingroup jkqtplotter_linesymbolgraphs_line
747 *
748 * \see JKQTPSpecialLineTypeComboBox
749 */
751 JKQTPStepLeft=0, /*!< \brief datapoint is on the left edge of the hor. step line \image html JKQTPStepLeft.png */
752 JKQTPStepCenter=1, /*!< \brief datapoint is centered on the hor. step line \image html JKQTPStepCenter.png */
753 JKQTPStepRight=2, /*!< \brief datapoint is on the right edge of the hor. step line \image html JKQTPStepRight.png */
754 JKQTPStepAverage=3, /*!< \brief horizontal line on the level of the average between two points + vertical lines to the points \image html JKQTPStepAverage.png */
755 JKQTPDirectLine=4, /*!< \brief no step, but connects the two datapoints with a straight line \image html JKQTPDirectLine.png */
756};
757
758
759/** \brief converts a JKQTPSpecialLineType variable into a human-readable string
760 * \ingroup jkqtplotter_linesymbolgraphs_line
761 */
763
764/** \brief converts a String into a JKQTPSpecialLineType
765 * \ingroup jkqtplotter_linesymbolgraphs_line
766 */
768
769
770
771#endif // JKQTPTOOLS_H_INCLUDED
base class for 2D plotter classes (used by the plotter widget JKQTPlotter)
Definition jkqtpbaseplotter.h:394
this class extends the QPainter
Definition jkqtpenhancedpainter.h:33
QFlags< JKQTPErrorPlotstyleElements > JKQTPErrorPlotstyle
specifies the plot styles for the error information, e.g. error bars, boxes, lines ....
Definition jkqtptools.h:728
JKQTPErrorPlotstyleElements
specifies the plot styles for the error information, e.g. error bars, boxes, lines ....
Definition jkqtptools.h:691
JKQTPLOTTER_LIB_EXPORT QString JKQTPErrorPlotstyle2String(JKQTPErrorPlotstyle pos)
converts a JKQTPErrorPlotstyle variable into a human-readable string
QFlags< JKQTPCADrawModeElements > JKQTPCADrawMode
drawing mode for a coordinate axis
Definition jkqtptools.h:430
JKQTPLOTTER_LIB_EXPORT JKQTPErrorPlotstyle String2JKQTPErrorPlotstyle(const QString &pos)
converts a String into a JKQTPErrorPlotstyle
@ JKQTPErrorDirectionAbove
used to specify the directon of half error bars: above pointing
Definition jkqtptools.h:702
@ JKQTPErrorHalfBarsOutwards
half error bars for each data point, pointing outwards
Definition jkqtptools.h:714
@ JKQTPErrorSimpleBars
simplified error bars for each data point
Definition jkqtptools.h:693
@ JKQTPErrorDirectionOutwards
used to specify the directon of half error bars: outwards pointing
Definition jkqtptools.h:700
@ JKQTPErrorBarsPolygons
error bars and polygons for each data point
Definition jkqtptools.h:719
@ JKQTPErrorEllipses
an ellipse spanned by the errors
Definition jkqtptools.h:696
@ JKQTPErrorIndicatorArrows
used to specify that error bars shall be decorated by arrows
Definition jkqtptools.h:706
@ JKQTPErrorLines
a second and third graph line above and below the actual data which indicates the error value
Definition jkqtptools.h:694
@ JKQTPErrorPolygons
line error lines, but with filled range in between
Definition jkqtptools.h:695
@ JKQTPErrorHalfBarsBelow
half error bars for each data point, pointing down
Definition jkqtptools.h:717
@ JKQTPErrorArrows
error bars decorated with arrows for each data point
Definition jkqtptools.h:709
@ JKQTPNoError
don't show error information
Definition jkqtptools.h:692
@ JKQTPErrorDirectionBelow
used to specify the directon of half error bars: below pointing
Definition jkqtptools.h:703
@ JKQTPErrorBoxes
a box spanned by the errors
Definition jkqtptools.h:697
@ JKQTPErrorDirectionBoth
do not draw half error-bars, but in both directions (default)
Definition jkqtptools.h:699
@ JKQTPErrorSimpleBarsPolygons
simplified error barsand polygons for each data point
Definition jkqtptools.h:712
@ JKQTPErrorDirectionInwards
used to specify the directon of half error bars: inwards pointing
Definition jkqtptools.h:701
@ JKQTPErrorSimpleBarsLines
simplified error bars and line for each data point
Definition jkqtptools.h:713
@ JKQTPErrorBarsLines
error bars and lines for each data point
Definition jkqtptools.h:718
@ JKQTPErrorIndicatorNone
used to specify that error bars shall be un-decorated i.e. "simple error-bars"
Definition jkqtptools.h:704
@ JKQTPErrorHalfBarsAbove
half error bars for each data point, pointing up
Definition jkqtptools.h:716
@ JKQTPErrorHalfBarsInwards
half error bars for each data point, pointing inwards
Definition jkqtptools.h:715
@ JKQTPErrorBars
error bars for each data point
Definition jkqtptools.h:711
@ JKQTPErrorIndicatorBar
used to specify that error bars shall be decorated by bars
Definition jkqtptools.h:705
@ JKQTPErrorIndicatorInwardArrows
used to specify that error bars shall be decorated by arrows
Definition jkqtptools.h:707
@ JKQTPErrorInwardArrows
error bars decorated with inwards-pointing arrows for each data point
Definition jkqtptools.h:710
JKQTPLOTTER_LIB_EXPORT JKQTPSpecialLineType String2JKQTPSpecialLineType(const QString &pos)
converts a String into a JKQTPSpecialLineType
JKQTPSpecialLineType
plot styles for the error information
Definition jkqtptools.h:750
JKQTPLOTTER_LIB_EXPORT QString JKQTPSpecialLineType2String(JKQTPSpecialLineType pos)
converts a JKQTPSpecialLineType variable into a human-readable string
@ JKQTPDirectLine
no step, but connects the two datapoints with a straight line
Definition jkqtptools.h:755
@ JKQTPStepRight
datapoint is on the right edge of the hor. step line
Definition jkqtptools.h:753
@ JKQTPStepLeft
datapoint is on the left edge of the hor. step line
Definition jkqtptools.h:751
@ JKQTPStepAverage
horizontal line on the level of the average between two points + vertical lines to the points
Definition jkqtptools.h:754
@ JKQTPStepCenter
datapoint is centered on the hor. step line
Definition jkqtptools.h:752
JKQTPLOTTER_LIB_EXPORT QString JKQTPColorDerivationMode2String(JKQTPColorDerivationMode mode)
convert a JKQTPColorDerivationMode to a QString
QColor QColorWithAlpha(const QColor &color, int alpha)
construct a QColor, based on the given color, but with alpha set to the specified value alpha
Definition jkqtptools.h:374
QColor QColorWithAlphaF(const QColor &color, qreal alphaF)
construct a QColor, based on the given color, but with alpha set to the specified value alphaF
Definition jkqtptools.h:364
JKQTPLOTTER_LIB_EXPORT QColor JKQTPGetDerivedColor(JKQTPColorDerivationMode mode, const QColor &basecolor)
use a JKQTPColorDerivationMode to derive a color from col as specified
JKQTPLOTTER_LIB_EXPORT JKQTPColorDerivationMode String2JKQTPColorDerivationMode(const QString &mode)
convert a QString (created by JKQTPColorDerivationMode2String() ) to JKQTPColorDerivationMode
size_t y
logic y-position of a graph, relative to the current JKQtPlotter
Definition jkqtptools.h:675
size_t x
logic x-position of a graph, relative to the current JKQtPlotter
Definition jkqtptools.h:673
JKQTBasePlotter * plotter
JKQTBasePlotter.
Definition jkqtptools.h:677
JKQTPMouseMoveActionsHashMap::const_iterator JKQTPMouseMoveActionsHashMapIterator
iterator for JKQTPMouseMoveActionsHashMap
Definition jkqtptools.h:256
JKQTPLOTTER_LIB_EXPORT QString JKQTPLabelTickMode2String(JKQTPLabelTickMode pos)
converts a JKQTPLabelTickMode variable into a human-readable string
JKQTPKeyLayout
layout of the key
Definition jkqtptools.h:632
QHash< QPair< Qt::MouseButton, Qt::KeyboardModifiers >, JKQTPMouseDoubleClickActions > JKQTPMouseDoubleClickActionsHashMap
data structure for storage of assigned JKQTPMouseDoubleClickActions
Definition jkqtptools.h:245
JKQTPLOTTER_LIB_EXPORT JKQTPKeyLayout String2JKQTPKeyLayout(const QString &pos)
converts a String into a JKQTPKeyLayout
JKQTPMouseDoubleClickActionsHashMap::const_iterator JKQTPMouseDoubleClickActionsHashMapIterator
iterator for JKQTPMouseDoubleClickActionsHashMap
Definition jkqtptools.h:248
JKQTPLOTTER_LIB_EXPORT QString JKQTPContextMenuModes2String(JKQTPContextMenuModes act)
convert a JKQTPContextMenuModes to a QString
JKQTPLOTTER_LIB_EXPORT QString JKQTPUserActionMarkerType2String(JKQTPUserActionMarkerType act)
convert a JKQTPUserActionMarkerType to a QString
JKQTPLOTTER_LIB_EXPORT JKQTPKeyPosition String2JKQTPKeyPosition(const QString &pos)
converts a string into a JKQTPLabelPosition
JKQTPLOTTER_LIB_EXPORT JKQTPMouseDoubleClickActions String2JKQTPMouseDoubleClickActions(const QString &act)
convert a QString (created by JKQTPMouseDoubleClickActions2String() ) to JKQTPMouseDoubleClickActions
JKQTPCADrawModeElements
drawing flags for a coordinate axis
Definition jkqtptools.h:402
JKQTPLOTTER_LIB_EXPORT JKQTPContextMenuModes String2JKQTPContextMenuModes(const QString &act)
convert a QString (created by JKQTPContextMenuModes2String() ) to JKQTPContextMenuModes
JKQTPLOTTER_LIB_EXPORT JKQTPUserActionMarkerType String2JKQTPUserActionMarkerType(const QString &act)
convert a QString (created by JKQTPUserActionMarkerType2String() ) to JKQTPUserActionMarkerType
JKQTPLOTTER_LIB_EXPORT QString JKQTPLabelPosition2String(JKQTPLabelPosition pos)
converts a JKQTPLabelPosition variable into a human-readable string
JKQTPLOTTER_LIB_EXPORT QList< JKQTPKeyPosition > JKQTPGetTypicalKeyPositions()
returns a list of typical positions of the main key
JKQTPLOTTER_LIB_EXPORT JKQTPMouseWheelActions String2JKQTPMouseWheelActions(const QString &act)
convert a QString (created by JKQTPMouseWheelActions2String() ) to JKQTPMouseWheelActions
JKQTPLOTTER_LIB_EXPORT QString JKQTPKeyPosition2String(JKQTPKeyPosition pos)
converts a JKQTPLabelPosition variable into a human-readable string
QFlags< JKQTPKeyPositions > JKQTPKeyPosition
position of the key
Definition jkqtptools.h:607
JKQTPLOTTER_LIB_EXPORT QString JKQTPMouseWheelActions2String(JKQTPMouseWheelActions act)
convert a JKQTPMouseWheelActions to a QString
JKQTPMouseMoveActions
Availble action this JKQtPlotter can perform when mouse events occur. This allows you to e....
Definition jkqtptools.h:188
JKQTPLOTTER_LIB_EXPORT QString JKQTPCALabelType2String(JKQTPCALabelType pos)
converts a JKQTPCALabelType variable into a human-readable string
JKQTPMouseDragActionsHashMap::const_iterator JKQTPMouseDragActionsHashMapIterator
iterator for JKQTPMouseDragActionsHashMap
Definition jkqtptools.h:234
JKQTPLOTTER_LIB_EXPORT QString JKQTPKeyLayout2String(JKQTPKeyLayout pos)
converts a JKQTPKeyLayout variable into a human-readable string
JKQTPMouseDragActions
Availble action this JKQtPlotter can perform when mouse events occur. This allows you to e....
Definition jkqtptools.h:110
JKQTPLOTTER_LIB_EXPORT JKQTPCALabelType String2JKQTPCALabelType(const QString &pos)
converts a string into a JKQTPCALabelType
JKQTPKeyPositions
position of the key
Definition jkqtptools.h:543
JKQTPUserActionMarkerType
Styles in which to mark single positions during user actions in JKQTPlotter.
Definition jkqtptools.h:83
JKQTPMouseWheelActions
actions that can be bound to a mouse wheel event
Definition jkqtptools.h:164
JKQTPLabelPosition
position of the axis labels
Definition jkqtptools.h:508
JKQTPLOTTER_LIB_EXPORT JKQTPMouseMoveActions String2JKQTPMouseMoveActions(const QString &button)
convert a QString (created by JKQTPMouseDragActions2String() ) to JKQTPMouseDragActions
QHash< Qt::KeyboardModifiers, JKQTPMouseWheelActions > JKQTPMouseWheelActionsHashMap
data structure for storage of assigned JKQTPMouseWheelActions
Definition jkqtptools.h:238
#define JKQTPLOTTER_LIB_EXPORT
Definition jkqtplotter_imexport.h:89
JKQTPContextMenuModes
modes for the context menu
Definition jkqtptools.h:209
JKQTPLOTTER_LIB_EXPORT JKQTPLabelPosition String2JKQTPLabelPosition(const QString &pos)
converts a string into a JKQTPLabelPosition
JKQTPLOTTER_LIB_EXPORT QString JKQTPMouseMoveActions2String(JKQTPMouseMoveActions act)
convert a JKQTPMouseDragActions to a QString
QHash< Qt::KeyboardModifiers, JKQTPMouseMoveActions > JKQTPMouseMoveActionsHashMap
data structure for storage of assigned JKQTPMouseMoveActions
Definition jkqtptools.h:253
JKQTPLOTTER_LIB_EXPORT QString JKQTPMouseDragActions2String(JKQTPMouseDragActions act)
convert a JKQTPMouseDragActions to a QString
JKQTPLOTTER_LIB_EXPORT JKQTPCADrawMode String2JKQTPCADrawMode(const QString &pos)
converts a string into a JKQTPCADrawMode
JKQTPLOTTER_LIB_EXPORT QString JKQTPMouseDoubleClickActions2String(JKQTPMouseDoubleClickActions act)
convert a JKQTPMouseDoubleClickActions to a QString
JKQTPMouseDoubleClickActions
actions that can be bound to a double-click of the mouse
Definition jkqtptools.h:140
JKQTPLOTTER_LIB_EXPORT JKQTPMouseDragActions String2JKQTPMouseDragActions(const QString &button)
convert a QString (created by JKQTPMouseDragActions2String() ) to JKQTPMouseDragActions
JKQTPLOTTER_LIB_EXPORT JKQTPLabelTickMode String2JKQTPLabelTickMode(const QString &pos)
converts a string into a JKQTPLabelTickMode
JKQTPCALabelType
display mode for the (axis) labels
Definition jkqtptools.h:449
QHash< QPair< Qt::MouseButton, Qt::KeyboardModifiers >, JKQTPMouseDragActions > JKQTPMouseDragActionsHashMap
data structure for storage of assigned JKQTPMouseDragActions
Definition jkqtptools.h:231
JKQTPLOTTER_LIB_EXPORT QString JKQTPCADrawMode2String(JKQTPCADrawMode pos)
converts a JKQTPCADrawMode variable into a human-readable string
JKQTPMouseWheelActionsHashMap::const_iterator JKQTPMouseWheelActionsHashMapIterator
iterator for JKQTPMouseWheelActionsHashMap
Definition jkqtptools.h:241
JKQTPPlotStyleType
used to specify teh type of graph when calling getPlotStyle()
Definition jkqtptools.h:68
JKQTPLabelTickMode
mode of the axis ticks
Definition jkqtptools.h:476
@ JKQTPKeyLayoutOneRow
the key consists of one row. This may overflow the available space, use JKQTPKeyLayoutMultiColumn or ...
Definition jkqtptools.h:637
@ JKQTPKeyLayoutMultiColumn
the key items are distributed over multiple columns that fill the available space,...
Definition jkqtptools.h:641
@ JKQTPKeyLayoutOneColumn
the key consists of one column. This may overflow the available space, use JKQTPKeyLayoutMultiColumn ...
Definition jkqtptools.h:633
@ JKQTPKeyLayoutMax
Definition jkqtptools.h:650
@ JKQTPKeyLayoutMultiRow
the key items are distributed over multiple rows that fill the available space (left->right,...
Definition jkqtptools.h:645
@ JKQTPCADMTickLabelsAxisLabel
draw axis tick labels and axisLabel
Definition jkqtptools.h:417
@ JKQTPCADMMaxFilledArrow
draw a filled arrow at the max-end of the axis
Definition jkqtptools.h:409
@ JKQTPCADMcompleteMinMaxArrow
draw axis withline, ticks, ticklabels and axis label and arrows pointing to the min and max side of t...
Definition jkqtptools.h:421
@ JKQTPCADMTicks
draw axis ticks
Definition jkqtptools.h:404
@ JKQTPCADMcomplete
draw axis withline, ticks, ticklabels and axis label
Definition jkqtptools.h:419
@ JKQTPCADMLine
draw axis as thick line
Definition jkqtptools.h:403
@ JKQTPCADMAxisLabel
draw axis axis Label
Definition jkqtptools.h:406
@ JKQTPCADMTickLabels
draw axis tick labels
Definition jkqtptools.h:405
@ JKQTPCADMMinFilledArrow
draw a filled arrow at the min-end of the axis
Definition jkqtptools.h:411
@ JKQTPCADMnone
draw no axis
Definition jkqtptools.h:418
@ JKQTPCADMMaxArrow
an open arrow at the max-end of the axis
Definition jkqtptools.h:408
@ JKQTPCADMMinArrow
an open arrow at the end of the axis at the min-end of the axis
Definition jkqtptools.h:410
@ JKQTPCADMcompleteMaxArrow
draw axis withline, ticks, ticklabels and axis label and an arrow pointing to the max-side of the axi...
Definition jkqtptools.h:420
@ JKQTPCADMTicksTickLabelsAxisLabel
draw axis with ticks, tick labels and axisLabel
Definition jkqtptools.h:415
@ JKQTPCADMLineTicksTickLabels
draw axis with ticks, line and tick labels
Definition jkqtptools.h:413
@ JKQTPCADMLineTicks
draw axis with ticks and line
Definition jkqtptools.h:414
@ JKQTPCADMTicksTickLabels
draw axis with ticks and tick labels
Definition jkqtptools.h:416
@ jkqtpmmaToolTipForClosestDataPoint
shows a tooltip with data of the closest data-point in the plot
Definition jkqtptools.h:189
@ jkqtpmdaScribbleForEvents
let the user scribble on the plot (left mouse button is kept pressed) and call JKQTPlotter::userScrib...
Definition jkqtptools.h:118
@ jkqtpmdaToolTipForClosestDataPoint
shows a tooltip with data of the closest data-point in the plot
Definition jkqtptools.h:119
@ jkqtpmdaZoomByRectangle
draw a rectangle and when finish zoom to that rectangle
Definition jkqtptools.h:113
@ jkqtpmdaPanPlotOnRelease
the user can drag the current plot window while keeping the left mouse-button pushed down (=panning),...
Definition jkqtptools.h:112
@ jkqtpmdaDrawLineForEvent
draw a line and when finished execute the signal JKQTPlotter::userLineFinished()
Definition jkqtptools.h:117
@ jkqtpmdaPanPlotOnMove
the user can drag the current plot window while keeping the left mouse-button pushed down (=panning),...
Definition jkqtptools.h:111
@ jkqtpmdaDrawEllipseForEvent
draw an ellipse and when finished execute the signal JKQTPlotter::userEllipseFinished()
Definition jkqtptools.h:116
@ jkqtpmdaDrawRectangleForEvent
draw a rectangle and when finished execute the signal JKQTPlotter::userRectangleFinished()
Definition jkqtptools.h:114
@ jkqtpmdaRuler
shows a ruler over the plot, which measures delta X, delta Y and sqrt(dx^2+dy^2)
Definition jkqtptools.h:120
@ jkqtpmdaDrawCircleForEvent
draw a circle and when finished execute the signal JKQTPlotter::userCircleFinished()
Definition jkqtptools.h:115
@ JKQTPKeyInsideLeft
the key is positioned inside on the center-left
Definition jkqtptools.h:593
@ JKQTPKeyLeft
key is drawn to the left
Definition jkqtptools.h:549
@ JKQTPKeyOutsideBottomCenter
the key is positioned below the graph, in the center
Definition jkqtptools.h:567
@ JKQTPKeyBottom
key is drawn to the bottom
Definition jkqtptools.h:554
@ JKQTPKeyInsideBottomLeft
the key is positioned inside on the bottom-left
Definition jkqtptools.h:585
@ JKQTPKeyOutsideBottom
key is drawn outside and below of the plot rectangle
Definition jkqtptools.h:546
@ JKQTPKeyOutsideLeftTop
the key is positioned on the left side of the graph, towards the top
Definition jkqtptools.h:569
@ JKQTPKeyHCenter
key is drawn to the horizontal center
Definition jkqtptools.h:550
@ JKQTPKeyInsideTop
the key is positioned inside on the top-center
Definition jkqtptools.h:589
@ JKQTPKeyOutsideLeft
key is drawn outside and on the left of the plot rectangle
Definition jkqtptools.h:547
@ JKQTPKeyOutsideBottomRight
the key is positioned below the graph, on the right
Definition jkqtptools.h:565
@ JKQTPKeyTop
key is drawn to the top
Definition jkqtptools.h:552
@ JKQTPKeyOutsideTopCenter
the key is positioned above the graph, in the center
Definition jkqtptools.h:561
@ JKQTPKeyInsideBottomRight
the key is positioned inside on the bottom-right
Definition jkqtptools.h:587
@ JKQTPKeyOutsideTopLeft
the key is positioned above the graph, on the left
Definition jkqtptools.h:559
@ JKQTPKeyOutsideTopRight
the key is positioned above the graph, on the right
Definition jkqtptools.h:557
@ JKQTPKeyInside
key is drawn inside the plot rectangle
Definition jkqtptools.h:544
@ JKQTPKeyInsideRight
the key is positioned inside on the center-right
Definition jkqtptools.h:595
@ JKQTPKeyInsideTopLeft
the key is positioned inside on the top-left
Definition jkqtptools.h:583
@ JKQTPKeyOutsideLeftCenter
the key is positioned on the left side of the graph, in the center
Definition jkqtptools.h:571
@ JKQTPKeyOutsideTop
key is drawn outside and above of the plot rectangle
Definition jkqtptools.h:545
@ JKQTPKeyOutsideRightCenter
the key is positioned on the right side of the graph, in the center
Definition jkqtptools.h:577
@ JKQTPKeyInsideBottom
the key is positioned inside on the bottom-center
Definition jkqtptools.h:591
@ JKQTPKeyRight
key is drawn to the right
Definition jkqtptools.h:551
@ JKQTPKeyVCenter
key is drawn to the vertical center
Definition jkqtptools.h:553
@ JKQTPKeyInsideTopRight
the key is positioned inside on the top-right
Definition jkqtptools.h:581
@ JKQTPKeyOutsideRightTop
the key is positioned on the left side of the graph, towards the top
Definition jkqtptools.h:579
@ JKQTPKeyOutsideRight
key is drawn outside and on the rightof the plot rectangle
Definition jkqtptools.h:548
@ JKQTPKeyDefaultPosition
Definition jkqtptools.h:597
@ JKQTPKeyOutsideLeftBottom
the key is positioned on the left side of the graph, towards the Bottom
Definition jkqtptools.h:573
@ JKQTPKeyOutsideRightBottom
the key is positioned on the right side of the graph, towards the bottom
Definition jkqtptools.h:575
@ JKQTPKeyOutsideBottomLeft
the key is positioned below the graph, on the left
Definition jkqtptools.h:563
@ jkqtpuamtCircleAndCrossHair
a cross-hair to the position to mark, with a circle-marker around the actual target (i....
Definition jkqtptools.h:86
@ jkqtpuamtCrossHair
a cross-hair to the position to mark
Definition jkqtptools.h:85
@ jkqtpuamtCircle
a small circle around the position to mark
Definition jkqtptools.h:84
@ jkqtpmwaZoomByWheel
use the mouse-wheel for zooming
Definition jkqtptools.h:165
@ jkqtpmwaPanByWheel
use the mouse-wheel for panning the plot
Definition jkqtptools.h:166
@ jkqtpmwaZoomByWheelAndTrackpadPan
use the mouse-wheel for zooming. In addition, this tries to recognize track-pad pan gestures and appl...
Definition jkqtptools.h:167
@ JKQTPLabelMaxBesides
the axis label is near the max value of the axis (right/top), but besides the axis tip
Definition jkqtptools.h:521
@ JKQTPLabelMin
the axis label is near the min value of the axis (left/bottom)
Definition jkqtptools.h:509
@ JKQTPLabelMax
the axis label is near the max value of the axis (right/top)
Definition jkqtptools.h:512
@ JKQTPLabelPositionMax
Definition jkqtptools.h:524
@ JKQTPLabelCenter
the label is at the center of the axis
Definition jkqtptools.h:515
@ JKQTPLabelMinBesides
the axis label is near the min value of the axis (left/bottom), but besides the axis tip
Definition jkqtptools.h:518
@ jkqtpcmmStandardContextMenu
only show the standard context menu
Definition jkqtptools.h:210
@ jkqtpcmmNoContextMenu
don't show a context menu at all
Definition jkqtptools.h:213
@ jkqtpcmmSpecialContextMenu
only show the special context menu
Definition jkqtptools.h:211
@ jkqtpcmmStandardAndSpecialContextMenu
show the standard context menu, with the special context menu incorporated
Definition jkqtptools.h:212
@ jkqtpdcaClickOpensContextMenu
a double-click opens the context menu
Definition jkqtptools.h:143
@ jkqtpdcaClickMovesViewport
a double-click centers the x/y-range around the clicked position
Definition jkqtptools.h:145
@ jkqtpdcaClickOpensSpecialContextMenu
a double-click opens the special context menu
Definition jkqtptools.h:144
@ jkqtpdcaClickZoomsIn
a double-click zooms into the plot at the current mouse location
Definition jkqtptools.h:141
@ jkqtpdcaClickZoomsOut
a double-click zooms out of the plot at the current mouse location
Definition jkqtptools.h:142
@ JKQTPCALTexponent
show numbers in exponential for, e.g. ...
Definition jkqtptools.h:453
@ JKQTPCALTcount
Definition jkqtptools.h:468
@ JKQTPCALTslashfrac
show numbers as fraction, the number is first rounded to the given precision and then a fraction is c...
Definition jkqtptools.h:459
@ JKQTPCALTformat
generate axis label from an arbitrary "std::format" formatting string (see e.g. https://en....
Definition jkqtptools.h:465
@ JKQTPCALTdefault
simply print the numbers
Definition jkqtptools.h:450
@ JKQTPCALTscientific
print the numbers in scientific notation, e.g. "1.23e-4"
Definition jkqtptools.h:451
@ JKQTPCALTintslashfrac
show numbers as integral+fraction, the number is first rounded to the given precision and then a frac...
Definition jkqtptools.h:462
@ JKQTPCALTsfrac
show numbers as fraction, the number is first rounded to the given precision and then a fraction is c...
Definition jkqtptools.h:460
@ JKQTPCALTdate
show numbers as dates
Definition jkqtptools.h:455
@ JKQTPCALTprintf
generate axis label from an arbitrary "printf" formatting string (see e.g. https://en....
Definition jkqtptools.h:454
@ JKQTPCALTtime
show numbers as times
Definition jkqtptools.h:456
@ JKQTPCALTexponentCharacter
print the numbers and show a unit character, i.e. 5μ for , 3k for ...
Definition jkqtptools.h:452
@ JKQTPCALTintsfrac
show numbers as integral+fraction, the number is first rounded to the given precision and then a frac...
Definition jkqtptools.h:463
@ JKQTPCALTmax
Definition jkqtptools.h:469
@ JKQTPCALTfrac
show numbers as fraction, the number is first rounded to the given precision and then a fraction is c...
Definition jkqtptools.h:458
@ JKQTPCALTdatetime
show numbers as times
Definition jkqtptools.h:457
@ JKQTPCALTintfrac
show numbers as integral+fraction, the number is first rounded to the given precision and then a frac...
Definition jkqtptools.h:461
@ JKQTPLTMLinOrPower
linear, or log, depending on whether the axis is log
Definition jkqtptools.h:477
@ JKQTPLTMPower
powers (of the log-base)
Definition jkqtptools.h:479
@ JKQTPLTMmax
Definition jkqtptools.h:481
@ JKQTPLTMLin
always linear (even for log-axes)
Definition jkqtptools.h:478
used to represent the position of other graphs in Saving and Printing Graphs
Definition jkqtptools.h:671
Specifies how a fill-color is derived from a given color.
Definition jkqtptools.h:262
float transparencyModficationStrength
strength of transparencyModification-settings, such as TransparencyChangeMode::MoreTransparent or Tra...
Definition jkqtptools.h:333
JKQTPColorDerivationMode(const QString &mode)
initialize object from a string (calls fromString() )
QColor apply(const QColor &basecolor) const
apply the modifications encoded in this object to a given color
QColor targetColor
replacement color when colorModification==ColorChangeMode::ReplaceColor
Definition jkqtptools.h:317
ColorChangeMode
Definition jkqtptools.h:306
@ LighterColor
Definition jkqtptools.h:311
@ DarkerColor
Definition jkqtptools.h:310
@ ReplaceColorNotTransparency
Definition jkqtptools.h:309
@ ReplaceColorAndTransparency
Definition jkqtptools.h:308
@ SameColor
Definition jkqtptools.h:307
float colorModificationStrength
strength of colorModification-settings, such as ColorChangeMode::DarkerColor or ColorChangeMode::Ligh...
Definition jkqtptools.h:319
bool operator==(const JKQTPColorDerivationMode &other) const
compares two objects for equality
static JKQTPColorDerivationMode fromString(const QString &mode)
read values from a string
QString toString() const
convert object contents into a string
ColorChangeMode colorModification
specifies how the color should change
Definition jkqtptools.h:315
TransparencyChangeMode transparencyModification
specifies how the transparency of the color chould change
Definition jkqtptools.h:329
float targetTransparency
target transparency (0:non-transparennt .. 1:fully-transparent, i.e. 1-alphaF!!!) for TransparencyCha...
Definition jkqtptools.h:331
bool operator==(const PredefinedModes &other) const
determines whether the current object equals a default-initialized object with the given parameter,...
JKQTPColorDerivationMode(PredefinedModes mode=JKQTPFFCMSameColor)
for compatibility: use one of several predefined settings to iitialize object
PredefinedModes
Definition jkqtptools.h:264
@ JKQTPFFCMDarkerColor
fill with the a darker color
Definition jkqtptools.h:288
@ JKQTPFFCMSameEvenMoreTransparentColor
fill with the a more transparent color than JKQTPFFCMMoreTransparentColor
Definition jkqtptools.h:280
@ JKQTPFFCMSameEvenLessTransparentColor
fill with the a more transparent color than JKQTPFFCMLessTransparentColor
Definition jkqtptools.h:282
@ JKQTPFFCMDarkerAndNonTransparentColor
fill with the a darker color, that is non-transparent (even if the basecolor had some transparency)
Definition jkqtptools.h:296
@ JKQTPFFCMGrey75Transparent
fill with 75% grey, slightly transparent
Definition jkqtptools.h:273
@ JKQTPFFCMSameLessTransparentColor
fill with the a partly transparent color
Definition jkqtptools.h:281
@ JKQTPFFCMLighterAndNonTransparentColor
fill with the a lighter color, that is non-transparent (even if the basecolor had some transparency)
Definition jkqtptools.h:294
@ JKQTPFFCMGrey50Transparent
fill with 50% grey, slightly transparent
Definition jkqtptools.h:274
@ JKQTPFFCMSameMoreTransparentColor
fill with the a partly transparent color
Definition jkqtptools.h:279
@ JKQTPFFCMEvenDarkerAndTransparentColor
fill with the an even darker color than JKQTPFFCMDarkerColor, that is in addition a bit transparent
Definition jkqtptools.h:293
@ JKQTPFFCMBlackTransparent
fill with black, slightly transparent
Definition jkqtptools.h:272
@ JKQTPFFCMWhiteTransparent
fill with white, slightly transparent
Definition jkqtptools.h:276
@ JKQTPFFCMDarkerAndTransparentColor
fill with the a darker color, that is in addition a bit transparent
Definition jkqtptools.h:292
@ JKQTPFFCMWhite
fill with white
Definition jkqtptools.h:271
@ JKQTPFFCMSameColor
fill with the same color
Definition jkqtptools.h:277
@ JKQTPFFCMInvertedColor
fill with the inverted color
Definition jkqtptools.h:283
@ JKQTPFFCMGrey75
fill with 75% grey
Definition jkqtptools.h:268
@ JKQTPFFCMGrey25
fill with 25% grey
Definition jkqtptools.h:270
@ JKQTPFFCMSameNonTransparentColor
fill with the same color, but remove any transparency (if any)
Definition jkqtptools.h:278
@ JKQTPFFCMInvertedNonTransparentColor
fill with the inverted color, non-transparent (even if the basecolor had some transparency)
Definition jkqtptools.h:285
@ JKQTPFFCMInvertedTransparentColor
fill with the inverted color, slightly transparent
Definition jkqtptools.h:284
@ JKQTPFFCMEvenDarkerColor
fill with the an even darker color than JKQTPFFCMDarkerColor
Definition jkqtptools.h:289
@ JKQTPFFCMFullyTransparentColor
fully transparent color
Definition jkqtptools.h:265
@ JKQTPFFCMLighterAndTransparentColor
fill with the a lighter color, that is in addition a bit transparent
Definition jkqtptools.h:290
@ JKQTPFFCMGrey25Transparent
fill with 25% grey, slightly transparent
Definition jkqtptools.h:275
@ JKQTPFFCMLighterColor
fill with the a lighter color
Definition jkqtptools.h:286
@ JKQTPFFCMBlack
fill with black
Definition jkqtptools.h:267
@ JKQTPFFCMEvenDarkerAndNonTransparentColor
fill with the an even darker color than JKQTPFFCMDarkerColor, that is non-transparent (even if the ba...
Definition jkqtptools.h:297
@ JKQTPFFCMEvenLighterAndTransparentColor
fill with the an even lighter color than JKQTPFFCMLighterColor, that is in addition a bit transparent
Definition jkqtptools.h:291
@ JKQTPFFCMEvenLighterAndNonTransparentColor
fill with the an even lighter color than JKQTPFFCMLighterColor, that is non-transparent (even if the ...
Definition jkqtptools.h:295
@ JKQTPFFCMGrey50
fill with 50% grey
Definition jkqtptools.h:269
@ JKQTPFFCMEvenLighterColor
fill with the an even lighter color than JKQTPFFCMLighterColor
Definition jkqtptools.h:287
TransparencyChangeMode
Definition jkqtptools.h:321
@ ReplaceTransparency
Definition jkqtptools.h:323
@ SameTransparency
Definition jkqtptools.h:322
@ MoreTransparent
Definition jkqtptools.h:324