![]()  | 
  
    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 
   | 
 
Classes | |
| class | JKQTPEnhancedPainter | 
| this class extends the QPainter  More... | |
| struct | JKQTPlotterDrawingTools | 
| tool class with static values used by JKQTPlotter/JKQTBasePlotter  More... | |
| struct | JKQTPSymbolPathsInternnal | 
| internal datastructure used in JKQTPPlotSymbol() to precalculate certain data only once per runtime  More... | |
Typedefs | |
| typedef std::function< void(QPainter &p)> | JKQTPCustomGraphSymbolFunctor | 
| functor used to draw a custom JKQTPGraphSymbols   | |
Functions | |
| JKQTCOMMON_LIB_EXPORT QPolygonF | JKQTPCleanPolygon (const QPolygonF &poly, double distanceThreshold=0.3) | 
| cleans a polygon by uniting all consecutive points that were closer than distanceThreshold are united   | |
| QLineF | JKQTPClipLine (const QLineF &line, const QRectF &clipRect) | 
| clips the given line line to the given rectangle clipRect   | |
| QLineF | JKQTPClipLine (const QLineF &line, double xmin, double xmax, double ymin, double ymax) | 
| clips the given line line to the given rectangle rectangle xmin .. xmax and ymin ... ymax   | |
| bool | JKQTPClipLine (double &x1, double &y1, double &x2, double &y2, double xmin, double xmax, double ymin, double ymax) | 
| clips the given line (x1 , y1 ) – (x2 , y2 ) to the given rectangle xmin .. xmax and ymin ... ymax   | |
| JKQTCOMMON_LIB_EXPORT bool | JKQTPClipLine (QLineF &line, const QRectF &clippingRect) | 
| clip a QLineF line to the rectangle defines by clippingRect   | |
| JKQTCOMMON_LIB_EXPORT QList< QPolygonF > | JKQTPClipPolyLine (const QPolygonF &polyline_in, const QRectF &clipRect) | 
| clips the given poly-line polyline_in to the given rectangle clipRect   | |
| JKQTCOMMON_LIB_EXPORT QList< QPolygonF > | JKQTPClipPolyLines (const QList< QPolygonF > &polylines_in, const QRectF &clipRect) | 
| clips the given list of poly-lines polylines_in to the given rectangle clipRect   | |
| template<class TPainter> | |
| void | JKQTPDrawTooltip (TPainter &painter, double x, double y, const QRectF &rect) | 
| draw a tooltip, using the current brush and pen of the provided painter   | |
| template<int N> | |
| std::array< QPointF, N *2 > | JKQTPGetStarCoordinates (double inner_radius=0.5) | 
| return the consecutive ccordinates of the tips of a N-tipped star on a circle of radius 1. Inner tips are on a irle of radius inner_radius.   | |
| JKQTCOMMON_LIB_EXPORT QString | JKQTPGraphSymbols2NameString (JKQTPGraphSymbols pos) | 
| converts a JKQTPGraphSymbols variable into a human-readable string   | |
| JKQTCOMMON_LIB_EXPORT QString | JKQTPGraphSymbols2String (JKQTPGraphSymbols pos) | 
| converts a JKQTPGraphSymbols variable into a identifier string   | |
| JKQTCOMMON_LIB_EXPORT QString | JKQTPLineDecoratorStyle2NameString (JKQTPLineDecoratorStyle pos) | 
| converts a JKQTPLineDecoratorStyle variable into a human-readable string   | |
| JKQTCOMMON_LIB_EXPORT QString | JKQTPLineDecoratorStyle2String (JKQTPLineDecoratorStyle pos) | 
| converts a JKQTPLineDecoratorStyle variable into a identifier string   | |
| JKQTCOMMON_LIB_EXPORT double | JKQTPLineDecoratorStyleCalcDecoratorSize (double line_width, double decoratorSizeFactor) | 
| calculates the tail decorator size from the line width line_width, using decoratorSizeFactor and a non-linear scaling function that levels off towards small line_width and increases sub-linearly for large ones, so the arrow heads to not grow too much   | |
| template<class TPainter> | |
| void | JKQTPPlotDecoratedLine (TPainter &painter, const QLineF &l, JKQTPLineDecoratorStyle style1, double size1, JKQTPLineDecoratorStyle style2, double size2) | 
| plot a line with the given decorators style1 and a style2 at the start- and end-point repsectively, using the painter's current pen   | |
| template<class TPainter> | |
| void | JKQTPPlotLineDecorator (TPainter &painter, double x, double y, double angle_rad, JKQTPLineDecoratorStyle style, double size, QPointF *line_start=nullptr) | 
| plot the specified symbol at pixel position x,y. Note that this function only draws the decorator, NOT the line pointing to it!   | |
| JKQTCOMMON_LIB_EXPORT void | JKQTPPlotSymbol (QPaintDevice &paintDevice, double x, double y, JKQTPGraphSymbols symbol, double size, double symbolLineWidth, QColor color, QColor fillColor, const QFont &symbolFont) | 
| plot the specified symbol at pixel position x,y, thread-safe   | |
| template<class TPainter> | |
| void | JKQTPPlotSymbol (TPainter &painter, double x, double y, JKQTPGraphSymbols symbol, double size, double symbolLineWidth, QColor color, QColor fillColor, QFont symbolFont) | 
| plot the specified symbol at pixel position x,y, thread-safe   | |
| JKQTCOMMON_LIB_EXPORT JKQTPGraphSymbols | JKQTPRegisterCustomGraphSymbol (const JKQTPCustomGraphSymbolFunctor &) | 
| register a JKQTPCustomGraphSymbolFunctor that draws a custom symbol.Returns an ID that allows to access the symbol!, thread-safe   | |
| JKQTCOMMON_LIB_EXPORT JKQTPGraphSymbols | JKQTPRegisterCustomGraphSymbol (JKQTPCustomGraphSymbolFunctor &&) | 
| register a JKQTPCustomGraphSymbolFunctor that draws a custom symbol.Returns an ID that allows to access the symbol!, thread-safe   | |
| JKQTCOMMON_LIB_EXPORT void | JKQTPReplaceCurrentColor (QColor &col, const QColor ¤tColor) | 
| check whether col equals JKQTPlotterDrawingTools::CurrentColorPlaceholder (or one of its variants) and then replace it by currentColor   | |
| JKQTCOMMON_LIB_EXPORT void | JKQTPReplaceCurrentColor (QGradient &grad, const QColor ¤tColor) | 
| check whether any color in grad equals JKQTPlotterDrawingTools::CurrentColorPlaceholder (or one of its variants) and then replace it by currentColor   | |
| JKQTCOMMON_LIB_EXPORT QPolygonF | jkqtpRotateRect (QRectF r, double angle) | 
| rotate a rectangle by given angle (rotates all points around the center of the rectangle and returns it as a QPolygonF)   | |
| JKQTCOMMON_LIB_EXPORT QList< QPolygonF > | JKQTPSimplifyPolyLines (const QList< QPolygonF > &lines_in, double maxDeltaXY=1.0) | 
| tries to reduce the complexity of the given list of poly-lines lines_in, but keeping the appearance as if all lines were drawn   | |
| JKQTCOMMON_LIB_EXPORT QPolygonF | JKQTPSimplifyPolyLines (const QPolygonF &lines_in, double maxDeltaXY=1.0) | 
| tries to reduce the complexity of the given poly-line lines_in, but keeping the appearance as if all lines were drawn   | |
| JKQTCOMMON_LIB_EXPORT QVector< QPointF > | JKQTPSimplyfyLineSegemnts (const QVector< QPointF > &points, double maxConsecutiveAngleDegree=0.2) | 
| takes a list of points and tries to reduce them. Three points are merged to two, if they form a straight line   | |
| JKQTCOMMON_LIB_EXPORT QVector< QPointF > | JKQTPSplitEllipseIntoPoints (double x, double y, double a, double b, double angle_start=0, double angle_end=360, double alpha=0, int controlPoints=180, QPointF *x_start=nullptr, QPointF *x_end=nullptr) | 
| represent an ellipse as a series of points on the ellipse   | |
| JKQTCOMMON_LIB_EXPORT QVector< QPointF > | JKQTPSplitEllipseIntoPoints (std::function< QPointF(QPointF)> fTransform, double x, double y, double a, double b, double angle_start=0, double angle_end=360, double alpha=0, QPointF *x_start=nullptr, QPointF *x_end=nullptr, QPointF *x_start_notrafo=nullptr, QPointF *x_end_notrafo=nullptr) | 
| represent an ellipse as a series of points on the ellipse   | |
| JKQTCOMMON_LIB_EXPORT QVector< QPointF > | JKQTPSplitLineIntoPoints (const QLineF &line, int controlPoints=180) | 
| represent a line as a series of points on the ellipse   | |
| JKQTCOMMON_LIB_EXPORT QVector< QPointF > | JKQTPSplitLineIntoPoints (const QLineF &line, std::function< QPointF(QPointF)> fTransform) | 
| represent a line as a series of points on the ellipse   | |
| JKQTCOMMON_LIB_EXPORT QVector< QPointF > | JKQTPSplitPolylineIntoPoints (const QVector< QPointF > &line, std::function< QPointF(QPointF)> fTransform) | 
| represent a poly-line as a series of points on the ellipse   | |
| JKQTCOMMON_LIB_EXPORT QVector< QPolygonF > | JKQTPUnifyLinesToPolygons (const QVector< QLineF > &lines, double distanceThreshold=0.3, int searchMaxSurroundingElements=10) | 
| takes a list of QLineF objesct lines and tries to combine as many of them as possible to QPolygonF objects. Note: This method implements an incomplete algorithm with searchMaxSurroundingElements>0, as solving the complete problem is very time-consuming (cubic runtime)   | |
| JKQTCOMMON_LIB_EXPORT JKQTPGraphSymbols | String2JKQTPGraphSymbols (const QString &pos) | 
| converts a String into a JKQTPGraphSymbols   | |
| JKQTCOMMON_LIB_EXPORT JKQTPLineDecoratorStyle | String2JKQTPLineDecoratorStyle (const QString &pos) | 
| converts a String into a JKQTPLineDecoratorStyle   | |
Variables | |
| static JKQTCOMMON_LIB_EXPORT JKQTPSynchronized< QVector< JKQTPCustomGraphSymbolFunctor > > | JKQTPlotterDrawingTools::JKQTPCustomGraphSymbolStore | 
| stores all custom JKQTPGraphSymbols registered using JKQTPRegisterCustomGraphSymbol   | |
Specialized drawing functions used by the plotters and LaTeX renderers.
| typedef std::function<void(QPainter& p)> JKQTPCustomGraphSymbolFunctor | 
functor used to draw a custom JKQTPGraphSymbols
Draw the symbol with these properties:
p.save(); and p.restore(); in JKQTPPlotSymbol()As an example, the following code-snippet:
generates this symbol:
| enum JKQTPGraphSymbols : uint64_t | 
symbols that can be used to plot a datapoint for a graph
| Enumerator | |
|---|---|
| JKQTPNoSymbol | plots no symbol at all (usefull together with error bars)  | 
| JKQTPDot | a small dot  
 | 
| JKQTPCross | a X cross  
 | 
| JKQTPPlus | a + cross  
 | 
| JKQTPCircle | an unfilled circle  
 | 
| JKQTPFilledCircle | a filled circle  
 | 
| JKQTPRect | an unfilled rectangle  
 | 
| JKQTPFilledRect | a filled rectangle  
 | 
| JKQTPTriangle | an unfilled triangle (tip at top)  
 | 
| JKQTPFilledTriangle | a filled triangle (tip at top)  
 | 
| JKQTPDiamond | an unfilled diamond  
 | 
| JKQTPFilledDiamond | a filled diamond  
 | 
| JKQTPstar | an unfilled diamond  
 | 
| JKQTPFilledStar | a filled diamond  
 | 
| JKQTPPentagon | an unfilled pentagon  
 | 
| JKQTPFilledPentagon | a filled pentagon  
 | 
| JKQTPAsterisc | an asterisc star with 5 arms  
 | 
| JKQTPHourglass | an hour glass symbol  
 | 
| JKQTPFilledHourglass | a filled hour glass symbol  
 | 
| JKQTPCurvedTriangle | a curved triangle  
 | 
| JKQTPFilledCurvedTriangle | a filled curved triangle  
 | 
| JKQTPHexagon | an unfilled hexagon  
 | 
| JKQTPFilledHexagon | a filled hexagon  
 | 
| JKQTPRectCross | a square symbol with a cross inside  
 | 
| JKQTPRectPlus | a square symbol with a plus inside  
 | 
| JKQTPRectTriangle | a square symbol with a triangle inside  
 | 
| JKQTPRectDownTriangle | a square symbol with a triangle (tip to the bottom) inside  
 | 
| JKQTPRectLeftTriangle | a square symbol with a triangle (tip to the left) inside  
 | 
| JKQTPRectRightTriangle | a square symbol with a triangle (tip to the right) inside  
 | 
| JKQTPCircleCross | a circle symbol with a cross inside  
 | 
| JKQTPCirclePlus | a circle symbol with a plus inside  
 | 
| JKQTPCirclePeace | a circled peace symbol  
 | 
| JKQTPDiamondPlus | a diamond symbol with a plus inside  
 | 
| JKQTPDiamondCross | a diamond symbol with a cross inside  
 | 
| JKQTPTripod | a tripod symbol  
 | 
| JKQTPDownTripod | a tripod symbol, pointing down  
 | 
| JKQTPLeftTripod | a tripod symbol, pointing to the left  
 | 
| JKQTPRightTripod | a tripod symbol, pointing to the right  
 | 
| JKQTPAsterisc6 | an asterisc star with 6 arms  
 | 
| JKQTPAsterisc8 | an asterisc star with 8 arms  
 | 
| JKQTPPeace | a peace symbol  
 | 
| JKQTPTarget | a target symbol (circle with cross)  
 | 
| JKQTPDownTriangle | an unfilled triangle (tip at bottom)  
 | 
| JKQTPFilledDownTriangle | a filled triangle (tip at bottom)  
 | 
| JKQTPLeftTriangle | an unfilled triangle (tip to the left)  
 | 
| JKQTPFilledLeftTriangle | a filled triangle (tip to the left)  
 | 
| JKQTPRightTriangle | an unfilled triangle (tip to the right)  
 | 
| JKQTPFilledRightTriangle | a filled triangle (tip to the right)  
 | 
| JKQTPDownCurvedTriangle | a curved triangle, pointing down  
 | 
| JKQTPFilledDownCurvedTriangle | a filled curved triangle, pointing down  
 | 
| JKQTPLeftCurvedTriangle | a curved triangle, pointing to the left  
 | 
| JKQTPFilledLeftCurvedTriangle | a filled curved triangle, pointing to the left  
 | 
| JKQTPRightCurvedTriangle | a curved triangle, pointing to the right  
 | 
| JKQTPFilledRightCurvedTriangle | a filled curved triangle, pointing to the right  
 | 
| JKQTPOctagon | an unfilled octagon  
 | 
| JKQTPFilledOctagon | a filled octagon  
 | 
| JKQTPUpDownTriangle | a overlay of an up and a down triangle symbol  
 | 
| JKQTPFilledUpDownTriangle | a filled version of the overlay of an up and a down triangle  
 | 
| JKQTPHorizontalHourglass | a horizontal hour glass symbol  
 | 
| JKQTPFilledHorizontalHourglass | a filled horizontal hour glass symbol  
 | 
| JKQTPSantaClauseHouse | a small house symbol ("Das is das haus vom Nicolaus")  
 | 
| JKQTPFilledSantaClauseHouse | a filled small house symbol ("Das is das haus vom Nicolaus")  
 | 
| JKQTPMale | a male symbol  
 | 
| JKQTPFemale | a female symbol  
 | 
| JKQTPSymbolCount | can be used to iterate over all symbols using:   | 
| JKQTPMaxSymbolID | points to the last available symbol, can be used to iterate over all symbols:   | 
| JKQTPDefaultSymbol | a default symbol used for plotting  | 
| JKQTPCharacterSymbol | draw a font-character as symbol with defined fill-brush (taken from symbol-color), you can use any character from a QFont by supplying   
generated by JKQTPCharacterSymbol+QChar('@').unicode()  
generated by JKQTPCharacterSymbol+QChar(0x2663).unicode()  | 
| JKQTPFilledCharacterSymbol | draw a font-character as symbol with defined outline-pen and fill-brush, you can use any character from a QFont by supplying   
generated by JKQTPFilledCharacterSymbol+QChar('@').unicode()  
generated by JKQTPFilledCharacterSymbol+QChar(0x2663).unicode()  | 
| JKQTPFirstCustomSymbol | draw a completely custom symbol, defined by supplying a functor to JKQTPRegisterCustomGraphSymbol()  
generated by <code>[](QPainter& p) { p.drawEllipse(QPointF(-0.2, -0.2), 0.3, 0.3); p.setBrush(Qt::NoBrush); p.drawEllipse(QPointF(0.2, -0.2), 0.3, 0.3); p.drawEllipse(QPointF(0, 0.2), 0.3, 0.3); };</code>  | 
symbols that can be used to plot a datapoint for a graph
Note that all arrows end at the designated line-end (here indicated by dashed grey lines), even circles and rectangle:
| Enumerator | |
|---|---|
| JKQTPNoDecorator | no decorator, i.e. a simple line-end  
 | 
| JKQTPArrow | a simple arrow tip, unfilled  
 | 
| JKQTPFilledArrow | a nice filled arrow tip  
 | 
| JKQTPTriangleDecorator | a triangular arrow tip  
 | 
| JKQTPFilledTriangleDecorator | a triangular filled arrow tip  
 | 
| JKQTPTriangleDecoratorAndBar | a triangular arrow tip, with vertical bar  
 | 
| JKQTPFilledTriangleDecoratorAndBar | a triangular filled arrow tip, with vertical bar  
 | 
| JKQTPDoubleArrow | a nice double-arrow tip  
 | 
| JKQTPFilledDoubleArrow | a nice filled double-arrow tip  
 | 
| JKQTPCircleDecorator | an open circle tip  
 | 
| JKQTPFilledCircleDecorator | a filled circle tip  
 | 
| JKQTPRectangleDecorator | an open rectangle tip  
 | 
| JKQTPFilledRectangleDecorator | a filled rectangle tip  
 | 
| JKQTPArrowAndBar | a simple arrow tip, unfilled, with vertical bar  
 | 
| JKQTPDoubleArrowAndBar | a simple double-arrow tip, unfilled, with vertical bar  
 | 
| JKQTPBarDecorator | a full vertical bar  
 | 
| JKQTPBracketDecorator | a vertical bracket decorator  
 | 
| JKQTPDiamondDecorator | an open diamond tip  
 | 
| JKQTPDiamondDecoratorAndBar | an open diamond tip  
 | 
| JKQTPFilledDiamondDecorator | a filled diamond tip  
 | 
| JKQTPFilledDiamondDecoratorAndBar | a filled diamond tip  
 | 
| JKQTPHalfBarDecorator | a half vertical bar  
 | 
| JKQTPHarpoonDecorator | an harpoon arrow  
 | 
| JKQTPHarpoonDecoratorAndBar | an harpoon arrow, with vertical bar  
 | 
| JKQTPSkewedBarDecorator | a skewed vertical bar  
 | 
| JKQTPLineDecoratorCount | can be used to iterate over all symbols using:   | 
| JKQTPMaxLineDecoratorID | points to the last available symbol, can be used to iterate over all symbols:   | 
| JKQTPDefaultLineDecorator | a default symbol used for plotting  | 
| JKQTCOMMON_LIB_EXPORT QPolygonF JKQTPCleanPolygon | ( | const QPolygonF & | poly, | 
| double | distanceThreshold = 0.3 ) | 
cleans a polygon by uniting all consecutive points that were closer than distanceThreshold are united
| poly | polygon to clean | 
| distanceThreshold | if two end-points are closer together as this value, they are united to a single point | 
      
  | 
  inline | 
clips the given line line to the given rectangle clipRect
| line | line to be clipped | 
| clipRect | rectangle to clip to | 
This function implements the algorithm descripbed in https://www.researchgate.net/publication/335018076_Another_Simple_but_Faster_Method_for_2D_Line_Clipping
      
  | 
  inline | 
clips the given line line to the given rectangle rectangle xmin .. xmax and ymin ... ymax
This function implements the algorithm descripbed in https://www.researchgate.net/publication/335018076_Another_Simple_but_Faster_Method_for_2D_Line_Clipping
      
  | 
  inline | 
clips the given line (x1 , y1 ) – (x2 , y2 ) to the given rectangle xmin .. xmax and ymin ... ymax
true if the line is still to be drawn or false elseThis function implements the algorithm descripbed in https://www.researchgate.net/publication/335018076_Another_Simple_but_Faster_Method_for_2D_Line_Clipping i.e. in Pseudocode
// x1 , y1 , x2 , y2 , xmin , ymax , xmax , ymin //
if not ( x1<xmin and x2<xmin ) and not ( x1>xmax and x2>xmax ) then
    if not ( y1<ymin and y2<ymin ) and not ( y1>ymax and y2>ymax ) then
        x[1]= x1
        y[1]= y1
        x[2]= x2
        y[2]= y2
        i =1
        repeat
            if x[i] < xmin then
                x[i] = xmin
                y[i] = ( ( y2-y1 ) / ( x2-x1 ) ) * ( xmin-x1)+y1
            elseif x[i] > xmax then
                x[i] = xmax
                y[i] = ( ( y2-y1 ) / ( x2-x1 ) ) * ( xmax-x1)+y1
            endif
            if y[i] < ymin then
                y[i] = ymin
                x[i] = ( ( x2-x1 ) / ( y2-y1 ) ) * ( ymin-y1)+x1
            elseif y[i] > ymax then
                y[i] = ymax
                x[i] = ( ( x2-x1 ) / ( y2-y1 ) ) * ( ymax-y1)+x1
            endif
            i = i + 1
        until i >2
        if not ( x [1 ] < xmin and x [2 ] < xmin ) and not ( x [1 ] >xmax and x [2 ] >xmax ) then
            drawLine ( x[1] , y[1] , x[2] , y[2] )
        endif
    endif
endif
 
| JKQTCOMMON_LIB_EXPORT bool JKQTPClipLine | ( | QLineF & | line, | 
| const QRectF & | clippingRect ) | 
clip a QLineF line to the rectangle defines by clippingRect
| [in,out] | line | The line to clip, if clipping is possible this is modified to the clipped line. If the line is outside clippingRect this is modified to line=QLineF() i.e. a null-line!  | 
| clippingRect | the rectangle to clip to | 
true, if the line had at least some points within clippingRect, false otherwise. The clipped line (or a null-line) is returned in the by-refrence parameter line | JKQTCOMMON_LIB_EXPORT QList< QPolygonF > JKQTPClipPolyLine | ( | const QPolygonF & | polyline_in, | 
| const QRectF & | clipRect ) | 
clips the given poly-line polyline_in to the given rectangle clipRect
| polyline_in | poly-line to be clipped | 
| clipRect | rectangle to clip to | 
| JKQTCOMMON_LIB_EXPORT QList< QPolygonF > JKQTPClipPolyLines | ( | const QList< QPolygonF > & | polylines_in, | 
| const QRectF & | clipRect ) | 
clips the given list of poly-lines polylines_in to the given rectangle clipRect
| polylines_in | list of poly-lines to be clipped | 
| clipRect | rectangle to clip to | 
      
  | 
  inline | 
draw a tooltip, using the current brush and pen of the provided painter
| TPainter | Type of painter: A class like JKQTPEnhancedPainter or QPainter | 
| painter | QPainter-like object to use for painting | 
| x | x-coordinate of position the tooltip points to | 
| y | y-coordinate of position the tooltip points to | 
| rect | rectangle of the main tooltip area | 
      
  | 
  inline | 
return the consecutive ccordinates of the tips of a N-tipped star on a circle of radius 1. Inner tips are on a irle of radius inner_radius.
| JKQTCOMMON_LIB_EXPORT QString JKQTPGraphSymbols2NameString | ( | JKQTPGraphSymbols | pos | ) | 
converts a JKQTPGraphSymbols variable into a human-readable string
| JKQTCOMMON_LIB_EXPORT QString JKQTPGraphSymbols2String | ( | JKQTPGraphSymbols | pos | ) | 
converts a JKQTPGraphSymbols variable into a identifier string
| JKQTCOMMON_LIB_EXPORT QString JKQTPLineDecoratorStyle2NameString | ( | JKQTPLineDecoratorStyle | pos | ) | 
converts a JKQTPLineDecoratorStyle variable into a human-readable string
| JKQTCOMMON_LIB_EXPORT QString JKQTPLineDecoratorStyle2String | ( | JKQTPLineDecoratorStyle | pos | ) | 
converts a JKQTPLineDecoratorStyle variable into a identifier string
| JKQTCOMMON_LIB_EXPORT double JKQTPLineDecoratorStyleCalcDecoratorSize | ( | double | line_width, | 
| double | decoratorSizeFactor ) | 
calculates the tail decorator size from the line width line_width, using decoratorSizeFactor and a non-linear scaling function that levels off towards small line_width and increases sub-linearly for large ones, so the arrow heads to not grow too much
      
  | 
  inline | 
plot a line with the given decorators style1 and a style2 at the start- and end-point repsectively, using the painter's current pen
| TPainter | Type of painter: A class like JKQTPEnhancedPainter or QPainter | 
| painter | the QPainter to draw to | 
| l | line to draw | 
| style1 | type of the first decorator to plot, see JKQTPLineDecoratorStyle | 
| size1 | size of the first decorator | 
| style2 | type of the second decorator to plot, see JKQTPLineDecoratorStyle | 
| size2 | size of the second decorator | 
x...x+size and y-size/2...y-size/2 (where size is size1 or size2), but may be smaller (e.g. arrows are typically less high than the full size pixels ).
      
  | 
  inline | 
plot the specified symbol at pixel position x,y. Note that this function only draws the decorator, NOT the line pointing to it!
| TPainter | Type of painter: A class like JKQTPEnhancedPainter or QPainter | 
| painter | the QPainter to draw to | |
| x | x-coordinate of the decorator tip | |
| y | y-coordinate of the decorator tip | |
| angle_rad | angle of the line pointing to (x,y), given in radians, 0rad points to the right, >0rad is a counter-clockwise rotation, as calculated by atan2() from dx, dy of a line! | |
| style | type of the decorator to plot, see JKQTPLineDecoratorStyle | |
| size | size of the decorator in pixels, the decorator fills at most the space x...x+size and y-size/2...y-size/2, but may be smaller (e.g. arrows are typically less high than the full size pixels ).  | |
| [out] | line_start | optional output parameter: when drawing the line let it end here, not necessarily at (x,y) | 
| JKQTCOMMON_LIB_EXPORT void JKQTPPlotSymbol | ( | QPaintDevice & | paintDevice, | 
| double | x, | ||
| double | y, | ||
| JKQTPGraphSymbols | symbol, | ||
| double | size, | ||
| double | symbolLineWidth, | ||
| QColor | color, | ||
| QColor | fillColor, | ||
| const QFont & | symbolFont ) | 
plot the specified symbol at pixel position x,y, thread-safe
| paintDevice | the paint device to draw on | 
| x | x-coordinate of the symbol center | 
| y | y-coordinate of the symbol center | 
| symbol | type of the symbol to plot, see JKQTPGraphSymbols | 
| size | size (width/height) of the symbol around (x , y) | 
| symbolLineWidth | width of the lines used to draw the symbol | 
| color | color of the symbol lines | 
| fillColor | color of the symbol filling | 
| symbolFont | font used to draw symbols like JKQTPCharacterSymbol+QChar('@').unicode()  | 
      
  | 
  inline | 
plot the specified symbol at pixel position x,y, thread-safe
| TPainter | Type of painter: A class like JKQTPEnhancedPainter or QPainter | 
| painter | the QPainter to draw to | 
| x | x-coordinate of the symbol center | 
| y | y-coordinate of the symbol center | 
| symbol | type of the symbol to plot, see JKQTPGraphSymbols | 
| size | size (width/height) of the symbol around (x , y) | 
| symbolLineWidth | width of the lines used to draw the symbol | 
| color | color of the symbol lines | 
| fillColor | color of the symbol filling | 
| symbolFont | font used to draw symbols like JKQTPCharacterSymbol+QChar('@').unicode()  | 
| JKQTCOMMON_LIB_EXPORT JKQTPGraphSymbols JKQTPRegisterCustomGraphSymbol | ( | const JKQTPCustomGraphSymbolFunctor & | ) | 
register a JKQTPCustomGraphSymbolFunctor that draws a custom symbol.Returns an ID that allows to access the symbol!, thread-safe
The functor is stored in the global/static store JKQTPlotterDrawingTools::JKQTPCustomGraphSymbolStore, i.e. these are available throughout the runtime of the program
| JKQTCOMMON_LIB_EXPORT JKQTPGraphSymbols JKQTPRegisterCustomGraphSymbol | ( | JKQTPCustomGraphSymbolFunctor && | ) | 
register a JKQTPCustomGraphSymbolFunctor that draws a custom symbol.Returns an ID that allows to access the symbol!, thread-safe
The functor is stored in the global/static store JKQTPlotterDrawingTools::JKQTPCustomGraphSymbolStore, i.e. these are available throughout the runtime of the program
| JKQTCOMMON_LIB_EXPORT void JKQTPReplaceCurrentColor | ( | QColor & | col, | 
| const QColor & | currentColor ) | 
check whether col equals JKQTPlotterDrawingTools::CurrentColorPlaceholder (or one of its variants) and then replace it by currentColor
| JKQTCOMMON_LIB_EXPORT void JKQTPReplaceCurrentColor | ( | QGradient & | grad, | 
| const QColor & | currentColor ) | 
check whether any color in grad equals JKQTPlotterDrawingTools::CurrentColorPlaceholder (or one of its variants) and then replace it by currentColor
| JKQTCOMMON_LIB_EXPORT QPolygonF jkqtpRotateRect | ( | QRectF | r, | 
| double | angle ) | 
rotate a rectangle by given angle (rotates all points around the center of the rectangle and returns it as a QPolygonF)
| JKQTCOMMON_LIB_EXPORT QList< QPolygonF > JKQTPSimplifyPolyLines | ( | const QList< QPolygonF > & | lines_in, | 
| double | maxDeltaXY = 1.0 ) | 
tries to reduce the complexity of the given list of poly-lines lines_in, but keeping the appearance as if all lines were drawn
| lines_in | list of poly-lines to be simplified | 
| maxDeltaXY | a group has to be either less wide or less high than this, typically equals the linewidth of the poly-line | 
| JKQTCOMMON_LIB_EXPORT QPolygonF JKQTPSimplifyPolyLines | ( | const QPolygonF & | lines_in, | 
| double | maxDeltaXY = 1.0 ) | 
tries to reduce the complexity of the given poly-line lines_in, but keeping the appearance as if all lines were drawn
| lines_in | poly-line to be simplified | 
| maxDeltaXY | a group has to be either less wide or less high than this, typically equals the linewidth of the poly-line | 
| JKQTCOMMON_LIB_EXPORT QVector< QPointF > JKQTPSimplyfyLineSegemnts | ( | const QVector< QPointF > & | points, | 
| double | maxConsecutiveAngleDegree = 0.2 ) | 
takes a list of points and tries to reduce them. Three points are merged to two, if they form a straight line
| points | input poly-line | 
| maxConsecutiveAngleDegree | is two consecutive line-segments differ by an angle smaller than this, they can be merged | 
| JKQTCOMMON_LIB_EXPORT QVector< QPointF > JKQTPSplitEllipseIntoPoints | ( | double | x, | 
| double | y, | ||
| double | a, | ||
| double | b, | ||
| double | angle_start = 0, | ||
| double | angle_end = 360, | ||
| double | alpha = 0, | ||
| int | controlPoints = 180, | ||
| QPointF * | x_start = nullptr, | ||
| QPointF * | x_end = nullptr ) | 
represent an ellipse as a series of points on the ellipse
| x | center of ellipse (x-coordinate) | |
| y | center of ellipse (y-coordinate) | |
| a | half axis in x-direction | |
| b | half axis in y-direction | |
| angle_start | starting angle of ellipse section | |
| angle_end | ending angle of ellipse section | |
| alpha | rotation angle of ellipse | |
| controlPoints | the number of points to use for drawing | |
| [out] | x_start | first point of ellipse | 
| [out] | x_end | last point of ellipse | 
| JKQTCOMMON_LIB_EXPORT QVector< QPointF > JKQTPSplitEllipseIntoPoints | ( | std::function< QPointF(QPointF)> | fTransform, | 
| double | x, | ||
| double | y, | ||
| double | a, | ||
| double | b, | ||
| double | angle_start = 0, | ||
| double | angle_end = 360, | ||
| double | alpha = 0, | ||
| QPointF * | x_start = nullptr, | ||
| QPointF * | x_end = nullptr, | ||
| QPointF * | x_start_notrafo = nullptr, | ||
| QPointF * | x_end_notrafo = nullptr ) | 
represent an ellipse as a series of points on the ellipse
| fTransform | a function that transforms a point in graph coordinate space into pixel coordinate space | |
| x | center of ellipse (x-coordinate) | |
| y | center of ellipse (y-coordinate) | |
| a | half axis in x-direction | |
| b | half axis in y-direction | |
| angle_start | starting angle of ellipse section | |
| angle_end | ending angle of ellipse section | |
| alpha | rotation angle of ellipse | |
| [out] | x_start | first point of ellipse, with fTransform applied | 
| [out] | x_end | last point of ellipse, with fTransform applied | 
| [out] | x_start_notrafo | first point of ellipse, without fTransform applied | 
| [out] | x_end_notrafo | last point of ellipse, without fTransform applied | 
| JKQTCOMMON_LIB_EXPORT QVector< QPointF > JKQTPSplitLineIntoPoints | ( | const QLineF & | line, | 
| int | controlPoints = 180 ) | 
represent a line as a series of points on the ellipse
| line | the line to draw | 
| controlPoints | the number of points to use for drawing | 
| JKQTCOMMON_LIB_EXPORT QVector< QPointF > JKQTPSplitLineIntoPoints | ( | const QLineF & | line, | 
| std::function< QPointF(QPointF)> | fTransform ) | 
represent a line as a series of points on the ellipse
| line | the line to draw in graph coordinate space | 
| fTransform | a function that transforms a point in graph coordinate space into pixel coordinate space | 
| JKQTCOMMON_LIB_EXPORT QVector< QPointF > JKQTPSplitPolylineIntoPoints | ( | const QVector< QPointF > & | line, | 
| std::function< QPointF(QPointF)> | fTransform ) | 
represent a poly-line as a series of points on the ellipse
| line | the poly-line to draw in graph coordinate space | 
| fTransform | a function that transforms a point in graph coordinate space into pixel coordinate space | 
| JKQTCOMMON_LIB_EXPORT QVector< QPolygonF > JKQTPUnifyLinesToPolygons | ( | const QVector< QLineF > & | lines, | 
| double | distanceThreshold = 0.3, | ||
| int | searchMaxSurroundingElements = 10 ) | 
takes a list of QLineF objesct lines and tries to combine as many of them as possible to QPolygonF objects. Note: This method implements an incomplete algorithm with searchMaxSurroundingElements>0, as solving the complete problem is very time-consuming (cubic runtime)
| lines | line segments to unify | 
| distanceThreshold | if two end-points are closer together as this value, they are united to a single point | 
| searchMaxSurroundingElements | limits the search for a connected polygon to at most this number of neighbors | 
| JKQTCOMMON_LIB_EXPORT JKQTPGraphSymbols String2JKQTPGraphSymbols | ( | const QString & | pos | ) | 
converts a String into a JKQTPGraphSymbols
| JKQTCOMMON_LIB_EXPORT JKQTPLineDecoratorStyle String2JKQTPLineDecoratorStyle | ( | const QString & | pos | ) | 
converts a String into a JKQTPLineDecoratorStyle
      
  | 
  static | 
stores all custom JKQTPGraphSymbols registered using JKQTPRegisterCustomGraphSymbol