mirror of
https://github.com/jkriege2/JKQtPlotter.git
synced 2024-12-25 01:51:49 +08:00
renamed JKQTPPlotObject->JKQTPGeometricPlotElement and added new base class JKQTPPlotAnnotationElement
This commit is contained in:
parent
f4767072a4
commit
f368855076
@ -58,7 +58,7 @@ This software is licensed under the term of the [GNU Lesser General Public Licen
|
|||||||
- extensive library of image plots (inclusing different color-scale modes, RGBA-plots, overlays/masks)
|
- extensive library of image plots (inclusing different color-scale modes, RGBA-plots, overlays/masks)
|
||||||
- contour plots
|
- contour plots
|
||||||
- geometric forms/annotations
|
- geometric forms/annotations
|
||||||
- can be easily extended by deriving a new graph from JKQTPPlotElement or JKQTPPlotObject
|
- can be easily extended by deriving a new graph from JKQTPPlotElement, JKQTPPlotAnnotationElement, JKQTPGeometricPlotElement, JKQTPGraph
|
||||||
- optional: OpenCV, CImg interfaces
|
- optional: OpenCV, CImg interfaces
|
||||||
- CMake-based build system
|
- CMake-based build system
|
||||||
- extensive set of [Examples/Tutorials](./examples/README.md)
|
- extensive set of [Examples/Tutorials](./examples/README.md)
|
||||||
|
@ -1,64 +0,0 @@
|
|||||||
digraph
|
|
||||||
{
|
|
||||||
// LATEX_PDF_SIZE
|
|
||||||
bgcolor="transparent";
|
|
||||||
edge [fontname="FreeSans",fontsize="12",labelfontname="FreeSans",labelfontsize="12"];
|
|
||||||
node [fontname="FreeSans",fontsize="12",shape=record];
|
|
||||||
rankdir="LR";
|
|
||||||
|
|
||||||
{
|
|
||||||
rank=same;
|
|
||||||
JKQTPPlotElement [URL="\link JKQTPPlotElement"];
|
|
||||||
noteJKQTPPlotElement [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nelements drawn\nonto a plot"];
|
|
||||||
JKQTPPlotElement -> noteJKQTPPlotElement [style=dashed,arrowhead=none];
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
rank=same;
|
|
||||||
JKQTPGraph [URL="\link JKQTPPlotElement"];
|
|
||||||
noteJKQTPGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nactual graphs"];
|
|
||||||
JKQTPGraph -> noteJKQTPGraph [style=dashed,arrowhead=none];
|
|
||||||
JKQTPPlotObject [URL="\link JKQTPPlotObject"];
|
|
||||||
noteJKQTPPlotObject [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nnon-graph elements,\ne.g. geometric elements"];
|
|
||||||
JKQTPPlotObject -> noteJKQTPPlotObject [style=dashed,arrowhead=none];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
{
|
|
||||||
rank=same;
|
|
||||||
|
|
||||||
JKQTPXYGraph [URL="\link JKQTPXYGraph"]
|
|
||||||
noteJKQTPXYGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on\n (x,y) data pairs"];
|
|
||||||
JKQTPXYGraph -> noteJKQTPXYGraph [style=dashed,arrowhead=none];
|
|
||||||
JKQTPSingleColumnGraph [URL="\link JKQTPSingleColumnGraph"]
|
|
||||||
noteJKQTPSingleColumnGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on only\n a single column of data"];
|
|
||||||
JKQTPSingleColumnGraph -> noteJKQTPSingleColumnGraph [style=dashed,arrowhead=none];
|
|
||||||
JKQTPImageBase [URL="\link JKQTPImageBase"]
|
|
||||||
noteJKQTPImageBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphsthat represent \n2D images/matrices"];
|
|
||||||
JKQTPImageBase -> noteJKQTPImageBase [style=dashed,arrowhead=none];
|
|
||||||
JKQTPGeoBaseLine [URL="\link JKQTPGeoBaseLine"];
|
|
||||||
noteJKQTPGeoBaseLine [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngeometric elements\nthat need line properties\n (color, width, ...)"];
|
|
||||||
JKQTPGeoBaseLine -> noteJKQTPGeoBaseLine [style=dashed,arrowhead=none];
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
rank=same;
|
|
||||||
|
|
||||||
JKQTPMathImageBase [URL="\link JKQTPMathImageBase"]
|
|
||||||
noteJKQTPMathImageBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngeometric elements\nthat need area fill properties\n (fillcolor, pattern, ...)"];
|
|
||||||
JKQTPMathImageBase -> noteJKQTPMathImageBase [style=dashed,arrowhead=none];
|
|
||||||
|
|
||||||
JKQTPGeoBaseFilled [URL="\link JKQTPGeoBaseFilled"];
|
|
||||||
noteJKQTPGeoBaseFilled [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngeometric elements\nthat need area fill properties\n (fillcolor, pattern, ...)"];
|
|
||||||
JKQTPGeoBaseFilled -> noteJKQTPGeoBaseFilled [style=dashed,arrowhead=none];
|
|
||||||
}
|
|
||||||
JKQTPGraph -> JKQTPXYGraph
|
|
||||||
JKQTPGraph -> JKQTPSingleColumnGraph
|
|
||||||
JKQTPGraph -> JKQTPImageBase -> JKQTPMathImageBase
|
|
||||||
|
|
||||||
|
|
||||||
JKQTPPlotElement -> JKQTPGraph
|
|
||||||
JKQTPPlotElement -> JKQTPPlotObject
|
|
||||||
JKQTPPlotObject -> JKQTPGeoBaseLine -> JKQTPGeoBaseFilled
|
|
||||||
|
|
||||||
}
|
|
125
doc/dot/jkqtplotter_graphhirarchy.gv
Normal file
125
doc/dot/jkqtplotter_graphhirarchy.gv
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
digraph
|
||||||
|
{
|
||||||
|
// LATEX_PDF_SIZE
|
||||||
|
bgcolor="transparent";
|
||||||
|
edge [fontname="FreeSans",fontsize="12",labelfontname="FreeSans",labelfontsize="12"];
|
||||||
|
node [fontname="FreeSans",fontsize="12",shape=record];
|
||||||
|
rankdir="LR";
|
||||||
|
|
||||||
|
{
|
||||||
|
rank=same;
|
||||||
|
JKQTPPlotElement [URL="\link JKQTPPlotElement"];
|
||||||
|
noteJKQTPPlotElement [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nelements drawn\nonto a plot"];
|
||||||
|
JKQTPPlotElement -> noteJKQTPPlotElement [style=dashed,arrowhead=none];
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
rank=same;
|
||||||
|
JKQTPGraph [URL="\link JKQTPPlotElement"];
|
||||||
|
noteJKQTPGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nactual graphs"];
|
||||||
|
JKQTPGraph -> noteJKQTPGraph [style=dashed,arrowhead=none];
|
||||||
|
|
||||||
|
JKQTPGeometricPlotElement [URL="\link JKQTPGeometricPlotElement"];
|
||||||
|
noteJKQTPGeometricPlotElement [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nnon-graph elements,\ne.g. geometric elements"];
|
||||||
|
JKQTPGeometricPlotElement -> noteJKQTPGeometricPlotElement [style=dashed,arrowhead=none];
|
||||||
|
|
||||||
|
JKQTPPlotAnnotationElement [URL="\link JKQTPPlotAnnotationElement"];
|
||||||
|
noteJKQTPPlotAnnotationElement [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraph annotation elements,\ne.g. text, symbols, ranges ..."];
|
||||||
|
JKQTPPlotAnnotationElement -> noteJKQTPPlotAnnotationElement [style=dashed,arrowhead=none];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
rank=same;
|
||||||
|
|
||||||
|
JKQTPXYGraph [URL="\link JKQTPXYGraph"]
|
||||||
|
noteJKQTPXYGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on\n (x,y) data pairs"];
|
||||||
|
JKQTPXYGraph -> noteJKQTPXYGraph [style=dashed,arrowhead=none];
|
||||||
|
|
||||||
|
JKQTPSingleColumnGraph [URL="\link JKQTPSingleColumnGraph"]
|
||||||
|
noteJKQTPSingleColumnGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on only\n a single column of data"];
|
||||||
|
JKQTPSingleColumnGraph -> noteJKQTPSingleColumnGraph [style=dashed,arrowhead=none];
|
||||||
|
|
||||||
|
JKQTPImageBase [URL="\link JKQTPImageBase"]
|
||||||
|
noteJKQTPImageBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs that represent \n2D images/matrices"];
|
||||||
|
JKQTPImageBase -> noteJKQTPImageBase [style=dashed,arrowhead=none];
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
rank=same;
|
||||||
|
|
||||||
|
JKQTPXYYGraph [URL="\link JKQTPXYYGraph"]
|
||||||
|
noteJKQTPXYYGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on\n (x, y1, y2) data tripels"];
|
||||||
|
JKQTPXYYGraph -> noteJKQTPXYYGraph [style=dashed,arrowhead=none];
|
||||||
|
|
||||||
|
JKQTPXXYGraph [URL="\link JKQTPXXYGraph"]
|
||||||
|
noteJKQTPXXYGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on\n (x1, x2, y) data tripels"];
|
||||||
|
JKQTPXXYGraph -> noteJKQTPXXYGraph [style=dashed,arrowhead=none];
|
||||||
|
|
||||||
|
JKQTPXYBaselineGraph [URL="\link JKQTPXYBaselineGraph"]
|
||||||
|
noteJJKQTPXYBaselineGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on\n (x,y) data pairs and a baseline"];
|
||||||
|
JKQTPXYBaselineGraph -> noteJJKQTPXYBaselineGraph [style=dashed,arrowhead=none];
|
||||||
|
|
||||||
|
JKQTPEvaluatedFunctionGraphBase [URL="\link JKQTPEvaluatedFunctionGraphBase"]
|
||||||
|
noteJKQTPEvaluatedFunctionGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs that represent \ndynamically evaluated functions"];
|
||||||
|
JKQTPEvaluatedFunctionGraphBase -> noteJKQTPEvaluatedFunctionGraphBase [style=dashed,arrowhead=none];
|
||||||
|
|
||||||
|
JKQTPMathImageBase [URL="\link JKQTPMathImageBase"]
|
||||||
|
noteJKQTPMathImageBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ndata-based images"];
|
||||||
|
JKQTPMathImageBase -> noteJKQTPMathImageBase [style=dashed,arrowhead=none];
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
rank=same;
|
||||||
|
|
||||||
|
JKQTPBarGraphBase [URL="\link JKQTPBarGraphBase"]
|
||||||
|
noteJKQTPBarGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nbarcharts"];
|
||||||
|
JKQTPBarGraphBase -> noteJKQTPBarGraphBase [style=dashed,arrowhead=none];
|
||||||
|
|
||||||
|
JKQTPFilledCurveGraphBase [URL="\link JKQTPFilledCurveGraphBase"]
|
||||||
|
noteJKQTPFilledCurveGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nfilled graphs"];
|
||||||
|
JKQTPFilledCurveGraphBase -> noteJKQTPFilledCurveGraphBase [style=dashed,arrowhead=none];
|
||||||
|
|
||||||
|
JKQTPImpulsesGraphBase [URL="\link JKQTPImpulsesGraphBase"]
|
||||||
|
noteJKQTPImpulsesGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nimpulse graphs"];
|
||||||
|
JKQTPImpulsesGraphBase -> noteJKQTPImpulsesGraphBase [style=dashed,arrowhead=none];
|
||||||
|
|
||||||
|
JKQTPSpecialLineGraphBase [URL="\link JKQTPSpecialLineGraphBase"]
|
||||||
|
noteJKQTPSpecialLineGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nspecial line graphs"];
|
||||||
|
JKQTPSpecialLineGraphBase -> noteJKQTPSpecialLineGraphBase [style=dashed,arrowhead=none];
|
||||||
|
|
||||||
|
JKQTPBoxplotGraphBase [URL="\link JKQTPBoxplotGraphBase"]
|
||||||
|
noteJKQTPBoxplotGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs that represent \na set of boxplots"];
|
||||||
|
JKQTPBoxplotGraphBase -> noteJKQTPBoxplotGraphBase [style=dashed,arrowhead=none];
|
||||||
|
|
||||||
|
JKQTPRangeBase [URL="\link JKQTPRangeBase"];
|
||||||
|
noteJKQTPRangeBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nrange annotations"];
|
||||||
|
JKQTPRangeBase -> noteJKQTPRangeBase [style=dashed,arrowhead=none];
|
||||||
|
|
||||||
|
JKQTPBoxplotElementBase [URL="\link JKQTPBoxplotElementBase"]
|
||||||
|
noteJKQTPBoxplotElementBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs that represent \na single boxplot"];
|
||||||
|
JKQTPBoxplotElementBase -> noteJKQTPBoxplotElementBase [style=dashed,arrowhead=none];
|
||||||
|
}
|
||||||
|
|
||||||
|
JKQTPPlotElement -> JKQTPGraph
|
||||||
|
JKQTPPlotElement -> JKQTPGeometricPlotElement
|
||||||
|
JKQTPPlotElement -> JKQTPPlotAnnotationElement
|
||||||
|
JKQTPPlotElement -> JKQTPRangeBase
|
||||||
|
JKQTPPlotElement -> JKQTPBoxplotElementBase
|
||||||
|
|
||||||
|
JKQTPGraph -> JKQTPXYGraph
|
||||||
|
JKQTPGraph -> JKQTPSingleColumnGraph
|
||||||
|
JKQTPGraph -> JKQTPImageBase -> JKQTPMathImageBase
|
||||||
|
JKQTPGraph -> JKQTPEvaluatedFunctionGraphBase
|
||||||
|
JKQTPGraph -> JKQTPBoxplotGraphBase
|
||||||
|
|
||||||
|
JKQTPXYGraph -> JKQTPXYYGraph
|
||||||
|
JKQTPXYGraph -> JKQTPXXYGraph
|
||||||
|
JKQTPXYGraph -> JKQTPXYBaselineGraph
|
||||||
|
|
||||||
|
JKQTPXYBaselineGraph -> JKQTPBarGraphBase
|
||||||
|
JKQTPXYBaselineGraph -> JKQTPFilledCurveGraphBase
|
||||||
|
JKQTPXYBaselineGraph -> JKQTPImpulsesGraphBase
|
||||||
|
JKQTPXYBaselineGraph -> JKQTPSpecialLineGraphBase
|
||||||
|
|
||||||
|
}
|
@ -74,7 +74,7 @@ All test-projects are Qt-projects that use qmake to build. You can load them int
|
|||||||
<tr><th> Screenshot <th> Description <th> Notes
|
<tr><th> Screenshot <th> Description <th> Notes
|
||||||
<tr><td> \image html geometric_small.png
|
<tr><td> \image html geometric_small.png
|
||||||
<td> \subpage JKQTPlotterGeometricGraphs
|
<td> \subpage JKQTPlotterGeometricGraphs
|
||||||
<td> `JKQTPPlotObject`, `JKQTPGeoArc`, `JKQTPGeoLine`, `JKQTPGeoRectangle`, ...
|
<td> `JKQTPGeometricPlotElement`, `JKQTPGeoArc`, `JKQTPGeoLine`, `JKQTPGeoRectangle`, ...
|
||||||
<tr><td> \image html geo_arrows_small.png
|
<tr><td> \image html geo_arrows_small.png
|
||||||
<td> \subpage JKQTPlotterGeometricArrows
|
<td> \subpage JKQTPlotterGeometricArrows
|
||||||
<td> `JKQTPGeoArrow`, ...
|
<td> `JKQTPGeoArrow`, ...
|
||||||
|
@ -248,7 +248,7 @@ These are used to e.g. add color-scales to the side of the graph:
|
|||||||
Usually if writing a new graph, one would not directly
|
Usually if writing a new graph, one would not directly
|
||||||
derive from JKQTPPlotElement, but from a cass in it's hirarchy of children. These children already provide certain facilities for certain types of graphs.
|
derive from JKQTPPlotElement, but from a cass in it's hirarchy of children. These children already provide certain facilities for certain types of graphs.
|
||||||
|
|
||||||
\dotfile jkqtplotter_graphhirarchy.dot
|
\dotfile jkqtplotter_graphhirarchy.gv
|
||||||
|
|
||||||
\subsection jkqtplotter_graphsgroup_classstructure_mixins Mix-In Classes for Graphs
|
\subsection jkqtplotter_graphsgroup_classstructure_mixins Mix-In Classes for Graphs
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@
|
|||||||
- \ref jkqtplotter_imagelots_elements "extensive library of image plots" (inclusing different color-scale modes, RGBA-plots, overlays/masks)
|
- \ref jkqtplotter_imagelots_elements "extensive library of image plots" (inclusing different color-scale modes, RGBA-plots, overlays/masks)
|
||||||
- \ref jkqtplotter_imagelots_contour "contour plots"
|
- \ref jkqtplotter_imagelots_contour "contour plots"
|
||||||
- \ref jkqtplotter_geoplots "geometric forms/annotations"
|
- \ref jkqtplotter_geoplots "geometric forms/annotations"
|
||||||
- can be easily extended by deriving a new graph from JKQTPPlotElement or JKQTPPlotObject
|
- can be easily extended by deriving a new graph from JKQTPPlotElement or JKQTPGeometricPlotElement
|
||||||
- <b>OPTIONAL: Interfaces to external libraries</b>
|
- <b>OPTIONAL: Interfaces to external libraries</b>
|
||||||
- \ref jkqtpinterfaceopencv "OpenCV interface"
|
- \ref jkqtpinterfaceopencv "OpenCV interface"
|
||||||
- \ref jkqtpinterfacecimg "CImg interface"
|
- \ref jkqtpinterfacecimg "CImg interface"
|
||||||
|
@ -20,6 +20,7 @@ Changes, compared to \ref page_whatsnew_V2019_11 "v2019.11" include:
|
|||||||
<li> fixed issue <a href="https://github.com/jkriege2/JKQtPlotter/pull/41">#41: Build error when JKQtPlotter_BUILD_INCLUDE_XITS_FONTS set to OFF </a>, thanks to <a href="https://github.com/smistad">user:smistad</a></li>
|
<li> fixed issue <a href="https://github.com/jkriege2/JKQtPlotter/pull/41">#41: Build error when JKQtPlotter_BUILD_INCLUDE_XITS_FONTS set to OFF </a>, thanks to <a href="https://github.com/smistad">user:smistad</a></li>
|
||||||
<li> fixed issue <a href="https://github.com/jkriege2/JKQtPlotter/pull/37">#37: CMake installs things into $PREFIX/doc/*.txt </a>, thanks to <a href="https://github.com/certik">user:certik</a></li>
|
<li> fixed issue <a href="https://github.com/jkriege2/JKQtPlotter/pull/37">#37: CMake installs things into $PREFIX/doc/*.txt </a>, thanks to <a href="https://github.com/certik">user:certik</a></li>
|
||||||
<li> fixed issue <a href="https://github.com/jkriege2/JKQtPlotter/pull/45">#45: Build error on mac jkqtfastplotter.cpp:342:28: Variable has incomplete type 'QPainterPath'</a>, thanks to <a href="https://github.com/abdedixit">user:abdedixit</a></li>
|
<li> fixed issue <a href="https://github.com/jkriege2/JKQtPlotter/pull/45">#45: Build error on mac jkqtfastplotter.cpp:342:28: Variable has incomplete type 'QPainterPath'</a>, thanks to <a href="https://github.com/abdedixit">user:abdedixit</a></li>
|
||||||
|
<li>renamed/breaking change: renamed JKQTPPlotObject->JKQTPGeometricPlotElement and added new base class JKQTPPlotAnnotationElement</li>
|
||||||
<li>renamed/breaking change: renamed JKQTPColorPaletteStyleAndToolsMixin::setPalette() -> JKQTPColorPaletteStyleAndToolsMixin::setColorPalette()</li>
|
<li>renamed/breaking change: renamed JKQTPColorPaletteStyleAndToolsMixin::setPalette() -> JKQTPColorPaletteStyleAndToolsMixin::setColorPalette()</li>
|
||||||
<li>removed/breaking change: removed the usage of some deprecated functions and objects (e.g. QMatrix)</li>
|
<li>removed/breaking change: removed the usage of some deprecated functions and objects (e.g. QMatrix)</li>
|
||||||
<li>removed/breaking change: removed the overlay elements (derived from JKQTPOverlayElement), which were not very well set up and are more confusing than useful.</li>
|
<li>removed/breaking change: removed the overlay elements (derived from JKQTPOverlayElement), which were not very well set up and are more confusing than useful.</li>
|
||||||
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
@ -43,7 +43,7 @@ This software is licensed under the term of the [GNU Lesser General Public Licen
|
|||||||
- extensive library of image plots (inclusing different color-scale modes, RGBA-plots, overlays/masks)
|
- extensive library of image plots (inclusing different color-scale modes, RGBA-plots, overlays/masks)
|
||||||
- contour plots
|
- contour plots
|
||||||
- geometric forms/annotations
|
- geometric forms/annotations
|
||||||
- can be easily extended by deriving a new graph from JKQTPPlotElement or JKQTPPlotObject
|
- can be easily extended by deriving a new graph from JKQTPPlotElement or JKQTPGeometricPlotElement
|
||||||
- optional: OpenCV, CImg interfaces
|
- optional: OpenCV, CImg interfaces
|
||||||
- CMake-based build system
|
- CMake-based build system
|
||||||
- extensive set of Examples/Tutorials: [https://jkriege2.github.io/JKQtPlotter/example\_tutorial\_projects.html](https://jkriege2.github.io/JKQtPlotter/example_tutorial_projects.html)
|
- extensive set of Examples/Tutorials: [https://jkriege2.github.io/JKQtPlotter/example\_tutorial\_projects.html](https://jkriege2.github.io/JKQtPlotter/example_tutorial_projects.html)
|
||||||
|
@ -124,16 +124,16 @@ int main(int argc, char* argv[])
|
|||||||
cmb->setCurrentIndex(0);
|
cmb->setCurrentIndex(0);
|
||||||
QObject::connect(cmb, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [&](int index) {
|
QObject::connect(cmb, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [&](int index) {
|
||||||
for (size_t i=0; i<plot->getPlotter()->getGraphCount(); i++) {
|
for (size_t i=0; i<plot->getPlotter()->getGraphCount(); i++) {
|
||||||
JKQTPPlotObject* obj=dynamic_cast<JKQTPPlotObject*>(plot->getPlotter()->getGraph(i));
|
JKQTPGeometricPlotElement* obj=dynamic_cast<JKQTPGeometricPlotElement*>(plot->getPlotter()->getGraph(i));
|
||||||
if (obj) {
|
if (obj) {
|
||||||
obj->setDrawMode((index==0)?JKQTPPlotObject::DrawAsGraphicElement:JKQTPPlotObject::DrawAsMathematicalCurve);
|
obj->setDrawMode((index==0)?JKQTPGeometricPlotElement::DrawAsGraphicElement:JKQTPGeometricPlotElement::DrawAsMathematicalCurve);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
plot->redrawPlot();
|
plot->redrawPlot();
|
||||||
for (size_t i=0; i<plotlog->getPlotter()->getGraphCount(); i++) {
|
for (size_t i=0; i<plotlog->getPlotter()->getGraphCount(); i++) {
|
||||||
JKQTPPlotObject* obj=dynamic_cast<JKQTPPlotObject*>(plotlog->getPlotter()->getGraph(i));
|
JKQTPGeometricPlotElement* obj=dynamic_cast<JKQTPGeometricPlotElement*>(plotlog->getPlotter()->getGraph(i));
|
||||||
if (obj) {
|
if (obj) {
|
||||||
obj->setDrawMode((index==0)?JKQTPPlotObject::DrawAsGraphicElement:JKQTPPlotObject::DrawAsMathematicalCurve);
|
obj->setDrawMode((index==0)?JKQTPGeometricPlotElement::DrawAsGraphicElement:JKQTPGeometricPlotElement::DrawAsMathematicalCurve);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
plotlog->redrawPlot();
|
plotlog->redrawPlot();
|
||||||
|
@ -113,22 +113,22 @@ The example also adds some control-widgets that allow to change the properties o
|
|||||||
cmb->setCurrentIndex(0);
|
cmb->setCurrentIndex(0);
|
||||||
QObject::connect(cmb, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [plot](int index) {
|
QObject::connect(cmb, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [plot](int index) {
|
||||||
for (size_t i=0; i<plot->getPlotter()->getGraphCount(); i++) {
|
for (size_t i=0; i<plot->getPlotter()->getGraphCount(); i++) {
|
||||||
JKQTPPlotObject* obj=dynamic_cast<JKQTPPlotObject*>(plot->getPlotter()->getGraph(i));
|
JKQTPGeometricPlotElement* obj=dynamic_cast<JKQTPGeometricPlotElement*>(plot->getPlotter()->getGraph(i));
|
||||||
if (obj) {
|
if (obj) {
|
||||||
obj->setDrawMode((index==0)?JKQTPPlotObject::DrawAsGraphicElement:JKQTPPlotObject::DrawAsMathematicalCurve);
|
obj->setDrawMode((index==0)?JKQTPGeometricPlotElement::DrawAsGraphicElement:JKQTPGeometricPlotElement::DrawAsMathematicalCurve);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
plot->redrawPlot();
|
plot->redrawPlot();
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
Now you can play with these controls and see how the different shapes get distorted when these properties change, in dependence of whether the DrawMode is `JKQTPPlotObject::DrawAsMathematicalCurve` or `JKQTPPlotObject::DrawAsGraphicElement`.
|
Now you can play with these controls and see how the different shapes get distorted when these properties change, in dependence of whether the DrawMode is `JKQTPGeometricPlotElement::DrawAsMathematicalCurve` or `JKQTPGeometricPlotElement::DrawAsGraphicElement`.
|
||||||
|
|
||||||
Here is an example on log-log axes and DrawMode = `JKQTPPlotObject::DrawAsGraphicElement`:
|
Here is an example on log-log axes and DrawMode = `JKQTPGeometricPlotElement::DrawAsGraphicElement`:
|
||||||
|
|
||||||
![geometric](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/geometric_loglog_DrawAsGraphicElement.png)
|
![geometric](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/geometric_loglog_DrawAsGraphicElement.png)
|
||||||
|
|
||||||
Here is an example on log-log axes and DrawMode = `JKQTPPlotObject::DrawAsMathematicalCurve`: Observe how straight lines are bent to the appropriate curve!
|
Here is an example on log-log axes and DrawMode = `JKQTPGeometricPlotElement::DrawAsMathematicalCurve`: Observe how straight lines are bent to the appropriate curve!
|
||||||
|
|
||||||
![geometric](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/geometric_loglog_DrawAsMathematicalCurve.png)
|
![geometric](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/geometric_loglog_DrawAsMathematicalCurve.png)
|
||||||
|
|
||||||
|
@ -46,9 +46,9 @@ int main(int argc, char* argv[])
|
|||||||
cmb->setCurrentIndex(0);
|
cmb->setCurrentIndex(0);
|
||||||
QObject::connect(cmb, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [plot](int index) {
|
QObject::connect(cmb, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [plot](int index) {
|
||||||
for (size_t i=0; i<plot->getPlotter()->getGraphCount(); i++) {
|
for (size_t i=0; i<plot->getPlotter()->getGraphCount(); i++) {
|
||||||
JKQTPPlotObject* obj=dynamic_cast<JKQTPPlotObject*>(plot->getPlotter()->getGraph(i));
|
JKQTPGeometricPlotElement* obj=dynamic_cast<JKQTPGeometricPlotElement*>(plot->getPlotter()->getGraph(i));
|
||||||
if (obj) {
|
if (obj) {
|
||||||
obj->setDrawMode((index==0)?JKQTPPlotObject::DrawAsGraphicElement:JKQTPPlotObject::DrawAsMathematicalCurve);
|
obj->setDrawMode((index==0)?JKQTPGeometricPlotElement::DrawAsGraphicElement:JKQTPGeometricPlotElement::DrawAsMathematicalCurve);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
plot->redrawPlot();
|
plot->redrawPlot();
|
||||||
|
@ -730,7 +730,7 @@ void JKQTPBoxplotHorizontalGraph::draw(JKQTPEnhancedPainter& painter) {
|
|||||||
|
|
||||||
|
|
||||||
JKQTPBoxplotVerticalElement::JKQTPBoxplotVerticalElement(JKQTBasePlotter* parent):
|
JKQTPBoxplotVerticalElement::JKQTPBoxplotVerticalElement(JKQTBasePlotter* parent):
|
||||||
JKQTPPlotObject(DrawAsGraphicElement, parent)
|
JKQTPGeometricPlotElement(DrawAsGraphicElement, parent)
|
||||||
{
|
{
|
||||||
pos=JKQTP_NAN;
|
pos=JKQTP_NAN;
|
||||||
median=JKQTP_NAN;
|
median=JKQTP_NAN;
|
||||||
|
@ -309,7 +309,7 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPBoxplotHorizontalGraph: public JKQTPBoxplotVer
|
|||||||
\see jkqtpstatVAddBoxplot(), \ref JKQTPlotterBasicJKQTPDatastoreStatistics, \ref JKQTPlotterBoxplotsGraphs, \ref JKQTPlotterBoxplotStyling, jkqtpstatAddVBoxplotAndOutliers()
|
\see jkqtpstatVAddBoxplot(), \ref JKQTPlotterBasicJKQTPDatastoreStatistics, \ref JKQTPlotterBoxplotsGraphs, \ref JKQTPlotterBoxplotStyling, jkqtpstatAddVBoxplotAndOutliers()
|
||||||
|
|
||||||
*/
|
*/
|
||||||
class JKQTPLOTTER_LIB_EXPORT JKQTPBoxplotVerticalElement: public JKQTPPlotObject, public JKQTPGraphBoxplotStyleMixin {
|
class JKQTPLOTTER_LIB_EXPORT JKQTPBoxplotVerticalElement: public JKQTPGeometricPlotElement, public JKQTPGraphBoxplotStyleMixin {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
/** \brief class constructor */
|
/** \brief class constructor */
|
||||||
|
@ -43,7 +43,7 @@ JKQTPGeoText::JKQTPGeoText(JKQTPlotter* parent, double x, double y, const QStrin
|
|||||||
}
|
}
|
||||||
|
|
||||||
JKQTPGeoText::JKQTPGeoText(JKQTBasePlotter *parent, double x_, double y_, const QString& text_):
|
JKQTPGeoText::JKQTPGeoText(JKQTBasePlotter *parent, double x_, double y_, const QString& text_):
|
||||||
JKQTPPlotObject(DrawAsGraphicElement, parent), JKQTPGraphTextStyleMixin(parent), x(x_),y(y_),text(text_)
|
JKQTPPlotAnnotationElement(parent), JKQTPGraphTextStyleMixin(parent), x(x_),y(y_),text(text_)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -131,7 +131,7 @@ QColor JKQTPGeoText::getKeyLabelColor() const {
|
|||||||
|
|
||||||
|
|
||||||
JKQTPGeoSymbol::JKQTPGeoSymbol(JKQTBasePlotter *parent, double x, double y, JKQTPGraphSymbols symbol, double symbolSize, QColor color, QColor fillColor):
|
JKQTPGeoSymbol::JKQTPGeoSymbol(JKQTBasePlotter *parent, double x, double y, JKQTPGraphSymbols symbol, double symbolSize, QColor color, QColor fillColor):
|
||||||
JKQTPPlotObject(DrawAsGraphicElement, parent)
|
JKQTPPlotAnnotationElement(parent)
|
||||||
{
|
{
|
||||||
this->x=x;
|
this->x=x;
|
||||||
this->y=y;
|
this->y=y;
|
||||||
|
@ -33,13 +33,13 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*! \brief This virtual JKQTPGraph descendent may be used to display a single symbol (marker).
|
/*! \brief This virtual JKQTPPlotAnnotationElement descendent may be used to display a single symbol (marker).
|
||||||
\ingroup jkqtplotter_annotations
|
\ingroup jkqtplotter_annotations
|
||||||
|
|
||||||
\see \ref JKQTPlotterGeometricGraphs
|
\see \ref JKQTPlotterGeometricGraphs
|
||||||
|
|
||||||
*/
|
*/
|
||||||
class JKQTPLOTTER_LIB_EXPORT JKQTPGeoSymbol: public JKQTPPlotObject, public JKQTPGraphSymbolStyleMixin {
|
class JKQTPLOTTER_LIB_EXPORT JKQTPGeoSymbol: public JKQTPPlotAnnotationElement, public JKQTPGraphSymbolStyleMixin {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
/*! \brief class contructor
|
/*! \brief class contructor
|
||||||
@ -65,21 +65,14 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPGeoSymbol: public JKQTPPlotObject, public JKQT
|
|||||||
*/
|
*/
|
||||||
JKQTPGeoSymbol(JKQTPlotter* parent, double x, double y, JKQTPGraphSymbols symbol=JKQTPCross, double symbolSize=10, QColor color=QColor("black"), QColor fillColor=QColor("grey"));
|
JKQTPGeoSymbol(JKQTPlotter* parent, double x, double y, JKQTPGraphSymbols symbol=JKQTPCross, double symbolSize=10, QColor color=QColor("black"), QColor fillColor=QColor("grey"));
|
||||||
|
|
||||||
/*! set the symbol color and symbol fill color */
|
|
||||||
virtual void setColor(QColor c);
|
|
||||||
|
|
||||||
/*! \copydoc x */
|
|
||||||
void setX(double __value);
|
|
||||||
/*! \copydoc x */
|
/*! \copydoc x */
|
||||||
double getX() const;
|
double getX() const;
|
||||||
/*! \copydoc y */
|
/*! \copydoc y */
|
||||||
void setY(double __value);
|
|
||||||
/*! \copydoc y */
|
|
||||||
double getY() const;
|
double getY() const;
|
||||||
|
|
||||||
/** \copydoc JKQTPGraph::getXMinMax() */
|
/** \copydoc JKQTPPlotAnnotationElement::getXMinMax() */
|
||||||
virtual bool getXMinMax(double& minx, double& maxx, double& smallestGreaterZero) override;
|
virtual bool getXMinMax(double& minx, double& maxx, double& smallestGreaterZero) override;
|
||||||
/** \copydoc JKQTPGraph::getYMinMax() */
|
/** \copydoc JKQTPPlotAnnotationElement::getYMinMax() */
|
||||||
virtual bool getYMinMax(double& miny, double& maxy, double& smallestGreaterZero) override;
|
virtual bool getYMinMax(double& miny, double& maxy, double& smallestGreaterZero) override;
|
||||||
|
|
||||||
/** \brief plots the graph to the plotter object specified as parent */
|
/** \brief plots the graph to the plotter object specified as parent */
|
||||||
@ -89,7 +82,15 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPGeoSymbol: public JKQTPPlotObject, public JKQT
|
|||||||
virtual void drawKeyMarker(JKQTPEnhancedPainter& painter, QRectF& rect) override;
|
virtual void drawKeyMarker(JKQTPEnhancedPainter& painter, QRectF& rect) override;
|
||||||
/** \brief returns the color to be used for the key label */
|
/** \brief returns the color to be used for the key label */
|
||||||
virtual QColor getKeyLabelColor() const override;
|
virtual QColor getKeyLabelColor() const override;
|
||||||
|
public slots:
|
||||||
|
/*! set the symbol color and symbol fill color */
|
||||||
|
virtual void setColor(QColor c);
|
||||||
|
|
||||||
|
/*! \copydoc x */
|
||||||
|
void setX(double __value);
|
||||||
|
/*! \copydoc y */
|
||||||
|
void setY(double __value);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/** \brief x-position (in plot coordinates) of the symbol (symbol center) */
|
/** \brief x-position (in plot coordinates) of the symbol (symbol center) */
|
||||||
double x;
|
double x;
|
||||||
@ -99,13 +100,13 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPGeoSymbol: public JKQTPPlotObject, public JKQT
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/*! \brief This JKQTPPlotObject is used to display text. It uses the JKQTMathText
|
/*! \brief This JKQTPPlotAnnotationElement is used to display text. It uses the JKQTMathText
|
||||||
class in order to display LaTeX formulas.
|
class in order to display LaTeX formulas.
|
||||||
\ingroup jkqtplotter_annotations
|
\ingroup jkqtplotter_annotations
|
||||||
|
|
||||||
\see \ref JKQTPlotterGeometricGraphs
|
\see \ref JKQTPlotterGeometricGraphs
|
||||||
*/
|
*/
|
||||||
class JKQTPLOTTER_LIB_EXPORT JKQTPGeoText: public JKQTPPlotObject, public JKQTPGraphTextStyleMixin {
|
class JKQTPLOTTER_LIB_EXPORT JKQTPGeoText: public JKQTPPlotAnnotationElement, public JKQTPGraphTextStyleMixin {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
/*! \brief class contructor
|
/*! \brief class contructor
|
||||||
@ -145,25 +146,17 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPGeoText: public JKQTPPlotObject, public JKQTPG
|
|||||||
*/
|
*/
|
||||||
JKQTPGeoText(JKQTPlotter* parent, double x, double y, const QString& text);
|
JKQTPGeoText(JKQTPlotter* parent, double x, double y, const QString& text);
|
||||||
|
|
||||||
/*! \copydoc text */
|
|
||||||
void setText(const QString & __value);
|
|
||||||
/*! \copydoc text */
|
/*! \copydoc text */
|
||||||
QString getText() const;
|
QString getText() const;
|
||||||
/*! \copydoc x */
|
/*! \copydoc x */
|
||||||
void setX(double __value);
|
|
||||||
/*! \copydoc x */
|
|
||||||
double getX() const;
|
double getX() const;
|
||||||
/*! \copydoc y */
|
/*! \copydoc y */
|
||||||
void setY(double __value);
|
|
||||||
/*! \copydoc y */
|
|
||||||
double getY() const;
|
double getY() const;
|
||||||
|
|
||||||
/** \brief set line and fill color */
|
|
||||||
virtual void setColor(QColor c) ;
|
|
||||||
|
|
||||||
/** \copydoc JKQTPPlotObject::getXMinMax() */
|
/** \copydoc JKQTPPlotAnnotationElement::getXMinMax() */
|
||||||
virtual bool getXMinMax(double& minx, double& maxx, double& smallestGreaterZero) override;
|
virtual bool getXMinMax(double& minx, double& maxx, double& smallestGreaterZero) override;
|
||||||
/** \copydoc JKQTPPlotObject::getYMinMax() */
|
/** \copydoc JKQTPPlotAnnotationElement::getYMinMax() */
|
||||||
virtual bool getYMinMax(double& miny, double& maxy, double& smallestGreaterZero) override;
|
virtual bool getYMinMax(double& miny, double& maxy, double& smallestGreaterZero) override;
|
||||||
|
|
||||||
/** \brief plots the graph to the plotter object specified as parent */
|
/** \brief plots the graph to the plotter object specified as parent */
|
||||||
@ -173,6 +166,16 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPGeoText: public JKQTPPlotObject, public JKQTPG
|
|||||||
virtual void drawKeyMarker(JKQTPEnhancedPainter& painter, QRectF& rect) override;
|
virtual void drawKeyMarker(JKQTPEnhancedPainter& painter, QRectF& rect) override;
|
||||||
/** \brief returns the color to be used for the key label */
|
/** \brief returns the color to be used for the key label */
|
||||||
virtual QColor getKeyLabelColor() const override;
|
virtual QColor getKeyLabelColor() const override;
|
||||||
|
public slots:
|
||||||
|
/** \brief set line and fill color */
|
||||||
|
virtual void setColor(QColor c) ;
|
||||||
|
|
||||||
|
/*! \copydoc text */
|
||||||
|
void setText(const QString & __value);
|
||||||
|
/*! \copydoc x */
|
||||||
|
void setX(double __value);
|
||||||
|
/*! \copydoc y */
|
||||||
|
void setY(double __value);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/** \brief x-position (in plot coordinates) of the text (left/baseline) */
|
/** \brief x-position (in plot coordinates) of the text (left/baseline) */
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
#define SmallestGreaterZeroCompare_xvsgz() if ((xvsgz>10.0*DBL_MIN)&&((smallestGreaterZero<10.0*DBL_MIN) || (xvsgz<smallestGreaterZero))) smallestGreaterZero=xvsgz;
|
#define SmallestGreaterZeroCompare_xvsgz() if ((xvsgz>10.0*DBL_MIN)&&((smallestGreaterZero<10.0*DBL_MIN) || (xvsgz<smallestGreaterZero))) smallestGreaterZero=xvsgz;
|
||||||
|
|
||||||
JKQTPGeoBaseLine::JKQTPGeoBaseLine(QColor color, double lineWidth, Qt::PenStyle style, JKQTBasePlotter* parent, DrawMode drawMode):
|
JKQTPGeoBaseLine::JKQTPGeoBaseLine(QColor color, double lineWidth, Qt::PenStyle style, JKQTBasePlotter* parent, DrawMode drawMode):
|
||||||
JKQTPPlotObject(drawMode, parent)
|
JKQTPGeometricPlotElement(drawMode, parent)
|
||||||
{
|
{
|
||||||
setLineColor(color);
|
setLineColor(color);
|
||||||
setLineWidth(lineWidth);
|
setLineWidth(lineWidth);
|
||||||
@ -36,7 +36,7 @@ JKQTPGeoBaseLine::JKQTPGeoBaseLine(QColor color, double lineWidth, Qt::PenStyle
|
|||||||
}
|
}
|
||||||
|
|
||||||
JKQTPGeoBaseLine::JKQTPGeoBaseLine(JKQTBasePlotter *parent, DrawMode drawMode):
|
JKQTPGeoBaseLine::JKQTPGeoBaseLine(JKQTBasePlotter *parent, DrawMode drawMode):
|
||||||
JKQTPPlotObject(drawMode, parent)
|
JKQTPGeometricPlotElement(drawMode, parent)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -124,7 +124,7 @@ void JKQTPGeoBaseFilled::drawKeyMarker(JKQTPEnhancedPainter& painter, QRectF& re
|
|||||||
|
|
||||||
|
|
||||||
JKQTPGeoBaseDecoratedHeadLine::JKQTPGeoBaseDecoratedHeadLine(QColor color, double lineWidth, JKQTPLineDecoratorStyle headStyle, Qt::PenStyle style, JKQTBasePlotter *parent, DrawMode drawMode):
|
JKQTPGeoBaseDecoratedHeadLine::JKQTPGeoBaseDecoratedHeadLine(QColor color, double lineWidth, JKQTPLineDecoratorStyle headStyle, Qt::PenStyle style, JKQTBasePlotter *parent, DrawMode drawMode):
|
||||||
JKQTPPlotObject(drawMode, parent)
|
JKQTPGeometricPlotElement(drawMode, parent)
|
||||||
{
|
{
|
||||||
setLineColor(color);
|
setLineColor(color);
|
||||||
setLineWidth(lineWidth);
|
setLineWidth(lineWidth);
|
||||||
@ -133,7 +133,7 @@ JKQTPGeoBaseDecoratedHeadLine::JKQTPGeoBaseDecoratedHeadLine(QColor color, doubl
|
|||||||
}
|
}
|
||||||
|
|
||||||
JKQTPGeoBaseDecoratedHeadLine::JKQTPGeoBaseDecoratedHeadLine(JKQTBasePlotter *parent, DrawMode drawMode):
|
JKQTPGeoBaseDecoratedHeadLine::JKQTPGeoBaseDecoratedHeadLine(JKQTBasePlotter *parent, DrawMode drawMode):
|
||||||
JKQTPPlotObject(drawMode, parent)
|
JKQTPGeometricPlotElement(drawMode, parent)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -165,7 +165,7 @@ QColor JKQTPGeoBaseDecoratedHeadLine::getKeyLabelColor() const
|
|||||||
|
|
||||||
|
|
||||||
JKQTPGeoBaseDecoratedLine::JKQTPGeoBaseDecoratedLine(QColor color, double lineWidth, JKQTPLineDecoratorStyle headStyle, JKQTPLineDecoratorStyle tailStyle, Qt::PenStyle style, JKQTBasePlotter *parent, DrawMode drawMode):
|
JKQTPGeoBaseDecoratedLine::JKQTPGeoBaseDecoratedLine(QColor color, double lineWidth, JKQTPLineDecoratorStyle headStyle, JKQTPLineDecoratorStyle tailStyle, Qt::PenStyle style, JKQTBasePlotter *parent, DrawMode drawMode):
|
||||||
JKQTPPlotObject(drawMode, parent)
|
JKQTPGeometricPlotElement(drawMode, parent)
|
||||||
{
|
{
|
||||||
setLineColor(color);
|
setLineColor(color);
|
||||||
setLineWidth(lineWidth);
|
setLineWidth(lineWidth);
|
||||||
@ -175,7 +175,7 @@ JKQTPGeoBaseDecoratedLine::JKQTPGeoBaseDecoratedLine(QColor color, double lineWi
|
|||||||
}
|
}
|
||||||
|
|
||||||
JKQTPGeoBaseDecoratedLine::JKQTPGeoBaseDecoratedLine(JKQTBasePlotter *parent, DrawMode drawMode):
|
JKQTPGeoBaseDecoratedLine::JKQTPGeoBaseDecoratedLine(JKQTBasePlotter *parent, DrawMode drawMode):
|
||||||
JKQTPPlotObject(drawMode, parent)
|
JKQTPGeometricPlotElement(drawMode, parent)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -31,12 +31,12 @@
|
|||||||
#define jkqtpgeobase_H_INCLUDED
|
#define jkqtpgeobase_H_INCLUDED
|
||||||
|
|
||||||
|
|
||||||
/*! \brief This JKQTPPlotObject is used as base class for geometric drawing
|
/*! \brief This JKQTPGeometricPlotElement is used as base class for geometric drawing
|
||||||
elements that only consist of lines (i.e. no filling of any kind is done)
|
elements that only consist of lines (i.e. no filling of any kind is done)
|
||||||
\ingroup jkqtplotter_geoplots
|
\ingroup jkqtplotter_geoplots
|
||||||
|
|
||||||
*/
|
*/
|
||||||
class JKQTPLOTTER_LIB_EXPORT JKQTPGeoBaseLine: public JKQTPPlotObject, public JKQTPGraphLineStyleMixin {
|
class JKQTPLOTTER_LIB_EXPORT JKQTPGeoBaseLine: public JKQTPGeometricPlotElement, public JKQTPGraphLineStyleMixin {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
/*! \brief class contructor
|
/*! \brief class contructor
|
||||||
@ -73,12 +73,12 @@ protected:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*! \brief This JKQTPPlotObject is used as base class for geometric drawing
|
/*! \brief This JKQTPGeometricPlotElement is used as base class for geometric drawing
|
||||||
elements that consist of lines with one decorated end (i.e. no filling of any kind is done)
|
elements that consist of lines with one decorated end (i.e. no filling of any kind is done)
|
||||||
\ingroup jkqtplotter_geoplots
|
\ingroup jkqtplotter_geoplots
|
||||||
|
|
||||||
*/
|
*/
|
||||||
class JKQTPLOTTER_LIB_EXPORT JKQTPGeoBaseDecoratedHeadLine: public JKQTPPlotObject, public JKQTPGraphDecoratedHeadLineStyleMixin {
|
class JKQTPLOTTER_LIB_EXPORT JKQTPGeoBaseDecoratedHeadLine: public JKQTPGeometricPlotElement, public JKQTPGraphDecoratedHeadLineStyleMixin {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
/*! \brief class contructor
|
/*! \brief class contructor
|
||||||
@ -116,12 +116,12 @@ protected:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*! \brief This JKQTPPlotObject is used as base class for geometric drawing
|
/*! \brief This JKQTPGeometricPlotElement is used as base class for geometric drawing
|
||||||
elements that consist of lines with decorated ends (i.e. no filling of any kind is done)
|
elements that consist of lines with decorated ends (i.e. no filling of any kind is done)
|
||||||
\ingroup jkqtplotter_geoplots
|
\ingroup jkqtplotter_geoplots
|
||||||
|
|
||||||
*/
|
*/
|
||||||
class JKQTPLOTTER_LIB_EXPORT JKQTPGeoBaseDecoratedLine: public JKQTPPlotObject, public JKQTPGraphDecoratedLineStyleMixin {
|
class JKQTPLOTTER_LIB_EXPORT JKQTPGeoBaseDecoratedLine: public JKQTPGeometricPlotElement, public JKQTPGraphDecoratedLineStyleMixin {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
/*! \brief class contructor
|
/*! \brief class contructor
|
||||||
@ -154,7 +154,7 @@ protected:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/*! \brief This JKQTPPlotObject is used as base class for geometric drawing
|
/*! \brief This JKQTPGeometricPlotElement is used as base class for geometric drawing
|
||||||
elements that only consist of lines (i.e. no filling of any kind is done)
|
elements that only consist of lines (i.e. no filling of any kind is done)
|
||||||
\ingroup jkqtplotter_geoplots
|
\ingroup jkqtplotter_geoplots
|
||||||
|
|
||||||
|
@ -160,7 +160,7 @@ void JKQTPGeoLine::draw(JKQTPEnhancedPainter& painter) {
|
|||||||
|
|
||||||
// for non-linear axes, a line might not be drawn as a line, so we need to segment the line (i.e. linear function in coordinate space)
|
// for non-linear axes, a line might not be drawn as a line, so we need to segment the line (i.e. linear function in coordinate space)
|
||||||
// and transform each node to draw the corresponding non-linear curve in pixel-space!
|
// and transform each node to draw the corresponding non-linear curve in pixel-space!
|
||||||
auto fTransform=std::bind([](const JKQTPPlotObject* plot, const QPointF& p) { return plot->transform(p); }, this, std::placeholders::_1);
|
auto fTransform=std::bind([](const JKQTPGeometricPlotElement* plot, const QPointF& p) { return plot->transform(p); }, this, std::placeholders::_1);
|
||||||
QVector<QPointF> points=JKQTPSplitLineIntoPoints(line, fTransform);
|
QVector<QPointF> points=JKQTPSplitLineIntoPoints(line, fTransform);
|
||||||
points=JKQTPSimplyfyLineSegemnts(points);
|
points=JKQTPSimplyfyLineSegemnts(points);
|
||||||
if (points.size()>1) {
|
if (points.size()>1) {
|
||||||
@ -447,7 +447,7 @@ void JKQTPGeoInfiniteLine::draw(JKQTPEnhancedPainter& painter) {
|
|||||||
} else {
|
} else {
|
||||||
// for non-linear axes, a line might not be drawn as a line, so we need to segment the line (i.e. linear function in coordinate space)
|
// for non-linear axes, a line might not be drawn as a line, so we need to segment the line (i.e. linear function in coordinate space)
|
||||||
// and transform each node to draw the corresponding non-linear curve in pixel-space!
|
// and transform each node to draw the corresponding non-linear curve in pixel-space!
|
||||||
auto fTransform=std::bind([](const JKQTPPlotObject* plot, const QPointF& p) { return plot->transform(p); }, this, std::placeholders::_1);
|
auto fTransform=std::bind([](const JKQTPGeometricPlotElement* plot, const QPointF& p) { return plot->transform(p); }, this, std::placeholders::_1);
|
||||||
QVector<QPointF> points=JKQTPSplitLineIntoPoints(QLineF(x1,y1,x2,y2), fTransform);
|
QVector<QPointF> points=JKQTPSplitLineIntoPoints(QLineF(x1,y1,x2,y2), fTransform);
|
||||||
points=JKQTPSimplyfyLineSegemnts(points);
|
points=JKQTPSimplyfyLineSegemnts(points);
|
||||||
if (points.size()>1) {
|
if (points.size()>1) {
|
||||||
@ -630,7 +630,7 @@ void JKQTPGeoPolyLines::draw(JKQTPEnhancedPainter& painter) {
|
|||||||
} else {
|
} else {
|
||||||
// for non-linear axes, a line might not be drawn as a line, so we need to segment the line (i.e. linear function in coordinate space)
|
// for non-linear axes, a line might not be drawn as a line, so we need to segment the line (i.e. linear function in coordinate space)
|
||||||
// and transform each node to draw the corresponding non-linear curve in pixel-space!
|
// and transform each node to draw the corresponding non-linear curve in pixel-space!
|
||||||
auto fTransform=std::bind([](const JKQTPPlotObject* plot, const QPointF& p) { return plot->transform(p); }, this, std::placeholders::_1);
|
auto fTransform=std::bind([](const JKQTPGeometricPlotElement* plot, const QPointF& p) { return plot->transform(p); }, this, std::placeholders::_1);
|
||||||
QVector<QPointF> points_poly=JKQTPSplitPolylineIntoPoints(points, fTransform);
|
QVector<QPointF> points_poly=JKQTPSplitPolylineIntoPoints(points, fTransform);
|
||||||
points_poly=JKQTPSimplyfyLineSegemnts(points_poly);
|
points_poly=JKQTPSimplyfyLineSegemnts(points_poly);
|
||||||
if (points_poly.size()>1) {
|
if (points_poly.size()>1) {
|
||||||
@ -747,7 +747,7 @@ JKQTPGeoArc::JKQTPGeoArc(JKQTPlotter* parent, double x, double y, double width,
|
|||||||
|
|
||||||
|
|
||||||
void JKQTPGeoArc::draw(JKQTPEnhancedPainter& painter) {
|
void JKQTPGeoArc::draw(JKQTPEnhancedPainter& painter) {
|
||||||
auto fTransform=std::bind([](const JKQTPPlotObject* plot, const QPointF& p) { return plot->transform(p); }, this, std::placeholders::_1);
|
auto fTransform=std::bind([](const JKQTPGeometricPlotElement* plot, const QPointF& p) { return plot->transform(p); }, this, std::placeholders::_1);
|
||||||
const QPolygonF rect=JKQTPSplitEllipseIntoPoints(fTransform, x,y,width/2.0, height/2.0,angleStart,angleStop, angle);
|
const QPolygonF rect=JKQTPSplitEllipseIntoPoints(fTransform, x,y,width/2.0, height/2.0,angleStart,angleStop, angle);
|
||||||
|
|
||||||
painter.save(); auto __finalpaint=JKQTPFinally([&painter]() {painter.restore();});
|
painter.save(); auto __finalpaint=JKQTPFinally([&painter]() {painter.restore();});
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** \brief This JKQTPPlotObject is used to draw a line, optionally line-end decorations (aka arrows) are pssible, but switched off by default.
|
/** \brief This JKQTPGeometricPlotElement is used to draw a line, optionally line-end decorations (aka arrows) are pssible, but switched off by default.
|
||||||
* \ingroup jkqtplotter_geoplots
|
* \ingroup jkqtplotter_geoplots
|
||||||
*
|
*
|
||||||
* \image html JKQTPGeoLine_HeadTail.png
|
* \image html JKQTPGeoLine_HeadTail.png
|
||||||
@ -40,10 +40,10 @@
|
|||||||
*
|
*
|
||||||
* \image html plot_geoline.png
|
* \image html plot_geoline.png
|
||||||
*
|
*
|
||||||
* \note This class support JKQTPPlotObject::DrawMode::DrawAsMathematicalCurve. If set,
|
* \note This class support JKQTPGeometricPlotElement::DrawMode::DrawAsMathematicalCurve. If set,
|
||||||
* and non-linear axes are chosen, the line is drawn as a curves, instead of straight
|
* and non-linear axes are chosen, the line is drawn as a curves, instead of straight
|
||||||
* a straight line. In the mode
|
* a straight line. In the mode
|
||||||
* JKQTPPlotObject::DrawMode::DrawAsGraphicElement the line is drawn as a straight line.
|
* JKQTPGeometricPlotElement::DrawMode::DrawAsGraphicElement the line is drawn as a straight line.
|
||||||
*
|
*
|
||||||
* You can also activate line-end decorators (aka arrows) for this poly-line, by using code like this:
|
* You can also activate line-end decorators (aka arrows) for this poly-line, by using code like this:
|
||||||
* \code
|
* \code
|
||||||
@ -188,14 +188,14 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPGeoLine: public JKQTPGeoBaseDecoratedLine {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** \copydoc JKQTPPlotObject::getXMinMax() */
|
/** \copydoc JKQTPGeometricPlotElement::getXMinMax() */
|
||||||
virtual bool getXMinMax(double& minx, double& maxx, double& smallestGreaterZero) override;
|
virtual bool getXMinMax(double& minx, double& maxx, double& smallestGreaterZero) override;
|
||||||
/** \copydoc JKQTPPlotObject::getYMinMax() */
|
/** \copydoc JKQTPGeometricPlotElement::getYMinMax() */
|
||||||
virtual bool getYMinMax(double& miny, double& maxy, double& smallestGreaterZero) override;
|
virtual bool getYMinMax(double& miny, double& maxy, double& smallestGreaterZero) override;
|
||||||
|
|
||||||
/** \brief plots the graph to the plotter object specified as parent
|
/** \brief plots the graph to the plotter object specified as parent
|
||||||
*
|
*
|
||||||
* \note This function support JKQTPPlotObject::DrawMode::DrawAsMathematicalCurve. If set,
|
* \note This function support JKQTPGeometricPlotElement::DrawMode::DrawAsMathematicalCurve. If set,
|
||||||
* and non-linear axes are chosen, the line will possibly be represented as a curve,
|
* and non-linear axes are chosen, the line will possibly be represented as a curve,
|
||||||
* instead of a straight line.
|
* instead of a straight line.
|
||||||
*/
|
*/
|
||||||
@ -291,7 +291,7 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** \brief This JKQTPPlotObject is used to draw an infinite line
|
/** \brief This JKQTPGeometricPlotElement is used to draw an infinite line
|
||||||
* \ingroup jkqtplotter_geoplots
|
* \ingroup jkqtplotter_geoplots
|
||||||
*
|
*
|
||||||
* an infinite line has a starting point and then goes on in a given direction
|
* an infinite line has a starting point and then goes on in a given direction
|
||||||
@ -300,10 +300,10 @@ public:
|
|||||||
* \image html plot_geoinfiniteline.png
|
* \image html plot_geoinfiniteline.png
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* \note This class support JKQTPPlotObject::DrawMode::DrawAsMathematicalCurve. If set,
|
* \note This class support JKQTPGeometricPlotElement::DrawMode::DrawAsMathematicalCurve. If set,
|
||||||
* and non-linear axes are chosen, the line is drawn as a curves, instead of straight
|
* and non-linear axes are chosen, the line is drawn as a curves, instead of straight
|
||||||
* a straight line. In the mode
|
* a straight line. In the mode
|
||||||
* JKQTPPlotObject::DrawMode::DrawAsGraphicElement the line is drawn as a straight line.
|
* JKQTPGeometricPlotElement::DrawMode::DrawAsGraphicElement the line is drawn as a straight line.
|
||||||
*
|
*
|
||||||
* You can add a decorator to the head of the line (i.e. the given start point (x,y) ) iff this line is one-sided, i.e. two_sided \c ==false .
|
* You can add a decorator to the head of the line (i.e. the given start point (x,y) ) iff this line is one-sided, i.e. two_sided \c ==false .
|
||||||
*
|
*
|
||||||
@ -339,14 +339,14 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPGeoInfiniteLine: public JKQTPGeoBaseDecoratedH
|
|||||||
JKQTPGeoInfiniteLine(JKQTPlotter* parent, double x, double y, double dx, double dy, QColor color=QColor("black"), double lineWidth=1, Qt::PenStyle style=Qt::SolidLine);
|
JKQTPGeoInfiniteLine(JKQTPlotter* parent, double x, double y, double dx, double dy, QColor color=QColor("black"), double lineWidth=1, Qt::PenStyle style=Qt::SolidLine);
|
||||||
|
|
||||||
|
|
||||||
/** \copydoc JKQTPPlotObject::getXMinMax() */
|
/** \copydoc JKQTPGeometricPlotElement::getXMinMax() */
|
||||||
virtual bool getXMinMax(double& minx, double& maxx, double& smallestGreaterZero) override;
|
virtual bool getXMinMax(double& minx, double& maxx, double& smallestGreaterZero) override;
|
||||||
/** \copydoc JKQTPPlotObject::getYMinMax() */
|
/** \copydoc JKQTPGeometricPlotElement::getYMinMax() */
|
||||||
virtual bool getYMinMax(double& miny, double& maxy, double& smallestGreaterZero) override;
|
virtual bool getYMinMax(double& miny, double& maxy, double& smallestGreaterZero) override;
|
||||||
|
|
||||||
/** \brief plots the graph to the plotter object specified as parent
|
/** \brief plots the graph to the plotter object specified as parent
|
||||||
*
|
*
|
||||||
* \note This function support JKQTPPlotObject::DrawMode::DrawAsMathematicalCurve. If set,
|
* \note This function support JKQTPGeometricPlotElement::DrawMode::DrawAsMathematicalCurve. If set,
|
||||||
* and non-linear axes are chosen, the line will possibly be represented as a curve,
|
* and non-linear axes are chosen, the line will possibly be represented as a curve,
|
||||||
* instead of a straight line.
|
* instead of a straight line.
|
||||||
*/
|
*/
|
||||||
@ -391,15 +391,15 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPGeoInfiniteLine: public JKQTPGeoBaseDecoratedH
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/** \brief This JKQTPPlotObject is used to draw a poly line
|
/** \brief This JKQTPGeometricPlotElement is used to draw a poly line
|
||||||
* \ingroup jkqtplotter_geoplots
|
* \ingroup jkqtplotter_geoplots
|
||||||
*
|
*
|
||||||
* \image html plot_geolines.png
|
* \image html plot_geolines.png
|
||||||
*
|
*
|
||||||
* \note This class support JKQTPPlotObject::DrawMode::DrawAsMathematicalCurve. If set,
|
* \note This class support JKQTPGeometricPlotElement::DrawMode::DrawAsMathematicalCurve. If set,
|
||||||
* and non-linear axes are chosen, the points of the poly-line will be possibly
|
* and non-linear axes are chosen, the points of the poly-line will be possibly
|
||||||
* connected by curves, instead of straight lines. In the mode
|
* connected by curves, instead of straight lines. In the mode
|
||||||
* JKQTPPlotObject::DrawMode::DrawAsGraphicElement the points are connected by straight
|
* JKQTPGeometricPlotElement::DrawMode::DrawAsGraphicElement the points are connected by straight
|
||||||
* lines, independent of the linearity or non-linearity of the coordinate axes.
|
* lines, independent of the linearity or non-linearity of the coordinate axes.
|
||||||
*
|
*
|
||||||
* You can also activate line-end decorators (aka arrows) for this poly-line, by using code like this:
|
* You can also activate line-end decorators (aka arrows) for this poly-line, by using code like this:
|
||||||
@ -454,17 +454,17 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPGeoPolyLines: public JKQTPGeoBaseDecoratedLine
|
|||||||
JKQTPGeoPolyLines(JKQTPlotter* parent, QColor color=QColor("black"), double lineWidth=1, Qt::PenStyle style=Qt::SolidLine);
|
JKQTPGeoPolyLines(JKQTPlotter* parent, QColor color=QColor("black"), double lineWidth=1, Qt::PenStyle style=Qt::SolidLine);
|
||||||
|
|
||||||
|
|
||||||
/** \copydoc JKQTPPlotObject::getXMinMax() */
|
/** \copydoc JKQTPGeometricPlotElement::getXMinMax() */
|
||||||
virtual bool getXMinMax(double& minx, double& maxx, double& smallestGreaterZero) override;
|
virtual bool getXMinMax(double& minx, double& maxx, double& smallestGreaterZero) override;
|
||||||
/** \copydoc JKQTPPlotObject::getYMinMax() */
|
/** \copydoc JKQTPGeometricPlotElement::getYMinMax() */
|
||||||
virtual bool getYMinMax(double& miny, double& maxy, double& smallestGreaterZero) override;
|
virtual bool getYMinMax(double& miny, double& maxy, double& smallestGreaterZero) override;
|
||||||
|
|
||||||
/** \brief plots the graph to the plotter object specified as parent
|
/** \brief plots the graph to the plotter object specified as parent
|
||||||
*
|
*
|
||||||
* \note This function support JKQTPPlotObject::DrawMode::DrawAsMathematicalCurve. If set,
|
* \note This function support JKQTPGeometricPlotElement::DrawMode::DrawAsMathematicalCurve. If set,
|
||||||
* and non-linear axes are chosen, the points of the poly-line will be possibly
|
* and non-linear axes are chosen, the points of the poly-line will be possibly
|
||||||
* connected by curves, instead of straight lines. In the mode
|
* connected by curves, instead of straight lines. In the mode
|
||||||
* JKQTPPlotObject::DrawMode::DrawAsGraphicElement the points are connected by straight
|
* JKQTPGeometricPlotElement::DrawMode::DrawAsGraphicElement the points are connected by straight
|
||||||
* lines, independent of the linearity or non-linearity of the coordinate axes.
|
* lines, independent of the linearity or non-linearity of the coordinate axes.
|
||||||
*/
|
*/
|
||||||
virtual void draw(JKQTPEnhancedPainter& painter) override;
|
virtual void draw(JKQTPEnhancedPainter& painter) override;
|
||||||
@ -504,7 +504,7 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPGeoPolyLines: public JKQTPGeoBaseDecoratedLine
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/** \brief This JKQTPPlotObject is used to draw an arc
|
/** \brief This JKQTPGeometricPlotElement is used to draw an arc
|
||||||
* \ingroup jkqtplotter_geoplots
|
* \ingroup jkqtplotter_geoplots
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
@ -512,7 +512,7 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPGeoPolyLines: public JKQTPGeoBaseDecoratedLine
|
|||||||
*
|
*
|
||||||
* \image html plot_geopie.png
|
* \image html plot_geopie.png
|
||||||
*
|
*
|
||||||
* \note This class support the JKQTPPlotObject::DrawMode::DrawAsMathematicalCurve only.
|
* \note This class support the JKQTPGeometricPlotElement::DrawMode::DrawAsMathematicalCurve only.
|
||||||
* This means that arcs are always treated as mathematical curves, as no meaningful
|
* This means that arcs are always treated as mathematical curves, as no meaningful
|
||||||
* parametrization for arcs on non-linear axes could be found!
|
* parametrization for arcs on non-linear axes could be found!
|
||||||
*
|
*
|
||||||
@ -552,15 +552,15 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPGeoArc: public JKQTPGeoBaseLine {
|
|||||||
*/
|
*/
|
||||||
JKQTPGeoArc(JKQTPlotter* parent, double x, double y, double width, double height, double angleStart, double angleStop, QColor color=QColor("black"), double lineWidth=1, Qt::PenStyle style=Qt::SolidLine);
|
JKQTPGeoArc(JKQTPlotter* parent, double x, double y, double width, double height, double angleStart, double angleStop, QColor color=QColor("black"), double lineWidth=1, Qt::PenStyle style=Qt::SolidLine);
|
||||||
|
|
||||||
/** \copydoc JKQTPPlotObject::getXMinMax() */
|
/** \copydoc JKQTPGeometricPlotElement::getXMinMax() */
|
||||||
virtual bool getXMinMax(double& minx, double& maxx, double& smallestGreaterZero) override;
|
virtual bool getXMinMax(double& minx, double& maxx, double& smallestGreaterZero) override;
|
||||||
/** \copydoc JKQTPPlotObject::getYMinMax() */
|
/** \copydoc JKQTPGeometricPlotElement::getYMinMax() */
|
||||||
virtual bool getYMinMax(double& miny, double& maxy, double& smallestGreaterZero) override;
|
virtual bool getYMinMax(double& miny, double& maxy, double& smallestGreaterZero) override;
|
||||||
|
|
||||||
|
|
||||||
/** \brief plots the graph to the plotter object specified as parent
|
/** \brief plots the graph to the plotter object specified as parent
|
||||||
*
|
*
|
||||||
* \note This function support the JKQTPPlotObject::DrawMode::DrawAsMathematicalCurve only.
|
* \note This function support the JKQTPGeometricPlotElement::DrawMode::DrawAsMathematicalCurve only.
|
||||||
* This means that arcs are always treated as mathematical curves, as no meaningful
|
* This means that arcs are always treated as mathematical curves, as no meaningful
|
||||||
* parametrization for arcs on non-linear axes could be found!
|
* parametrization for arcs on non-linear axes could be found!
|
||||||
*/
|
*/
|
||||||
|
@ -77,25 +77,25 @@ JKQTPGeoRectangle::JKQTPGeoRectangle(JKQTPlotter *parent, QPointF bottomleft, QP
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
JKQTPGeoRectangle::JKQTPGeoRectangle(JKQTBasePlotter *parent, const QPointF ¢er, const QSizeF &size, double angle, QColor color, double lineWidth, Qt::PenStyle style, QColor fillColor, Qt::BrushStyle fillStyle, JKQTPPlotObject::DrawMode drawMode):
|
JKQTPGeoRectangle::JKQTPGeoRectangle(JKQTBasePlotter *parent, const QPointF ¢er, const QSizeF &size, double angle, QColor color, double lineWidth, Qt::PenStyle style, QColor fillColor, Qt::BrushStyle fillStyle, JKQTPGeometricPlotElement::DrawMode drawMode):
|
||||||
JKQTPGeoRectangle(parent, center.x(), center.y(), size.width(), size.height(), angle, color, lineWidth, style, fillColor, fillStyle, drawMode)
|
JKQTPGeoRectangle(parent, center.x(), center.y(), size.width(), size.height(), angle, color, lineWidth, style, fillColor, fillStyle, drawMode)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
JKQTPGeoRectangle::JKQTPGeoRectangle(JKQTPlotter *parent, const QPointF ¢er, const QSizeF &size, double angle, QColor color, double lineWidth, Qt::PenStyle style, QColor fillColor, Qt::BrushStyle fillStyle, JKQTPPlotObject::DrawMode drawMode):
|
JKQTPGeoRectangle::JKQTPGeoRectangle(JKQTPlotter *parent, const QPointF ¢er, const QSizeF &size, double angle, QColor color, double lineWidth, Qt::PenStyle style, QColor fillColor, Qt::BrushStyle fillStyle, JKQTPGeometricPlotElement::DrawMode drawMode):
|
||||||
JKQTPGeoRectangle(parent->getPlotter(), center, size, angle, color, lineWidth, style, fillColor, fillStyle, drawMode)
|
JKQTPGeoRectangle(parent->getPlotter(), center, size, angle, color, lineWidth, style, fillColor, fillStyle, drawMode)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
JKQTPGeoRectangle::JKQTPGeoRectangle(JKQTBasePlotter *parent, const QPointF ¢er, const QSizeF &size, QColor color, double lineWidth, Qt::PenStyle style, QColor fillColor, Qt::BrushStyle fillStyle, JKQTPPlotObject::DrawMode drawMode):
|
JKQTPGeoRectangle::JKQTPGeoRectangle(JKQTBasePlotter *parent, const QPointF ¢er, const QSizeF &size, QColor color, double lineWidth, Qt::PenStyle style, QColor fillColor, Qt::BrushStyle fillStyle, JKQTPGeometricPlotElement::DrawMode drawMode):
|
||||||
JKQTPGeoRectangle(parent, center.x(), center.y(), size.width(), size.height(), color, lineWidth, style, fillColor, fillStyle, drawMode)
|
JKQTPGeoRectangle(parent, center.x(), center.y(), size.width(), size.height(), color, lineWidth, style, fillColor, fillStyle, drawMode)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
JKQTPGeoRectangle::JKQTPGeoRectangle(JKQTPlotter *parent, const QPointF ¢er, const QSizeF &size, QColor color, double lineWidth, Qt::PenStyle style, QColor fillColor, Qt::BrushStyle fillStyle, JKQTPPlotObject::DrawMode drawMode):
|
JKQTPGeoRectangle::JKQTPGeoRectangle(JKQTPlotter *parent, const QPointF ¢er, const QSizeF &size, QColor color, double lineWidth, Qt::PenStyle style, QColor fillColor, Qt::BrushStyle fillStyle, JKQTPGeometricPlotElement::DrawMode drawMode):
|
||||||
JKQTPGeoRectangle(parent->getPlotter(), center, size, color, lineWidth, style, fillColor, fillStyle, drawMode)
|
JKQTPGeoRectangle(parent->getPlotter(), center, size, color, lineWidth, style, fillColor, fillStyle, drawMode)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -152,7 +152,7 @@ void JKQTPGeoRectangle::draw(JKQTPEnhancedPainter& painter) {
|
|||||||
if ((getDrawMode()==DrawAsGraphicElement) || (getParent()->getXAxis()->isLinearAxis() && getParent()->getYAxis()->isLinearAxis())) {
|
if ((getDrawMode()==DrawAsGraphicElement) || (getParent()->getXAxis()->isLinearAxis() && getParent()->getYAxis()->isLinearAxis())) {
|
||||||
rect=transform(poly);
|
rect=transform(poly);
|
||||||
} else {
|
} else {
|
||||||
auto fTransform=std::bind([](const JKQTPPlotObject* plot, const QPointF& p) { return plot->transform(p); }, this, std::placeholders::_1);
|
auto fTransform=std::bind([](const JKQTPGeometricPlotElement* plot, const QPointF& p) { return plot->transform(p); }, this, std::placeholders::_1);
|
||||||
rect=JKQTPSplitPolylineIntoPoints(poly, fTransform);
|
rect=JKQTPSplitPolylineIntoPoints(poly, fTransform);
|
||||||
}
|
}
|
||||||
for (const auto& p:poly) {
|
for (const auto& p:poly) {
|
||||||
@ -331,7 +331,7 @@ void JKQTPGeoPolygon::draw(JKQTPEnhancedPainter& painter) {
|
|||||||
} else {
|
} else {
|
||||||
// for non-linear axes, a line might not be drawn as a line, so we need to segment the line (i.e. linear function in coordinate space)
|
// for non-linear axes, a line might not be drawn as a line, so we need to segment the line (i.e. linear function in coordinate space)
|
||||||
// and transform each node to draw the corresponding non-linear curve in pixel-space!
|
// and transform each node to draw the corresponding non-linear curve in pixel-space!
|
||||||
auto fTransform=std::bind([](const JKQTPPlotObject* plot, const QPointF& p) { return plot->transform(p); }, this, std::placeholders::_1);
|
auto fTransform=std::bind([](const JKQTPGeometricPlotElement* plot, const QPointF& p) { return plot->transform(p); }, this, std::placeholders::_1);
|
||||||
QVector<QPointF> polyp=points;
|
QVector<QPointF> polyp=points;
|
||||||
if (polyp.first()!=polyp.last()) polyp.push_back(polyp.first());
|
if (polyp.first()!=polyp.last()) polyp.push_back(polyp.first());
|
||||||
QPolygonF path=JKQTPSplitPolylineIntoPoints(polyp, fTransform);
|
QPolygonF path=JKQTPSplitPolylineIntoPoints(polyp, fTransform);
|
||||||
@ -462,7 +462,7 @@ void JKQTPGeoEllipse::drawInternal(JKQTPEnhancedPainter& painter, double angleSt
|
|||||||
painter.setBrush(getFillBrush(painter, parent));
|
painter.setBrush(getFillBrush(painter, parent));
|
||||||
|
|
||||||
|
|
||||||
auto fTransform=std::bind([](const JKQTPPlotObject* plot, const QPointF& p) { return plot->transform(p); }, this, std::placeholders::_1);
|
auto fTransform=std::bind([](const JKQTPGeometricPlotElement* plot, const QPointF& p) { return plot->transform(p); }, this, std::placeholders::_1);
|
||||||
QPolygonF rect;
|
QPolygonF rect;
|
||||||
if(mode==InternalDrawMode::Ellipse) {
|
if(mode==InternalDrawMode::Ellipse) {
|
||||||
rect=JKQTPSplitEllipseIntoPoints(fTransform, x,y,width/2.0, height/2.0,0,360, angle);
|
rect=JKQTPSplitEllipseIntoPoints(fTransform, x,y,width/2.0, height/2.0,0,360, angle);
|
||||||
|
@ -33,15 +33,15 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** \brief This JKQTPPlotObject is used to draw a rectangle
|
/** \brief This JKQTPGeometricPlotElement is used to draw a rectangle
|
||||||
* \ingroup jkqtplotter_geoplots
|
* \ingroup jkqtplotter_geoplots
|
||||||
*
|
*
|
||||||
* \image html plot_georectangle.png
|
* \image html plot_georectangle.png
|
||||||
*
|
*
|
||||||
* \note This class support JKQTPPlotObject::DrawMode::DrawAsMathematicalCurve. If set,
|
* \note This class support JKQTPGeometricPlotElement::DrawMode::DrawAsMathematicalCurve. If set,
|
||||||
* and non-linear axes are chosen, the corner points of the rectangle will be possibly
|
* and non-linear axes are chosen, the corner points of the rectangle will be possibly
|
||||||
* connected by curves, instead of straight lines. In the mode
|
* connected by curves, instead of straight lines. In the mode
|
||||||
* JKQTPPlotObject::DrawMode::DrawAsGraphicElement the corners are connected by straight
|
* JKQTPGeometricPlotElement::DrawMode::DrawAsGraphicElement the corners are connected by straight
|
||||||
* lines, independent of the linearity or non-linearity of the coordinate axes.
|
* lines, independent of the linearity or non-linearity of the coordinate axes.
|
||||||
*
|
*
|
||||||
* \see \ref JKQTPlotterGeometricGraphs
|
* \see \ref JKQTPlotterGeometricGraphs
|
||||||
@ -184,14 +184,14 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPGeoRectangle: public JKQTPGeoBaseFilled {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** \copydoc JKQTPPlotObject::getXMinMax() */
|
/** \copydoc JKQTPGeometricPlotElement::getXMinMax() */
|
||||||
virtual bool getXMinMax(double& minx, double& maxx, double& smallestGreaterZero) override;
|
virtual bool getXMinMax(double& minx, double& maxx, double& smallestGreaterZero) override;
|
||||||
/** \copydoc JKQTPPlotObject::getYMinMax() */
|
/** \copydoc JKQTPGeometricPlotElement::getYMinMax() */
|
||||||
virtual bool getYMinMax(double& miny, double& maxy, double& smallestGreaterZero) override;
|
virtual bool getYMinMax(double& miny, double& maxy, double& smallestGreaterZero) override;
|
||||||
|
|
||||||
/** \brief plots the graph to the plotter object specified as parent
|
/** \brief plots the graph to the plotter object specified as parent
|
||||||
*
|
*
|
||||||
* \note This function support JKQTPPlotObject::DrawMode::DrawAsMathematicalCurve. If set,
|
* \note This function support JKQTPGeometricPlotElement::DrawMode::DrawAsMathematicalCurve. If set,
|
||||||
* and non-linear axes are chosen, the corner points of the rectangle will be possibly
|
* and non-linear axes are chosen, the corner points of the rectangle will be possibly
|
||||||
* connected by curves, instead of straight lines.
|
* connected by curves, instead of straight lines.
|
||||||
*/
|
*/
|
||||||
@ -256,12 +256,12 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPGeoRectangle: public JKQTPGeoBaseFilled {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/** \brief This JKQTPPlotObject is used to draw a polygon
|
/** \brief This JKQTPGeometricPlotElement is used to draw a polygon
|
||||||
* \ingroup jkqtplotter_geoplots
|
* \ingroup jkqtplotter_geoplots
|
||||||
*
|
*
|
||||||
* \image html plot_geopolygon.png
|
* \image html plot_geopolygon.png
|
||||||
*
|
*
|
||||||
* \note This function support JKQTPPlotObject::DrawMode::DrawAsMathematicalCurve. If set,
|
* \note This function support JKQTPGeometricPlotElement::DrawMode::DrawAsMathematicalCurve. If set,
|
||||||
* and non-linear axes are chosen, the points of the polygon will be possibly
|
* and non-linear axes are chosen, the points of the polygon will be possibly
|
||||||
* connected by curves, instead of straight lines.
|
* connected by curves, instead of straight lines.
|
||||||
*
|
*
|
||||||
@ -316,14 +316,14 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPGeoPolygon: public JKQTPGeoBaseFilled {
|
|||||||
JKQTPGeoPolygon(JKQTPlotter* parent, QColor color=QColor("black"), double lineWidth=1, Qt::PenStyle style=Qt::SolidLine, QColor fillColor=QColor("transparent"), Qt::BrushStyle fillStyle=Qt::SolidPattern, DrawMode drawMode=DrawAsGraphicElement);
|
JKQTPGeoPolygon(JKQTPlotter* parent, QColor color=QColor("black"), double lineWidth=1, Qt::PenStyle style=Qt::SolidLine, QColor fillColor=QColor("transparent"), Qt::BrushStyle fillStyle=Qt::SolidPattern, DrawMode drawMode=DrawAsGraphicElement);
|
||||||
|
|
||||||
|
|
||||||
/** \copydoc JKQTPPlotObject::getXMinMax() */
|
/** \copydoc JKQTPGeometricPlotElement::getXMinMax() */
|
||||||
virtual bool getXMinMax(double& minx, double& maxx, double& smallestGreaterZero) override;
|
virtual bool getXMinMax(double& minx, double& maxx, double& smallestGreaterZero) override;
|
||||||
/** \copydoc JKQTPPlotObject::getYMinMax() */
|
/** \copydoc JKQTPGeometricPlotElement::getYMinMax() */
|
||||||
virtual bool getYMinMax(double& miny, double& maxy, double& smallestGreaterZero) override;
|
virtual bool getYMinMax(double& miny, double& maxy, double& smallestGreaterZero) override;
|
||||||
|
|
||||||
/** \brief plots the graph to the plotter object specified as parent
|
/** \brief plots the graph to the plotter object specified as parent
|
||||||
*
|
*
|
||||||
* \note This function support JKQTPPlotObject::DrawMode::DrawAsMathematicalCurve. If set,
|
* \note This function support JKQTPGeometricPlotElement::DrawMode::DrawAsMathematicalCurve. If set,
|
||||||
* and non-linear axes are chosen, the points of the polygon will be possibly
|
* and non-linear axes are chosen, the points of the polygon will be possibly
|
||||||
* connected by curves, instead of straight lines.
|
* connected by curves, instead of straight lines.
|
||||||
*/
|
*/
|
||||||
@ -364,17 +364,17 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPGeoPolygon: public JKQTPGeoBaseFilled {
|
|||||||
QVector<QPointF> points;
|
QVector<QPointF> points;
|
||||||
};
|
};
|
||||||
|
|
||||||
/** \brief This JKQTPPlotObject is used to draw an ellipse
|
/** \brief This JKQTPGeometricPlotElement is used to draw an ellipse
|
||||||
* \ingroup jkqtplotter_geoplots
|
* \ingroup jkqtplotter_geoplots
|
||||||
*
|
*
|
||||||
* \image html plot_geoellipse.png
|
* \image html plot_geoellipse.png
|
||||||
*
|
*
|
||||||
* \image html plot_geoellipse_rotated.png
|
* \image html plot_geoellipse_rotated.png
|
||||||
*
|
*
|
||||||
* \note This function support the JKQTPPlotObject::DrawMode::DrawAsMathematicalCurve only.
|
* \note This function support the JKQTPGeometricPlotElement::DrawMode::DrawAsMathematicalCurve only.
|
||||||
* This means that ellipses are always treated as mathematical curves, as no meaningful
|
* This means that ellipses are always treated as mathematical curves, as no meaningful
|
||||||
* parametrization for ellipses on non-linear axes could be found! In the mode
|
* parametrization for ellipses on non-linear axes could be found! In the mode
|
||||||
* JKQTPPlotObject::DrawMode::DrawAsGraphicElement the points are connected by straight
|
* JKQTPGeometricPlotElement::DrawMode::DrawAsGraphicElement the points are connected by straight
|
||||||
* lines, independent of the linearity or non-linearity of the coordinate axes.
|
* lines, independent of the linearity or non-linearity of the coordinate axes.
|
||||||
*
|
*
|
||||||
* \see <a href="http://www.codeguru.com/cpp/g-m/gdi/article.php/c131">http://www.codeguru.com/cpp/g-m/gdi/article.php/c131</a> and
|
* \see <a href="http://www.codeguru.com/cpp/g-m/gdi/article.php/c131">http://www.codeguru.com/cpp/g-m/gdi/article.php/c131</a> and
|
||||||
@ -472,7 +472,7 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPGeoEllipse: public JKQTPGeoRectangle {
|
|||||||
|
|
||||||
/** \brief plots the graph to the plotter object specified as parent
|
/** \brief plots the graph to the plotter object specified as parent
|
||||||
*
|
*
|
||||||
* \note This function support the JKQTPPlotObject::DrawMode::DrawAsMathematicalCurve only.
|
* \note This function support the JKQTPGeometricPlotElement::DrawMode::DrawAsMathematicalCurve only.
|
||||||
* This means that ellipses are always treated as mathematical curves, as no meaningful
|
* This means that ellipses are always treated as mathematical curves, as no meaningful
|
||||||
* parametrization for ellipses on non-linear axes could be found!*/
|
* parametrization for ellipses on non-linear axes could be found!*/
|
||||||
virtual void draw(JKQTPEnhancedPainter& painter) override;
|
virtual void draw(JKQTPEnhancedPainter& painter) override;
|
||||||
@ -493,7 +493,7 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPGeoEllipse: public JKQTPGeoRectangle {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** \brief This JKQTPPlotObject is used to draw a pie
|
/** \brief This JKQTPGeometricPlotElement is used to draw a pie
|
||||||
* \ingroup jkqtplotter_geoplots
|
* \ingroup jkqtplotter_geoplots
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
@ -512,7 +512,7 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPGeoEllipse: public JKQTPGeoRectangle {
|
|||||||
* plot->addGraph(new JKQTPGeoText(plot, 3.5+0.55*cos(110.0/180.0*JKQTPSTATISTICS_PI),0.5+0.55*sin(110.0/180.0*JKQTPSTATISTICS_PI), "110\\degree", 10, QColor("grey")));
|
* plot->addGraph(new JKQTPGeoText(plot, 3.5+0.55*cos(110.0/180.0*JKQTPSTATISTICS_PI),0.5+0.55*sin(110.0/180.0*JKQTPSTATISTICS_PI), "110\\degree", 10, QColor("grey")));
|
||||||
* \endcode
|
* \endcode
|
||||||
*
|
*
|
||||||
* \note This function support the JKQTPPlotObject::DrawMode::DrawAsMathematicalCurve only.
|
* \note This function support the JKQTPGeometricPlotElement::DrawMode::DrawAsMathematicalCurve only.
|
||||||
* This means that pies are always treated as mathematical curves, as no meaningful
|
* This means that pies are always treated as mathematical curves, as no meaningful
|
||||||
* parametrization for pies on non-linear axes could be found!
|
* parametrization for pies on non-linear axes could be found!
|
||||||
*
|
*
|
||||||
@ -555,15 +555,15 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPGeoPie: public JKQTPGeoEllipse {
|
|||||||
JKQTPGeoPie(JKQTPlotter* parent, double x, double y, double width, double height, double angleStart, double angleStop, QColor color=QColor("black"), double lineWidth=1, Qt::PenStyle style=Qt::SolidLine, QColor fillColor=QColor("transparent"), Qt::BrushStyle fillStyle=Qt::SolidPattern, DrawMode drawMode=DrawAsGraphicElement);
|
JKQTPGeoPie(JKQTPlotter* parent, double x, double y, double width, double height, double angleStart, double angleStop, QColor color=QColor("black"), double lineWidth=1, Qt::PenStyle style=Qt::SolidLine, QColor fillColor=QColor("transparent"), Qt::BrushStyle fillStyle=Qt::SolidPattern, DrawMode drawMode=DrawAsGraphicElement);
|
||||||
|
|
||||||
|
|
||||||
/** \copydoc JKQTPPlotObject::getXMinMax() */
|
/** \copydoc JKQTPGeometricPlotElement::getXMinMax() */
|
||||||
virtual bool getXMinMax(double& minx, double& maxx, double& smallestGreaterZero) override;
|
virtual bool getXMinMax(double& minx, double& maxx, double& smallestGreaterZero) override;
|
||||||
/** \copydoc JKQTPPlotObject::getYMinMax() */
|
/** \copydoc JKQTPGeometricPlotElement::getYMinMax() */
|
||||||
virtual bool getYMinMax(double& miny, double& maxy, double& smallestGreaterZero) override;
|
virtual bool getYMinMax(double& miny, double& maxy, double& smallestGreaterZero) override;
|
||||||
|
|
||||||
|
|
||||||
/** \brief plots the graph to the plotter object specified as parent
|
/** \brief plots the graph to the plotter object specified as parent
|
||||||
*
|
*
|
||||||
* \note This function support the JKQTPPlotObject::DrawMode::DrawAsMathematicalCurve only.
|
* \note This function support the JKQTPGeometricPlotElement::DrawMode::DrawAsMathematicalCurve only.
|
||||||
* This means that pies are always treated as mathematical curves, as no meaningful
|
* This means that pies are always treated as mathematical curves, as no meaningful
|
||||||
* parametrization for pies on non-linear axes could be found!*/
|
* parametrization for pies on non-linear axes could be found!*/
|
||||||
virtual void draw(JKQTPEnhancedPainter& painter) override;
|
virtual void draw(JKQTPEnhancedPainter& painter) override;
|
||||||
@ -586,14 +586,14 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPGeoPie: public JKQTPGeoEllipse {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** \brief This JKQTPPlotObject is used to draw a chord
|
/** \brief This JKQTPGeometricPlotElement is used to draw a chord
|
||||||
* \ingroup jkqtplotter_geoplots
|
* \ingroup jkqtplotter_geoplots
|
||||||
*
|
*
|
||||||
* A chord on linear and log-log axes (start angle: 10deg and end-angle 110deg):
|
* A chord on linear and log-log axes (start angle: 10deg and end-angle 110deg):
|
||||||
*
|
*
|
||||||
* \image html plot_geochord.png
|
* \image html plot_geochord.png
|
||||||
*
|
*
|
||||||
* \note This function support the JKQTPPlotObject::DrawMode::DrawAsMathematicalCurve only.
|
* \note This function support the JKQTPGeometricPlotElement::DrawMode::DrawAsMathematicalCurve only.
|
||||||
* This means that chords are always treated as mathematical curves, as no meaningful
|
* This means that chords are always treated as mathematical curves, as no meaningful
|
||||||
* parametrization for chords on non-linear axes could be found!
|
* parametrization for chords on non-linear axes could be found!
|
||||||
*
|
*
|
||||||
@ -635,14 +635,14 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPGeoChord: public JKQTPGeoPie {
|
|||||||
*/
|
*/
|
||||||
JKQTPGeoChord(JKQTPlotter* parent, double x, double y, double width, double height, double angleStart, double angleStop, QColor color=QColor("black"), double lineWidth=1, Qt::PenStyle style=Qt::SolidLine, QColor fillColor=QColor("transparent"), Qt::BrushStyle fillStyle=Qt::SolidPattern, DrawMode drawMode=DrawAsGraphicElement);
|
JKQTPGeoChord(JKQTPlotter* parent, double x, double y, double width, double height, double angleStart, double angleStop, QColor color=QColor("black"), double lineWidth=1, Qt::PenStyle style=Qt::SolidLine, QColor fillColor=QColor("transparent"), Qt::BrushStyle fillStyle=Qt::SolidPattern, DrawMode drawMode=DrawAsGraphicElement);
|
||||||
|
|
||||||
/** \copydoc JKQTPPlotObject::getXMinMax() */
|
/** \copydoc JKQTPGeometricPlotElement::getXMinMax() */
|
||||||
virtual bool getXMinMax(double& minx, double& maxx, double& smallestGreaterZero) override;
|
virtual bool getXMinMax(double& minx, double& maxx, double& smallestGreaterZero) override;
|
||||||
/** \copydoc JKQTPPlotObject::getYMinMax() */
|
/** \copydoc JKQTPGeometricPlotElement::getYMinMax() */
|
||||||
virtual bool getYMinMax(double& miny, double& maxy, double& smallestGreaterZero) override;
|
virtual bool getYMinMax(double& miny, double& maxy, double& smallestGreaterZero) override;
|
||||||
|
|
||||||
/** \brief plots the graph to the plotter object specified as parent
|
/** \brief plots the graph to the plotter object specified as parent
|
||||||
*
|
*
|
||||||
* \note This function support the JKQTPPlotObject::DrawMode::DrawAsMathematicalCurve only.
|
* \note This function support the JKQTPGeometricPlotElement::DrawMode::DrawAsMathematicalCurve only.
|
||||||
* This means that chords are always treated as mathematical curves, as no meaningful
|
* This means that chords are always treated as mathematical curves, as no meaningful
|
||||||
* parametrization for chords on non-linear axes could be found!
|
* parametrization for chords on non-linear axes could be found!
|
||||||
*/
|
*/
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
|
|
||||||
|
|
||||||
JKQTPViolinplotVerticalElement::JKQTPViolinplotVerticalElement(JKQTBasePlotter* parent):
|
JKQTPViolinplotVerticalElement::JKQTPViolinplotVerticalElement(JKQTBasePlotter* parent):
|
||||||
JKQTPPlotObject(DrawAsGraphicElement, parent)
|
JKQTPGeometricPlotElement(DrawAsGraphicElement, parent)
|
||||||
{
|
{
|
||||||
pos=JKQTP_NAN;
|
pos=JKQTP_NAN;
|
||||||
median=JKQTP_NAN;
|
median=JKQTP_NAN;
|
||||||
|
@ -60,7 +60,7 @@
|
|||||||
\see \ref JKQTPlotterViolinplotGraphs
|
\see \ref JKQTPlotterViolinplotGraphs
|
||||||
|
|
||||||
*/
|
*/
|
||||||
class JKQTPLOTTER_LIB_EXPORT JKQTPViolinplotVerticalElement: public JKQTPPlotObject, public JKQTPGraphViolinplotStyleMixin {
|
class JKQTPLOTTER_LIB_EXPORT JKQTPViolinplotVerticalElement: public JKQTPGeometricPlotElement, public JKQTPGraphViolinplotStyleMixin {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
/** \brief class constructor */
|
/** \brief class constructor */
|
||||||
|
@ -666,24 +666,24 @@ bool JKQTPXYGraph::getIndexRange(int& imin, int& imax) const
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
JKQTPPlotObject::JKQTPPlotObject(DrawMode drawMode, JKQTBasePlotter *parent):
|
JKQTPGeometricPlotElement::JKQTPGeometricPlotElement(DrawMode drawMode, JKQTBasePlotter *parent):
|
||||||
JKQTPPlotElement(parent), m_drawMode(drawMode)
|
JKQTPPlotElement(parent), m_drawMode(drawMode)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void JKQTPPlotObject::setDrawMode(JKQTPPlotObject::DrawMode mode)
|
void JKQTPGeometricPlotElement::setDrawMode(JKQTPGeometricPlotElement::DrawMode mode)
|
||||||
{
|
{
|
||||||
m_drawMode=mode;
|
m_drawMode=mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
JKQTPPlotObject::DrawMode JKQTPPlotObject::getDrawMode() const
|
JKQTPGeometricPlotElement::DrawMode JKQTPGeometricPlotElement::getDrawMode() const
|
||||||
{
|
{
|
||||||
return m_drawMode;
|
return m_drawMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
JKQTPPlotObject::~JKQTPPlotObject()
|
JKQTPGeometricPlotElement::~JKQTPGeometricPlotElement()
|
||||||
= default;
|
= default;
|
||||||
|
|
||||||
|
|
||||||
@ -988,3 +988,13 @@ void JKQTPXYBaselineGraph::setBaseline(double __value)
|
|||||||
{
|
{
|
||||||
m_baseline=__value;
|
m_baseline=__value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
JKQTPPlotAnnotationElement::JKQTPPlotAnnotationElement(JKQTBasePlotter *parent)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
JKQTPPlotAnnotationElement::~JKQTPPlotAnnotationElement()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
@ -436,68 +436,91 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPGraph: public JKQTPPlotElement {
|
|||||||
|
|
||||||
|
|
||||||
/** \brief this is the virtual base class of all JKQTPPlotElement's in a JKQTPlotter plot that
|
/** \brief this is the virtual base class of all JKQTPPlotElement's in a JKQTPlotter plot that
|
||||||
* represent geometric forms or annotations.
|
* represent geometric forms.
|
||||||
* \ingroup jkqtplotter_basegraphs
|
* \ingroup jkqtplotter_basegraphs
|
||||||
*
|
*
|
||||||
* \see \ref jkqtplotter_graphsgroup_classstructure, \ref JKQTPlotterGeometricGraphs
|
* \see \ref jkqtplotter_graphsgroup_classstructure, \ref JKQTPlotterGeometricGraphs
|
||||||
*
|
*
|
||||||
* \section JKQTPPlotObject_coordinates Coordinate Systems
|
* \section JKQTPGeometricPlotElement_coordinates Coordinate Systems
|
||||||
* JKQTPPlotObject's have extended coordinate transform capabilities, because in addition to using
|
* JKQTPGeometricPlotElement's have extended coordinate transform capabilities, because in addition to using
|
||||||
* the plot coordinates, you can also choose to use different other coordinate systems.
|
* the plot coordinates, you can also choose to use different other coordinate systems.
|
||||||
*
|
*
|
||||||
* \section JKQTPPlotObject_DrawMode Draw Modes
|
* \section JKQTPGeometricPlotElement_DrawMode Draw Modes
|
||||||
*
|
*
|
||||||
* \copydetails m_drawMode
|
* \copydetails m_drawMode
|
||||||
*/
|
*/
|
||||||
class JKQTPLOTTER_LIB_EXPORT JKQTPPlotObject: public JKQTPPlotElement {
|
class JKQTPLOTTER_LIB_EXPORT JKQTPGeometricPlotElement: public JKQTPPlotElement {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
|
|
||||||
/** \brief indicates how to draw the geometric object */
|
/** \brief indicates how to draw the geometric object */
|
||||||
enum DrawMode {
|
enum DrawMode {
|
||||||
DrawAsGraphicElement, /*!< \brief draw lines as lines (i.e. graphic elements) \image html JKQTPPlotObject_DrawAsGraphicElement.png */
|
DrawAsGraphicElement, /*!< \brief draw lines as lines (i.e. graphic elements) \image html JKQTPGeometricPlotElement_DrawAsGraphicElement.png */
|
||||||
DrawAsMathematicalCurve /*!< \brief draw lines as the mathematically correct curve \image html JKQTPPlotObject_DrawAsMathematicalCurve.png */
|
DrawAsMathematicalCurve /*!< \brief draw lines as the mathematically correct curve \image html JKQTPGeometricPlotElement_DrawAsMathematicalCurve.png */
|
||||||
};
|
};
|
||||||
Q_ENUM(DrawMode)
|
Q_ENUM(DrawMode)
|
||||||
|
|
||||||
/** \brief class constructor */
|
/** \brief class constructor */
|
||||||
explicit JKQTPPlotObject(DrawMode drawMode=DrawAsGraphicElement, JKQTBasePlotter* parent=nullptr);
|
explicit JKQTPGeometricPlotElement(DrawMode drawMode=DrawAsGraphicElement, JKQTBasePlotter* parent=nullptr);
|
||||||
|
|
||||||
/** \brief default wirtual destructor */
|
/** \brief default wirtual destructor */
|
||||||
virtual ~JKQTPPlotObject() ;
|
virtual ~JKQTPGeometricPlotElement() ;
|
||||||
/** \copybrief m_drawMode
|
/** \copybrief m_drawMode
|
||||||
*
|
*
|
||||||
* \return the currently set DrawMode
|
* \return the currently set DrawMode
|
||||||
* \see m_drawMode, DrawMode
|
* \see m_drawMode, DrawMode
|
||||||
*/
|
*/
|
||||||
DrawMode getDrawMode() const;
|
DrawMode getDrawMode() const;
|
||||||
|
|
||||||
Q_PROPERTY(DrawMode drawMode READ getDrawMode WRITE setDrawMode)
|
Q_PROPERTY(DrawMode drawMode READ getDrawMode WRITE setDrawMode)
|
||||||
public slots:
|
public slots:
|
||||||
/** \copybrief m_drawMode
|
/** \copybrief m_drawMode
|
||||||
*
|
*
|
||||||
* \param mode the DrawMode to use from now on
|
* \param mode the DrawMode to use from now on
|
||||||
* \see m_drawMode, DrawMode
|
* \see m_drawMode, DrawMode
|
||||||
*/
|
*/
|
||||||
void setDrawMode(DrawMode mode);
|
void setDrawMode(DrawMode mode);
|
||||||
protected:
|
protected:
|
||||||
/** \brief indicated whether to draw lines as graphic elements (even on non-linear coordinate systems),
|
/** \brief indicated whether to draw lines as graphic elements (even on non-linear coordinate systems),
|
||||||
* or as mathematically correct curves
|
* or as mathematically correct curves
|
||||||
*
|
*
|
||||||
* It is possible to define in which ways the forms shall be treated/drawn into non-linear
|
* It is possible to define in which ways the forms shall be treated/drawn into non-linear
|
||||||
* coordinate systems (e.g. semi-log or log-log plots). Imagine drawing a line from (x1,y1) to (x2,y2)
|
* coordinate systems (e.g. semi-log or log-log plots). Imagine drawing a line from (x1,y1) to (x2,y2)
|
||||||
* In a linear coordinate system, this is always a line, but in a non-linear system, the line might
|
* In a linear coordinate system, this is always a line, but in a non-linear system, the line might
|
||||||
* have to be represented by a curve instead. Depending on how you want to use the JKQTPPlotObject you
|
* have to be represented by a curve instead. Depending on how you want to use the JKQTPGeometricPlotElement you
|
||||||
* can choose to still draw it as a line connecting the points (x1,y1) and (x2,y2), or as the -
|
* can choose to still draw it as a line connecting the points (x1,y1) and (x2,y2), or as the -
|
||||||
* mathematically correct - curve connecting these two points:
|
* mathematically correct - curve connecting these two points:
|
||||||
*
|
*
|
||||||
* \image html JKQTPPlotObject_DrawAsMathematicalCurve.png
|
* \image html JKQTPGeometricPlotElement_DrawAsMathematicalCurve.png
|
||||||
*
|
*
|
||||||
* \image html JKQTPPlotObject_DrawAsGraphicElement.png
|
* \image html JKQTPGeometricPlotElement_DrawAsGraphicElement.png
|
||||||
*
|
*
|
||||||
* \see DrawMode, setDrawMode(), getDrawMode()
|
* \see DrawMode, setDrawMode(), getDrawMode()
|
||||||
*/
|
*/
|
||||||
DrawMode m_drawMode;
|
DrawMode m_drawMode;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/** \brief this is the virtual base class of all JKQTPPlotElement's in a JKQTPlotter plot that
|
||||||
|
* represent annotations of a plot. It differs from JKQTPGeometricPlotElement by not providing a
|
||||||
|
* selection of drawModes, as annotations are always drawn as graphic elements.
|
||||||
|
* \ingroup jkqtplotter_basegraphs
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
class JKQTPLOTTER_LIB_EXPORT JKQTPPlotAnnotationElement: public JKQTPPlotElement {
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
|
||||||
|
/** \brief class constructor */
|
||||||
|
explicit JKQTPPlotAnnotationElement(JKQTBasePlotter* parent=nullptr);
|
||||||
|
|
||||||
|
/** \brief default wirtual destructor */
|
||||||
|
virtual ~JKQTPPlotAnnotationElement() ;
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user