mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Fixed animation of line filtering in stack linear chart view.
This commit is contained in:
parent
8ded88baf5
commit
aeee016dc9
1 changed files with 17 additions and 19 deletions
|
@ -129,12 +129,12 @@ void StackLinearChartView::prepareZoom(
|
||||||
auto sum = 0.;
|
auto sum = 0.;
|
||||||
auto drawingLinesCount = 0;
|
auto drawingLinesCount = 0;
|
||||||
for (const auto &line : c.chartData.lines) {
|
for (const auto &line : c.chartData.lines) {
|
||||||
if (!linesFilter->isEnabled(line.id)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (line.y[i] > 0) {
|
if (line.y[i] > 0) {
|
||||||
sum += line.y[i] * linesFilter->alpha(line.id);
|
const auto alpha = linesFilter->alpha(line.id);
|
||||||
drawingLinesCount++;
|
sum += line.y[i] * alpha;
|
||||||
|
if (alpha > 0.) {
|
||||||
|
drawingLinesCount++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -143,9 +143,6 @@ void StackLinearChartView::prepareZoom(
|
||||||
? _transition.lines[k].end
|
? _transition.lines[k].end
|
||||||
: _transition.lines[k].start);
|
: _transition.lines[k].start);
|
||||||
const auto &line = c.chartData.lines[k];
|
const auto &line = c.chartData.lines[k];
|
||||||
if (!linesFilter->isEnabled(line.id)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
const auto yPercentage = (drawingLinesCount == 1)
|
const auto yPercentage = (drawingLinesCount == 1)
|
||||||
? (line.y[i] ? linesFilter->alpha(line.id) : 0)
|
? (line.y[i] ? linesFilter->alpha(line.id) : 0)
|
||||||
: (sum
|
: (sum
|
||||||
|
@ -331,11 +328,12 @@ void StackLinearChartView::paintChartOrZoomAnimation(
|
||||||
|
|
||||||
for (auto k = 0; k < c.chartData.lines.size(); k++) {
|
for (auto k = 0; k < c.chartData.lines.size(); k++) {
|
||||||
const auto &line = c.chartData.lines[k];
|
const auto &line = c.chartData.lines[k];
|
||||||
if (!linesFilter->isEnabled(line.id)) {
|
const auto alpha = linesFilter->alpha(line.id);
|
||||||
|
if (!alpha) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (line.y[i] > 0) {
|
if (line.y[i] > 0) {
|
||||||
sum += line.y[i] * linesFilter->alpha(line.id);
|
sum += line.y[i] * alpha;
|
||||||
drawingLinesCount++;
|
drawingLinesCount++;
|
||||||
}
|
}
|
||||||
lastEnabled = k;
|
lastEnabled = k;
|
||||||
|
@ -345,11 +343,11 @@ void StackLinearChartView::paintChartOrZoomAnimation(
|
||||||
const auto &line = c.chartData.lines[k];
|
const auto &line = c.chartData.lines[k];
|
||||||
const auto isLastLine = (k == lastEnabled);
|
const auto isLastLine = (k == lastEnabled);
|
||||||
const auto &transitionLine = _transition.lines[k];
|
const auto &transitionLine = _transition.lines[k];
|
||||||
if (!linesFilter->isEnabled(line.id)) {
|
const auto lineAlpha = linesFilter->alpha(line.id);
|
||||||
|
if (!lineAlpha) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
const auto &y = line.y;
|
const auto &y = line.y;
|
||||||
const auto lineAlpha = linesFilter->alpha(line.id);
|
|
||||||
|
|
||||||
auto &chartPath = paths[k];
|
auto &chartPath = paths[k];
|
||||||
|
|
||||||
|
@ -516,7 +514,6 @@ void StackLinearChartView::paintChartOrZoomAnimation(
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
const auto &line = c.chartData.lines[k];
|
const auto &line = c.chartData.lines[k];
|
||||||
p.setOpacity(linesFilter->alpha(line.id) * opacity);
|
|
||||||
p.setPen(Qt::NoPen);
|
p.setPen(Qt::NoPen);
|
||||||
p.fillPath(paths[k], line.color);
|
p.fillPath(paths[k], line.color);
|
||||||
}
|
}
|
||||||
|
@ -633,11 +630,11 @@ void StackLinearChartView::paintZoomedFooter(
|
||||||
auto sum = 0.;
|
auto sum = 0.;
|
||||||
auto lastEnabledId = int(0);
|
auto lastEnabledId = int(0);
|
||||||
for (const auto &line : c.chartData.lines) {
|
for (const auto &line : c.chartData.lines) {
|
||||||
if (!linesFilterController()->isEnabled(line.id)) {
|
const auto alpha = linesFilterController()->alpha(line.id);
|
||||||
continue;
|
sum += line.y[i] * alpha;
|
||||||
|
if (alpha > 0.) {
|
||||||
|
lastEnabledId = line.id;
|
||||||
}
|
}
|
||||||
sum += line.y[i] * linesFilterController()->alpha(line.id);
|
|
||||||
lastEnabledId = line.id;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto columnMargins = QMarginsF(
|
const auto columnMargins = QMarginsF(
|
||||||
|
@ -655,10 +652,11 @@ void StackLinearChartView::paintZoomedFooter(
|
||||||
auto stack = 0.;
|
auto stack = 0.;
|
||||||
for (auto k = int(c.chartData.lines.size() - 1); k >= 0; k--) {
|
for (auto k = int(c.chartData.lines.size() - 1); k >= 0; k--) {
|
||||||
const auto &line = c.chartData.lines[k];
|
const auto &line = c.chartData.lines[k];
|
||||||
if (!linesFilterController()->isEnabled(line.id)) {
|
const auto visibleHeight = c.rect.height()
|
||||||
|
* (line.y[i] * linesFilterController()->alpha(line.id) / sum);
|
||||||
|
if (!visibleHeight) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
const auto visibleHeight = c.rect.height() * (line.y[i] / sum);
|
|
||||||
const auto height = (line.id == lastEnabledId)
|
const auto height = (line.id == lastEnabledId)
|
||||||
? c.rect.height()
|
? c.rect.height()
|
||||||
: visibleHeight;
|
: visibleHeight;
|
||||||
|
|
Loading…
Add table
Reference in a new issue