Skip to content

Commit d4faaeb

Browse files
committed
fix: no recompute lables on animations
this really improves perfs
1 parent 24daa42 commit d4faaeb

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

src/charting/charts/BarLineChartBase.ts

+8-5
Original file line numberDiff line numberDiff line change
@@ -172,13 +172,14 @@ export abstract class BarLineChartBase<U extends Entry, D extends IBarLineScatte
172172
public onDraw(canvas: Canvas) {
173173
const startTime = Date.now();
174174
super.onDraw(canvas);
175-
175+
const noComputeOnNextDraw = this.noComputeOnNextDraw;
176+
this.noComputeOnNextDraw = false;
176177
if (this.mData === null) return;
177178

178179
// execute all drawing commands
179180
this.drawGridBackground(canvas);
180181

181-
if (this.mAutoScaleMinMaxEnabled) {
182+
if (!noComputeOnNextDraw && this.mAutoScaleMinMaxEnabled) {
182183
this.autoScale();
183184
}
184185
const leftEnabled = this.mAxisLeft.isEnabled();
@@ -188,11 +189,13 @@ export abstract class BarLineChartBase<U extends Entry, D extends IBarLineScatte
188189
const rightLimitEnabled = rightEnabled && this.mAxisRight.isDrawLimitLinesEnabled();
189190
const xLimitEnabled = xEnabled && this.mXAxis.isDrawLimitLinesEnabled();
190191

191-
if (leftEnabled) this.mAxisRendererLeft.computeAxis(this.mAxisLeft.mAxisMinimum, this.mAxisLeft.mAxisMaximum, this.mAxisLeft.isInverted());
192+
if (!noComputeOnNextDraw) {
193+
if (leftEnabled) this.mAxisRendererLeft.computeAxis(this.mAxisLeft.mAxisMinimum, this.mAxisLeft.mAxisMaximum, this.mAxisLeft.isInverted());
192194

193-
if (rightEnabled) this.mAxisRendererRight.computeAxis(this.mAxisRight.mAxisMinimum, this.mAxisRight.mAxisMaximum, this.mAxisRight.isInverted());
195+
if (rightEnabled) this.mAxisRendererRight.computeAxis(this.mAxisRight.mAxisMinimum, this.mAxisRight.mAxisMaximum, this.mAxisRight.isInverted());
194196

195-
if (xEnabled) this.mXAxisRenderer.computeAxis(this.mXAxis.mAxisMinimum, this.mXAxis.mAxisMaximum, false);
197+
if (xEnabled) this.mXAxisRenderer.computeAxis(this.mXAxis.mAxisMinimum, this.mXAxis.mAxisMaximum, false);
198+
}
196199

197200
this.mXAxisRenderer.renderAxisLine(canvas);
198201
this.mAxisRendererLeft.renderAxisLine(canvas);

src/charting/charts/Chart.ts

+7
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,11 @@ export abstract class Chart<U extends Entry, D extends IDataSet<U>, T extends Ch
149149
private mExtraBottomOffset = 0;
150150
private mExtraLeftOffset = 0;
151151

152+
153+
/**
154+
* let the drawer know it does not need to compute axis and legends
155+
* (it can used the cached ones)
156+
*/
152157
/**
153158
* default constructor for initialization in code
154159
*/
@@ -171,6 +176,8 @@ export abstract class Chart<U extends Entry, D extends IDataSet<U>, T extends Ch
171176
*/
172177
protected init() {
173178
this.mAnimator = new ChartAnimator(() => {
179+
// during animations we dont need to compute axis things
180+
this.noComputeOnNextDraw = true;
174181
this.invalidate();
175182
});
176183

0 commit comments

Comments
 (0)