Skip to content

Commit 90591f9

Browse files
committed
fix: support DataSet “setFillShader” for all charts
1 parent 8fb538f commit 90591f9

12 files changed

+63
-75
lines changed

src/charting/data/BaseDataSet.ts

+16-34
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,6 @@ export abstract class BaseDataSet<T extends Entry> implements IDataSet<T> {
5353

5454
private mColorDefault = '#8CEAFF';
5555

56-
protected mGradientColor = null;
57-
58-
protected mGradientColors: GradientColor[] = null;
59-
6056
/**
6157
* List representing all colors that are used for drawing the actual values for this DataSet
6258
*/
@@ -172,17 +168,6 @@ export abstract class BaseDataSet<T extends Entry> implements IDataSet<T> {
172168
return this.mColors[Math.floor(index) % this.mColors.length];
173169
}
174170

175-
public getGradientColors() {
176-
return this.mGradientColors;
177-
}
178-
179-
public getGradientColor(index?: number) {
180-
if (!this.mGradientColors || index === undefined) {
181-
return this.mGradientColor;
182-
}
183-
return this.mGradientColors[index % this.mGradientColors.length];
184-
}
185-
186171
// /**
187172
// * Sets the colors that should be used fore this DataSet. Colors are reused
188173
// * as soon as the number of Entries the DataSet represents is higher than
@@ -206,25 +191,6 @@ export abstract class BaseDataSet<T extends Entry> implements IDataSet<T> {
206191
this.mColors.push(value);
207192
}
208193

209-
/**
210-
* Sets the start and end color for gradient color, ONLY color that should be used for this DataSet.
211-
*
212-
* @param startColor
213-
* @param endColor
214-
*/
215-
public setGradientColor(startColor, endColor) {
216-
this.mGradientColor = new GradientColor(startColor, endColor);
217-
}
218-
219-
/**
220-
* Sets the start and end color for gradient colors, ONLY color that should be used for this DataSet.
221-
*
222-
* @param gradientColors
223-
*/
224-
public setGradientColors(gradientColors: GradientColor[]) {
225-
this.mGradientColors = gradientColors;
226-
}
227-
228194
/**
229195
* Sets a color with a specific alpha value.
230196
*
@@ -406,6 +372,22 @@ export abstract class BaseDataSet<T extends Entry> implements IDataSet<T> {
406372
this.mAxisDependency = dependency;
407373
}
408374

375+
/**
376+
* the shader to be used for filling the line surface
377+
*/
378+
protected mFillShader;
379+
/**
380+
* Sets the shader that is used for filling the area below the line
381+
*
382+
* @param shader
383+
*/
384+
public setFillShader(shader) {
385+
this.mFillShader = shader;
386+
}
387+
public getFillShader() {
388+
return this.mFillShader;
389+
}
390+
409391
/**
410392
* ###### ###### DATA RELATED METHODS ###### ######
411393
*/

src/charting/data/DataSet.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { Utils } from '../utils/Utils';
1212
export enum Rounding {
1313
UP,
1414
DOWN,
15-
CLOSEST,
15+
CLOSEST
1616
}
1717
/**
1818
* The DataSet class represents one group or type of entries (Entry) in the

src/charting/data/LineRadarDataSet.ts

-17
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,6 @@ export abstract class LineRadarDataSet<T extends Entry> extends LineScatterCandl
2121
*/
2222
protected mFillDrawable: ImageSource;
2323

24-
/**
25-
* the shader to be used for filling the line surface
26-
*/
27-
protected mFillShader;
28-
2924
/**
3025
* transparency used for filling line surface
3126
*/
@@ -55,18 +50,6 @@ export abstract class LineRadarDataSet<T extends Entry> extends LineScatterCandl
5550
this.mFillColor = color;
5651
this.mFillDrawable = null;
5752
}
58-
/**
59-
* Sets the shader that is used for filling the area below the line
60-
*
61-
* @param shader
62-
*/
63-
public setFillShader(shader) {
64-
this.mFillShader = shader;
65-
}
66-
public getFillShader() {
67-
return this.mFillShader;
68-
}
69-
7053

7154
public getFillDrawable() {
7255
return this.mFillDrawable;

src/charting/data/LineScatterCandleRadarDataSet.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ export abstract class LineScatterCandleRadarDataSet<T extends Entry> extends Bar
7575
* @param phase offset, in degrees (normally, use 0)
7676
*/
7777
public enableDashedHighlightLine(lineLength, spaceLength, phase) {
78-
this.mHighlightDashPathEffect = new DashPathEffect([lineLength,spaceLength],phase);
78+
this.mHighlightDashPathEffect = new DashPathEffect([lineLength, spaceLength], phase);
7979
}
8080

8181
/**

src/charting/interfaces/datasets/IDataSet.d.ts

+7-15
Original file line numberDiff line numberDiff line change
@@ -298,21 +298,6 @@ export interface IDataSet<T extends Entry> {
298298
*/
299299
getColors(): (string | Color)[];
300300

301-
/**
302-
* Returns the Gradient colors
303-
*
304-
* @return
305-
*/
306-
getGradientColors(): GradientColor[];
307-
308-
/**
309-
* Returns the Gradient colors
310-
*
311-
* @param index
312-
* @return
313-
*/
314-
getGradientColor(index?: number): GradientColor;
315-
316301
/**
317302
* Returns the color at the given index of the DataSet's color array.
318303
* Performs a IndexOutOfBounds check by modulus.
@@ -504,4 +489,11 @@ export interface IDataSet<T extends Entry> {
504489
* @return
505490
*/
506491
isVisible(): boolean;
492+
493+
/**
494+
* Returns the shader used for filling the area below the line.
495+
*
496+
* @return
497+
*/
498+
getFillShader();
507499
}

src/charting/interfaces/datasets/ILineRadarDataSet.d.ts

-6
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,6 @@ export interface ILineRadarDataSet<T extends Entry> extends ILineScatterCandleRa
2020
* @return
2121
*/
2222
getFillDrawable(): ImageSource;
23-
/**
24-
* Returns the shader used for filling the area below the line.
25-
*
26-
* @return
27-
*/
28-
getFillShader();
2923

3024
/**
3125
* Returns the alpha value that is used for filling the line surface,

src/charting/renderer/BarChartRenderer.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -161,8 +161,13 @@ export class BarChartRenderer extends BarLineScatterCandleBubbleRenderer {
161161
trans.pointValuesToPixel(buffer.buffer);
162162

163163
const isSingleColor = dataSet.getColors().length === 1;
164-
const isInverted = this.mChart.isInverted(dataSet.getAxisDependency());
164+
// const isInverted = this.mChart.isInverted(dataSet.getAxisDependency());
165165
const renderPaint = this.renderPaint;
166+
const previousShader = renderPaint.getShader();
167+
const shader = dataSet.getFillShader();
168+
if (shader) {
169+
renderPaint.setShader(shader);
170+
}
166171
if (isSingleColor) {
167172
renderPaint.setColor(dataSet.getColor());
168173
}
@@ -192,6 +197,7 @@ export class BarChartRenderer extends BarLineScatterCandleBubbleRenderer {
192197
}
193198
}
194199
}
200+
renderPaint.setShader(previousShader);
195201

196202
return true;
197203
}

src/charting/renderer/BubbleChartRenderer.ts

+6
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,11 @@ export class BubbleChartRenderer extends BarLineScatterCandleBubbleRenderer {
8181
const maxSize = dataSet.getMaxSize();
8282
const customRender = this.mChart.getCustomRenderer();
8383
const renderPaint = this.renderPaint;
84+
const previousShader = renderPaint.getShader();
85+
const shader = dataSet.getFillShader();
86+
if (shader) {
87+
renderPaint.setShader(shader);
88+
}
8489
for (let j = this.mXBounds.min; j <= this.mXBounds.range + this.mXBounds.min; j++) {
8590
const entry = dataSet.getEntryForIndex(j);
8691
const xValue = getEntryXValue(entry, xKey, j);
@@ -104,6 +109,7 @@ export class BubbleChartRenderer extends BarLineScatterCandleBubbleRenderer {
104109
c.drawCircle(this.pointBuffer[0], this.pointBuffer[1], shapeHalf, renderPaint);
105110
}
106111
}
112+
renderPaint.setShader(previousShader);
107113
}
108114

109115
public drawValues(c: Canvas) {

src/charting/renderer/HorizontalBarChartRenderer.ts

+6
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,11 @@ export class HorizontalBarChartRenderer extends BarChartRenderer {
100100
const isSingleColor = dataSet.getColors().length === 1;
101101
const isInverted = this.mChart.isInverted(dataSet.getAxisDependency());
102102
const renderPaint = this.renderPaint;
103+
const previousShader = renderPaint.getShader();
104+
const shader = dataSet.getFillShader();
105+
if (shader) {
106+
renderPaint.setShader(shader);
107+
}
103108

104109
if (isSingleColor) {
105110
renderPaint.setColor(dataSet.getColor());
@@ -130,6 +135,7 @@ export class HorizontalBarChartRenderer extends BarChartRenderer {
130135
}
131136
}
132137
}
138+
renderPaint.setShader(previousShader);
133139

134140
return true;
135141
}

src/charting/renderer/PieChartRenderer.ts

+6
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,11 @@ export class PieChartRenderer extends DataRenderer {
266266
const customRender = this.mChart.getCustomRenderer();
267267
const renderPaint = this.renderPaint;
268268
const pathBuffer = this.pathBuffer;
269+
const previousShader = renderPaint.getShader();
270+
const shader = dataSet.getFillShader();
271+
if (shader) {
272+
renderPaint.setShader(shader);
273+
}
269274
for (let j = 0; j < entryCount; j++) {
270275
const sliceAngle = drawAngles[j];
271276
let innerRadius = userInnerRadius;
@@ -380,6 +385,7 @@ export class PieChartRenderer extends DataRenderer {
380385

381386
angle += sliceAngle * phaseX;
382387
}
388+
renderPaint.setShader(previousShader);
383389

384390
return result;
385391
}

src/charting/renderer/RadarChartRenderer.ts

+7
Original file line numberDiff line numberDiff line change
@@ -139,12 +139,19 @@ export class RadarChartRenderer extends LineRadarRenderer {
139139
// surface.close();
140140

141141
if (dataSet.isDrawFilledEnabled()) {
142+
const renderPaint = this.renderPaint;
143+
const previousShader = renderPaint.getShader();
144+
const shader = dataSet.getFillShader();
145+
if (shader) {
146+
renderPaint.setShader(shader);
147+
}
142148
const drawable = dataSet.getFillDrawable();
143149
if (drawable != null) {
144150
this.drawFilledPathBitmap(c, surface, drawable, dataSet.getFillShader());
145151
} else {
146152
this.drawFilledPath(c, surface, dataSet.getFillColor(), dataSet.getFillAlpha());
147153
}
154+
renderPaint.setShader(previousShader);
148155
}
149156

150157
// draw the line (only if filled is disabled or alpha is below 255)

src/charting/renderer/ScatterChartRenderer.ts

+6
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,11 @@ export class ScatterChartRenderer extends LineScatterCandleRadarRenderer {
6161
const customRender = this.mChart.getCustomRenderer();
6262
const renderPaint = this.renderPaint;
6363
const pixelBuffer = this.pixelBuffer;
64+
const previousShader = renderPaint.getShader();
65+
const shader = dataSet.getFillShader();
66+
if (shader) {
67+
renderPaint.setShader(shader);
68+
}
6469
for (let i = 0; i < max; i++) {
6570
const e = dataSet.getEntryForIndex(i);
6671

@@ -80,6 +85,7 @@ export class ScatterChartRenderer extends LineScatterCandleRadarRenderer {
8085
renderer.renderShape(c, dataSet, this.mViewPortHandler, pixelBuffer[0], pixelBuffer[1], renderPaint);
8186
}
8287
}
88+
renderPaint.setShader(previousShader);
8389
}
8490

8591
public drawValues(c: Canvas) {

0 commit comments

Comments
 (0)