JKQtPlotter/doc/dox/jkqtplotter_02principles.dox
2022-09-19 21:55:12 +02:00

48 lines
2.4 KiB
Plaintext

/*!
\defgroup jkqtplotter_basicprinciples Basic Principles of JKQTPlotter
\ingroup jkqtplotter_general
This page documents some basic principles behind the design of the JKQTPlotter library.
\tableofcontents
\section jkqtplotter_basicprinciples_datastorage Datastorage
Data is stored in an (internal) instance of JKQTPDatastore, which is accessible through JKQTPlotter::getDatastore() or JKQTBasePlotter::getDatastore().
This datastore can either own its data (which is done here, as we copy the data into the store
e.g. by calling JKQTPDatastore::addCopiedColumn(), or it can merely reference to the data (then
data needs to be available as array of \c double values).
In addition JKQTPDatastore provides different functions to add or edit the contained data. Amongst others it also provides a C++ StdLib-type iterator
interface to access the data.
\see JKQTPDatastore,
\ref jkqtpdatastorage ,
\ref jkqtp_extut_datamanagement
\section jkqtplotter_basicprinciples_graphs_and_mixins Graphs & Mix-Ins
Each graph is represented by a class derived from JKQTPPlotElement (e.g. JKQTPXYLineGraph,
which shows data as a scatter of symbols that may (or may not) be connected by a line).
There is a complete hirarchy of graph base classes, from which different graphs (or more general plot elements) are derived,
see \ref jkqtplotter_graphsgroup_classstructure_basics .
Constructing a graph class does not yet add it to the plotter. To add it, call JKQTBasePlotter::addGraph() / JKQTPlotter::addGraph(). Only
after this step, the graph is displayed. You can modify the apperance of the graph (e.g. colors, name in the key ...) by setting
properties in the graph class instance.
Most graph peroperties are inserted into the graph class via <a href="https://en.wikipedia.org/wiki/Mixin">mix-in</a> classes.
A Mixin allows to inject the same code into different classes, but does not require these classes to be in the same inheritance
tree. The style of mix-in programming used in the JKQTPlotter library is multiple-inheritance. So a graph class is derived from
JKQTPGraph but also has additional parent classes from \ref jkqtplotter_basegraphs_stylemixins like:
- JKQTPGraphLineStyleMixin which provides line-styling
- JKQTPGraphSymbolStyleMixin which provides styling for graph symbols
- JKQTPGraphFillStyleMixin which provides fill styles
- ...
.
*/