0
0
mirror of https://github.com/fralx/LimeReport.git synced 2025-10-04 20:07:54 +03:00

Refactor axis data. Remove duplicate paint code

This commit is contained in:
Emil Sawicki
2022-01-18 10:56:05 +01:00
parent 95a11bdc14
commit dfa378970f
11 changed files with 295 additions and 92 deletions

View File

@@ -54,8 +54,8 @@ void VerticalBarChart::paintVerticalBars(QPainter *painter, QRectF barsRect)
if (valuesCount() == 0) return;
int delta = int(maxValue() - minValue());
delta = genNextValue(delta);
const AxisData &yAxisData = this->yAxisData();
const qreal delta = yAxisData.delta();
int barSeriesCount = 0;
foreach(SeriesItem* series, m_chartItem->series()){
@@ -102,30 +102,14 @@ void VerticalBarChart::paintVerticalBars(QPainter *painter, QRectF barsRect)
void VerticalBarChart::paintSerialLines(QPainter* painter, QRectF barsRect)
{
if (valuesCount() == 0 ) return;
if (valuesCount() == 0 || m_chartItem->series().isEmpty() ) return;
painter->save();
painter->setRenderHint(QPainter::Antialiasing,true);
int delta = int(maxValue() - minValue());
delta = genNextValue(delta);
qreal vStep = barsRect.height() / delta;
qreal hStep = (barsRect.width() / valuesCount());
qreal topShift = (delta - (maxValue()-minValue())) * vStep + barsRect.top();
if (!m_chartItem->series().isEmpty()){
foreach (SeriesItem* series, m_chartItem->series()) {
if (series->preferredType() == SeriesItem::Line){
for (int i = 0; i < series->data()->values().count()-1; ++i ){
QPoint startPoint = QPoint((i+1)*hStep + barsRect.left()-hStep/2,
(maxValue() * vStep+topShift) - series->data()->values().at(i) * vStep
);
QPoint endPoint = QPoint((i+2)*hStep + barsRect.left()-hStep/2,
(maxValue() * vStep+topShift) - series->data()->values().at(i+1) * vStep
);
drawSegment(painter, startPoint, endPoint, series->color());
}
}
for (SeriesItem *series : m_chartItem->series()) {
if (series->preferredType() == SeriesItem::Line){
paintSeries(painter, series, barsRect);
}
}
painter->restore();