Calligra/Chart Shape/Overall Design
Overview
Classes
ChartShape
This is the KoShape implementation and thus the interface for KOffice's internals. Loading and saving starts here. Exactly one instance per chart.
PlotArea
Represents everything that belongs to the plot area, there's always exactly one instance of this class for one chart.
Axis
Owns the actual diagrams as the diagram's scaling depends on the axis. (If you think "WTF!?" here, see Calligra/KChart/Refactors)
ChartProxyModel
Represents the central source of data acting as a kind of proxy for all data tables.
TableSource
Manages all tables used by chart.
DataSet
Responsible for properties and data of a particular data set.
KDChartModel
Data interface for KD Chart. Combines a list of DataSets (with their properties and data) into a single model.
Legend
Stores properties of a legend, draws it, loads and saves it from/to ODF.
Integration of KD Chart
Everything, data and attributes, we offer to KD Chart through KDChartModel. The value for a specific data point it retrieves using Qt::DisplayRole. For attributes it uses a seperate data role, e.g. it retrieves the DataValueAttributes for a certain data point though KDChartModel::data(index, KDChart::DataValueLabelAttributesRole).
All attributes are communicated by this method. We do not use setter or getter for [DataValue/Pie/Bar/StockBar/Line]Attributes of any of the KDChart::AbstractDiagram subclasses.