From fe4c7a8e9d26a5e4fe7ee0b02ee9d2c7baee48d1 Mon Sep 17 00:00:00 2001 From: Daniela Brozzoni Date: Fri, 29 Jun 2018 14:29:45 +0200 Subject: [PATCH 1/7] Added method to change padding between subcolumns --- .../hellocharts/renderer/ColumnChartRenderer.java | 12 ++++++++++++ .../lecho/lib/hellocharts/view/ColumnChartView.java | 6 ++++++ 2 files changed, 18 insertions(+) diff --git a/hellocharts-library/src/lecho/lib/hellocharts/renderer/ColumnChartRenderer.java b/hellocharts-library/src/lecho/lib/hellocharts/renderer/ColumnChartRenderer.java index da677138..ace34568 100644 --- a/hellocharts-library/src/lecho/lib/hellocharts/renderer/ColumnChartRenderer.java +++ b/hellocharts-library/src/lecho/lib/hellocharts/renderer/ColumnChartRenderer.java @@ -22,6 +22,7 @@ public class ColumnChartRenderer extends AbstractChartRenderer { public static final int DEFAULT_SUBCOLUMN_SPACING_DP = 1; public static final int DEFAULT_COLUMN_TOUCH_ADDITIONAL_WIDTH_DP = 4; + public static final int MAX_SUBCOLUMN_SPACING_DP = 20; private static final int MODE_DRAW = 0; private static final int MODE_CHECK_TOUCH = 1; @@ -419,4 +420,15 @@ private void drawLabel(Canvas canvas, Column column, SubcolumnValue columnValue, } + public int getSubcolumnSpacing() { + return subcolumnSpacing; + } + + public void setSubcolumnSpacing(int subcolumnSpacing) { + if(subcolumnSpacing > MAX_SUBCOLUMN_SPACING_DP) subcolumnSpacing = MAX_SUBCOLUMN_SPACING_DP; + this.subcolumnSpacing = subcolumnSpacing; + } + + + } diff --git a/hellocharts-library/src/lecho/lib/hellocharts/view/ColumnChartView.java b/hellocharts-library/src/lecho/lib/hellocharts/view/ColumnChartView.java index 4f3dc7c6..ac9dcf4e 100644 --- a/hellocharts-library/src/lecho/lib/hellocharts/view/ColumnChartView.java +++ b/hellocharts-library/src/lecho/lib/hellocharts/view/ColumnChartView.java @@ -85,4 +85,10 @@ public void setOnValueTouchListener(ColumnChartOnValueSelectListener touchListen this.onValueTouchListener = touchListener; } } + + public void setSubcolumnSpacing(int subcolumnSpacing) { + if(subcolumnSpacing < 0) subcolumnSpacing = 0; + ((ColumnChartRenderer) chartRenderer).setSubcolumnSpacing(subcolumnSpacing); + } + } From 13d4d718e2e77f1bb13dd39e318d160e1bf18cb7 Mon Sep 17 00:00:00 2001 From: Daniela Brozzoni Date: Fri, 29 Jun 2018 15:21:41 +0200 Subject: [PATCH 2/7] Update gradle, now subcolumns can be overlapped --- build.gradle | 3 ++- gradle/wrapper/gradle-wrapper.properties | 4 ++-- hellocharts-library/build.gradle | 3 ++- .../src/lecho/lib/hellocharts/view/ColumnChartView.java | 1 - .../lecho/lib/hellocharts/samples/ColumnChartActivity.java | 1 - 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/build.gradle b/build.gradle index b4d37b7b..b5ef1e61 100644 --- a/build.gradle +++ b/build.gradle @@ -2,8 +2,9 @@ buildscript { repositories { mavenCentral() + google() } dependencies { - classpath 'com.android.tools.build:gradle:2.1.0' + classpath 'com.android.tools.build:gradle:3.1.3' } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 0c44860e..64868730 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Wed Apr 10 15:27:10 PDT 2013 +#Fri Jun 29 12:57:06 CEST 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=http\://services.gradle.org/distributions/gradle-2.2.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip diff --git a/hellocharts-library/build.gradle b/hellocharts-library/build.gradle index acd91eac..312abe00 100644 --- a/hellocharts-library/build.gradle +++ b/hellocharts-library/build.gradle @@ -9,9 +9,10 @@ apply from: 'https://raw.github.com/chrisbanes/gradle-mvn-push/master/gradle-mvn buildscript { repositories { mavenCentral() + google() } dependencies { - classpath 'com.android.tools.build:gradle:2.1.0' + classpath 'com.android.tools.build:gradle:3.1.3' } } diff --git a/hellocharts-library/src/lecho/lib/hellocharts/view/ColumnChartView.java b/hellocharts-library/src/lecho/lib/hellocharts/view/ColumnChartView.java index ac9dcf4e..eac3d9c1 100644 --- a/hellocharts-library/src/lecho/lib/hellocharts/view/ColumnChartView.java +++ b/hellocharts-library/src/lecho/lib/hellocharts/view/ColumnChartView.java @@ -87,7 +87,6 @@ public void setOnValueTouchListener(ColumnChartOnValueSelectListener touchListen } public void setSubcolumnSpacing(int subcolumnSpacing) { - if(subcolumnSpacing < 0) subcolumnSpacing = 0; ((ColumnChartRenderer) chartRenderer).setSubcolumnSpacing(subcolumnSpacing); } diff --git a/hellocharts-samples/src/lecho/lib/hellocharts/samples/ColumnChartActivity.java b/hellocharts-samples/src/lecho/lib/hellocharts/samples/ColumnChartActivity.java index 0e76436c..9e3a7c57 100644 --- a/hellocharts-samples/src/lecho/lib/hellocharts/samples/ColumnChartActivity.java +++ b/hellocharts-samples/src/lecho/lib/hellocharts/samples/ColumnChartActivity.java @@ -64,7 +64,6 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa chart = (ColumnChartView) rootView.findViewById(R.id.chart); chart.setOnValueTouchListener(new ValueTouchListener()); - generateData(); return rootView; From a34936effdeff94517907f63b09e580a55bc050a Mon Sep 17 00:00:00 2001 From: Daniela Brozzoni Date: Fri, 29 Jun 2018 15:55:28 +0200 Subject: [PATCH 3/7] Added borders in non-stacked mode --- .../renderer/ColumnChartRenderer.java | 46 +++++++++++++++---- .../lib/hellocharts/view/ColumnChartView.java | 8 ++++ .../samples/ColumnChartActivity.java | 4 ++ 3 files changed, 48 insertions(+), 10 deletions(-) diff --git a/hellocharts-library/src/lecho/lib/hellocharts/renderer/ColumnChartRenderer.java b/hellocharts-library/src/lecho/lib/hellocharts/renderer/ColumnChartRenderer.java index ace34568..9cfe36af 100644 --- a/hellocharts-library/src/lecho/lib/hellocharts/renderer/ColumnChartRenderer.java +++ b/hellocharts-library/src/lecho/lib/hellocharts/renderer/ColumnChartRenderer.java @@ -2,6 +2,7 @@ import android.content.Context; import android.graphics.Canvas; +import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint.Cap; import android.graphics.PointF; @@ -23,6 +24,7 @@ public class ColumnChartRenderer extends AbstractChartRenderer { public static final int DEFAULT_SUBCOLUMN_SPACING_DP = 1; public static final int DEFAULT_COLUMN_TOUCH_ADDITIONAL_WIDTH_DP = 4; public static final int MAX_SUBCOLUMN_SPACING_DP = 20; + public static final int BORDER_SIZE = 3; private static final int MODE_DRAW = 0; private static final int MODE_CHECK_TOUCH = 1; @@ -59,6 +61,10 @@ public class ColumnChartRenderer extends AbstractChartRenderer { private float baseValue; + private boolean hasBorders = false; + + private int bordersColor = Color.parseColor("#FFFFFF"); + private Viewport tempMaximumViewport = new Viewport(); public ColumnChartRenderer(Context context, Chart chart, ColumnChartDataProvider dataProvider) { @@ -226,10 +232,17 @@ private void processColumnForSubcolumns(Canvas canvas, Column column, float colu break; } final float rawY = computator.computeRawY(columnValue.getValue()); - calculateRectToDraw(columnValue, subcolumnRawX, subcolumnRawX + subcolumnWidth, baseRawY, rawY); + calculateRectToDraw(columnValue, subcolumnRawX, subcolumnRawX + subcolumnWidth, baseRawY, rawY, BORDER_SIZE); switch (mode) { case MODE_DRAW: - drawSubcolumn(canvas, column, columnValue, false); + if(hasBorders) { + columnPaint.setColor(bordersColor); + drawSubcolumn(canvas, column, columnValue, false); + columnPaint.setColor(columnValue.getColor()); + calculateRectToDraw(columnValue, subcolumnRawX, subcolumnRawX + subcolumnWidth, baseRawY, rawY, 0); + drawSubcolumn(canvas, column, columnValue, false); + } else + drawSubcolumn(canvas, column, columnValue, false); break; case MODE_HIGHLIGHT: highlightSubcolumn(canvas, column, columnValue, valueIndex, false); @@ -299,7 +312,7 @@ private void processColumnForStacked(Canvas canvas, Column column, float columnW } final float rawBaseY = computator.computeRawY(subcolumnBaseValue); final float rawY = computator.computeRawY(subcolumnBaseValue + columnValue.getValue()); - calculateRectToDraw(columnValue, rawX - halfColumnWidth, rawX + halfColumnWidth, rawBaseY, rawY); + calculateRectToDraw(columnValue, rawX - halfColumnWidth, rawX + halfColumnWidth, rawBaseY, rawY, 0); switch (mode) { case MODE_DRAW: drawSubcolumn(canvas, column, columnValue, true); @@ -354,16 +367,16 @@ private float calculateColumnWidth() { return columnWidth; } - private void calculateRectToDraw(SubcolumnValue columnValue, float left, float right, float rawBaseY, float rawY) { + private void calculateRectToDraw(SubcolumnValue columnValue, float left, float right, float rawBaseY, float rawY, float border) { // Calculate rect that will be drawn as column, subcolumn or label background. - drawRect.left = left; - drawRect.right = right; + drawRect.left = left - border; + drawRect.right = right + border; if (columnValue.getValue() >= baseValue) { - drawRect.top = rawY; - drawRect.bottom = rawBaseY - subcolumnSpacing; + drawRect.top = rawY - border; + drawRect.bottom = rawBaseY - subcolumnSpacing + border; } else { - drawRect.bottom = rawY; - drawRect.top = rawBaseY + subcolumnSpacing; + drawRect.bottom = rawY + border; + drawRect.top = rawBaseY + subcolumnSpacing - border; } } @@ -429,6 +442,19 @@ public void setSubcolumnSpacing(int subcolumnSpacing) { this.subcolumnSpacing = subcolumnSpacing; } + public boolean hasBorders() { + return hasBorders; + } + public void setBorders(boolean hasBorders) { + this.hasBorders = hasBorders; + } + public int getBordersColor() { + return bordersColor; + } + + public void setBordersColor(int bordersColor) { + this.bordersColor = bordersColor; + } } diff --git a/hellocharts-library/src/lecho/lib/hellocharts/view/ColumnChartView.java b/hellocharts-library/src/lecho/lib/hellocharts/view/ColumnChartView.java index eac3d9c1..440d0645 100644 --- a/hellocharts-library/src/lecho/lib/hellocharts/view/ColumnChartView.java +++ b/hellocharts-library/src/lecho/lib/hellocharts/view/ColumnChartView.java @@ -90,4 +90,12 @@ public void setSubcolumnSpacing(int subcolumnSpacing) { ((ColumnChartRenderer) chartRenderer).setSubcolumnSpacing(subcolumnSpacing); } + public void setBorders(boolean hasBorders){ + ((ColumnChartRenderer) chartRenderer).setBorders(hasBorders); + } + + public void setBordersColor(int id){ + ((ColumnChartRenderer) chartRenderer).setBordersColor(id); + } + } diff --git a/hellocharts-samples/src/lecho/lib/hellocharts/samples/ColumnChartActivity.java b/hellocharts-samples/src/lecho/lib/hellocharts/samples/ColumnChartActivity.java index 9e3a7c57..9b0175f0 100644 --- a/hellocharts-samples/src/lecho/lib/hellocharts/samples/ColumnChartActivity.java +++ b/hellocharts-samples/src/lecho/lib/hellocharts/samples/ColumnChartActivity.java @@ -1,5 +1,6 @@ package lecho.lib.hellocharts.samples; +import android.graphics.Color; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v7.app.ActionBarActivity; @@ -64,6 +65,9 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa chart = (ColumnChartView) rootView.findViewById(R.id.chart); chart.setOnValueTouchListener(new ValueTouchListener()); + chart.setBorders(true); + chart.setBordersColor(Color.parseColor("#009fff")); + chart.setSubcolumnSpacing(-10); generateData(); return rootView; From 6eddefad58abb9eb419a5acbb32857b4670f0b57 Mon Sep 17 00:00:00 2001 From: Daniela Brozzoni Date: Fri, 29 Jun 2018 16:04:35 +0200 Subject: [PATCH 4/7] Added borders for stack mode --- .../hellocharts/renderer/ColumnChartRenderer.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/hellocharts-library/src/lecho/lib/hellocharts/renderer/ColumnChartRenderer.java b/hellocharts-library/src/lecho/lib/hellocharts/renderer/ColumnChartRenderer.java index 9cfe36af..3981d50c 100644 --- a/hellocharts-library/src/lecho/lib/hellocharts/renderer/ColumnChartRenderer.java +++ b/hellocharts-library/src/lecho/lib/hellocharts/renderer/ColumnChartRenderer.java @@ -232,10 +232,11 @@ private void processColumnForSubcolumns(Canvas canvas, Column column, float colu break; } final float rawY = computator.computeRawY(columnValue.getValue()); - calculateRectToDraw(columnValue, subcolumnRawX, subcolumnRawX + subcolumnWidth, baseRawY, rawY, BORDER_SIZE); + calculateRectToDraw(columnValue, subcolumnRawX, subcolumnRawX + subcolumnWidth, baseRawY, rawY, 0); switch (mode) { case MODE_DRAW: if(hasBorders) { + calculateRectToDraw(columnValue, subcolumnRawX, subcolumnRawX + subcolumnWidth, baseRawY, rawY, BORDER_SIZE); columnPaint.setColor(bordersColor); drawSubcolumn(canvas, column, columnValue, false); columnPaint.setColor(columnValue.getColor()); @@ -315,7 +316,15 @@ private void processColumnForStacked(Canvas canvas, Column column, float columnW calculateRectToDraw(columnValue, rawX - halfColumnWidth, rawX + halfColumnWidth, rawBaseY, rawY, 0); switch (mode) { case MODE_DRAW: - drawSubcolumn(canvas, column, columnValue, true); + if(hasBorders) { + calculateRectToDraw(columnValue, rawX - halfColumnWidth, rawX + halfColumnWidth, rawBaseY, rawY, BORDER_SIZE); + columnPaint.setColor(bordersColor); + drawSubcolumn(canvas, column, columnValue, true); + columnPaint.setColor(columnValue.getColor()); + calculateRectToDraw(columnValue, rawX - halfColumnWidth, rawX + halfColumnWidth, rawBaseY, rawY, 0); + drawSubcolumn(canvas, column, columnValue, true); + } else + drawSubcolumn(canvas, column, columnValue, true); break; case MODE_HIGHLIGHT: highlightSubcolumn(canvas, column, columnValue, valueIndex, true); From be086dd6499ff0fa9e9dcceba1a3b10fe37dd260 Mon Sep 17 00:00:00 2001 From: Daniela Brozzoni Date: Mon, 9 Jul 2018 10:18:01 +0200 Subject: [PATCH 5/7] Add a drawable to the columns --- .../lib/hellocharts/model/SubcolumnValue.java | 19 ++++++++++++++ .../renderer/ColumnChartRenderer.java | 25 +++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/hellocharts-library/src/lecho/lib/hellocharts/model/SubcolumnValue.java b/hellocharts-library/src/lecho/lib/hellocharts/model/SubcolumnValue.java index 8b91737a..a12f6ee2 100644 --- a/hellocharts-library/src/lecho/lib/hellocharts/model/SubcolumnValue.java +++ b/hellocharts-library/src/lecho/lib/hellocharts/model/SubcolumnValue.java @@ -1,5 +1,7 @@ package lecho.lib.hellocharts.model; +import android.graphics.drawable.Drawable; + import java.util.Arrays; import lecho.lib.hellocharts.util.ChartUtils; @@ -16,6 +18,7 @@ public class SubcolumnValue { private int color = ChartUtils.DEFAULT_COLOR; private int darkenColor = ChartUtils.DEFAULT_DARKEN_COLOR; private char[] label; + private Drawable picture; public SubcolumnValue() { setValue(0); @@ -32,6 +35,13 @@ public SubcolumnValue(float value, int color) { setColor(color); } + public SubcolumnValue(float value, int color, Drawable picture) { + // point and targetPoint have to be different objects + setValue(value); + setColor(color); + setPicture(picture); + } + public SubcolumnValue(SubcolumnValue columnValue) { setValue(columnValue.value); setColor(columnValue.color); @@ -133,6 +143,15 @@ public int hashCode() { result = 31 * result + color; result = 31 * result + darkenColor; result = 31 * result + (label != null ? Arrays.hashCode(label) : 0); + result = 31 * result + (picture != null ? picture.hashCode() : 0); return result; } + + public Drawable getPicture() { + return picture; + } + + public void setPicture(Drawable picture) { + this.picture = picture; + } } diff --git a/hellocharts-library/src/lecho/lib/hellocharts/renderer/ColumnChartRenderer.java b/hellocharts-library/src/lecho/lib/hellocharts/renderer/ColumnChartRenderer.java index 3981d50c..ebbce928 100644 --- a/hellocharts-library/src/lecho/lib/hellocharts/renderer/ColumnChartRenderer.java +++ b/hellocharts-library/src/lecho/lib/hellocharts/renderer/ColumnChartRenderer.java @@ -6,7 +6,10 @@ import android.graphics.Paint; import android.graphics.Paint.Cap; import android.graphics.PointF; +import android.graphics.Rect; import android.graphics.RectF; +import android.graphics.drawable.Drawable; +import android.util.Log; import lecho.lib.hellocharts.model.Column; import lecho.lib.hellocharts.model.ColumnChartData; @@ -29,6 +32,7 @@ public class ColumnChartRenderer extends AbstractChartRenderer { private static final int MODE_DRAW = 0; private static final int MODE_CHECK_TOUCH = 1; private static final int MODE_HIGHLIGHT = 2; + private static final float PICTURE_RATIO = 0.7f; //Picture will occupy 70% of the column private ColumnChartDataProvider dataProvider; @@ -343,11 +347,32 @@ private void processColumnForStacked(Canvas canvas, Column column, float columnW private void drawSubcolumn(Canvas canvas, Column column, SubcolumnValue columnValue, boolean isStacked) { canvas.drawRect(drawRect, columnPaint); + Drawable picture = columnValue.getPicture(); + if(picture != null) { + picture.setBounds(findDrawableBounds(column)); + picture.draw(canvas); + } if (column.hasLabels()) { drawLabel(canvas, column, columnValue, isStacked, labelOffset); } } + private Rect findDrawableBounds(Column column){ + Rect r = new Rect(); + Rect drawRectI = new Rect(); + drawRect.round(drawRectI); + if(subcolumnSpacing < 0 && column.getValues().size() > 1) drawRectI.right += subcolumnSpacing; + int imageSize = (int) (drawRectI.width() * PICTURE_RATIO); + int spacing = (drawRectI.width() - imageSize)/2; + r.left = spacing + drawRectI.left; + r.top = drawRectI.bottom - spacing - imageSize; + r.bottom = drawRectI.bottom - spacing; + r.right = r.left + imageSize; + Log.d("ColumnChartRender drawR", drawRect.toString()); + Log.d("ColumnChartRender r", r.toString()); + return r; + } + private void highlightSubcolumn(Canvas canvas, Column column, SubcolumnValue columnValue, int valueIndex, boolean isStacked) { if (selectedValue.getSecondIndex() == valueIndex) { From 07c6005f894fc7775f771d4290cbbf54f4fada63 Mon Sep 17 00:00:00 2001 From: Daniela Brozzoni Date: Mon, 9 Jul 2018 10:30:13 +0200 Subject: [PATCH 6/7] Added option to set the column untouchable --- .../hellocharts/renderer/AbstractChartRenderer.java | 11 ++++++++++- .../lib/hellocharts/renderer/ColumnChartRenderer.java | 4 +--- .../lecho/lib/hellocharts/view/ColumnChartView.java | 4 ++++ 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/hellocharts-library/src/lecho/lib/hellocharts/renderer/AbstractChartRenderer.java b/hellocharts-library/src/lecho/lib/hellocharts/renderer/AbstractChartRenderer.java index dc8ddcfd..dec962e8 100644 --- a/hellocharts-library/src/lecho/lib/hellocharts/renderer/AbstractChartRenderer.java +++ b/hellocharts-library/src/lecho/lib/hellocharts/renderer/AbstractChartRenderer.java @@ -51,6 +51,7 @@ public abstract class AbstractChartRenderer implements ChartRenderer { protected int labelMargin; protected boolean isValueLabelBackgroundEnabled; protected boolean isValueLabelBackgroundAuto; + protected boolean touchable = true; public AbstractChartRenderer(Context context, Chart chart) { this.density = context.getResources().getDisplayMetrics().density; @@ -126,7 +127,7 @@ protected void drawLabelTextAndBackground(Canvas canvas, char[] labelBuffer, int @Override public boolean isTouched() { - return selectedValue.isSet(); + return selectedValue.isSet() && touchable; } @Override @@ -177,4 +178,12 @@ public void selectValue(SelectedValue selectedValue) { public SelectedValue getSelectedValue() { return selectedValue; } + + public boolean isTouchable() { + return touchable; + } + + public void setTouchable(boolean touchable) { + this.touchable = touchable; + } } diff --git a/hellocharts-library/src/lecho/lib/hellocharts/renderer/ColumnChartRenderer.java b/hellocharts-library/src/lecho/lib/hellocharts/renderer/ColumnChartRenderer.java index ebbce928..bea54af6 100644 --- a/hellocharts-library/src/lecho/lib/hellocharts/renderer/ColumnChartRenderer.java +++ b/hellocharts-library/src/lecho/lib/hellocharts/renderer/ColumnChartRenderer.java @@ -37,7 +37,7 @@ public class ColumnChartRenderer extends AbstractChartRenderer { private ColumnChartDataProvider dataProvider; /** - * Additional width for hightlighted column, used to give tauch feedback. + * Additional width for highlighted column, used to give touch feedback. */ private int touchAdditionalWidth; @@ -368,8 +368,6 @@ private Rect findDrawableBounds(Column column){ r.top = drawRectI.bottom - spacing - imageSize; r.bottom = drawRectI.bottom - spacing; r.right = r.left + imageSize; - Log.d("ColumnChartRender drawR", drawRect.toString()); - Log.d("ColumnChartRender r", r.toString()); return r; } diff --git a/hellocharts-library/src/lecho/lib/hellocharts/view/ColumnChartView.java b/hellocharts-library/src/lecho/lib/hellocharts/view/ColumnChartView.java index 440d0645..e8de7741 100644 --- a/hellocharts-library/src/lecho/lib/hellocharts/view/ColumnChartView.java +++ b/hellocharts-library/src/lecho/lib/hellocharts/view/ColumnChartView.java @@ -98,4 +98,8 @@ public void setBordersColor(int id){ ((ColumnChartRenderer) chartRenderer).setBordersColor(id); } + public void setTouchable(boolean touchable){ + ((ColumnChartRenderer) chartRenderer).setTouchable(touchable); + } + } From 7a1e7e3bfdab55f990aa925e8dabe82d561c1476 Mon Sep 17 00:00:00 2001 From: Daniela Brozzoni Date: Mon, 9 Jul 2018 10:48:21 +0200 Subject: [PATCH 7/7] Add method to resize subcolumns widht --- .../lib/hellocharts/model/SubcolumnValue.java | 19 +++++++++++++++++++ .../renderer/ColumnChartRenderer.java | 3 ++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/hellocharts-library/src/lecho/lib/hellocharts/model/SubcolumnValue.java b/hellocharts-library/src/lecho/lib/hellocharts/model/SubcolumnValue.java index a12f6ee2..5158c3ef 100644 --- a/hellocharts-library/src/lecho/lib/hellocharts/model/SubcolumnValue.java +++ b/hellocharts-library/src/lecho/lib/hellocharts/model/SubcolumnValue.java @@ -19,6 +19,7 @@ public class SubcolumnValue { private int darkenColor = ChartUtils.DEFAULT_DARKEN_COLOR; private char[] label; private Drawable picture; + private float subcolumnWidhtRatio = 1; // 1 means that the subcolumn widht equals the other, 0.5 means that the widht is the half of the others public SubcolumnValue() { setValue(0); @@ -42,9 +43,19 @@ public SubcolumnValue(float value, int color, Drawable picture) { setPicture(picture); } + public SubcolumnValue(float value, int color, Drawable picture, float subcolumnWidhtRatio) { + // point and targetPoint have to be different objects + setValue(value); + setColor(color); + setPicture(picture); + setSubcolumnWidhtRatio(subcolumnWidhtRatio); + } + public SubcolumnValue(SubcolumnValue columnValue) { setValue(columnValue.value); setColor(columnValue.color); + setPicture(columnValue.picture); + setSubcolumnWidhtRatio(subcolumnWidhtRatio); this.label = columnValue.label; } @@ -154,4 +165,12 @@ public Drawable getPicture() { public void setPicture(Drawable picture) { this.picture = picture; } + + public float getSubcolumnWidhtRatio() { + return subcolumnWidhtRatio; + } + + public void setSubcolumnWidhtRatio(float subcolumnWidhtRatio) { + this.subcolumnWidhtRatio = subcolumnWidhtRatio; + } } diff --git a/hellocharts-library/src/lecho/lib/hellocharts/renderer/ColumnChartRenderer.java b/hellocharts-library/src/lecho/lib/hellocharts/renderer/ColumnChartRenderer.java index bea54af6..a1485e28 100644 --- a/hellocharts-library/src/lecho/lib/hellocharts/renderer/ColumnChartRenderer.java +++ b/hellocharts-library/src/lecho/lib/hellocharts/renderer/ColumnChartRenderer.java @@ -9,7 +9,6 @@ import android.graphics.Rect; import android.graphics.RectF; import android.graphics.drawable.Drawable; -import android.util.Log; import lecho.lib.hellocharts.model.Column; import lecho.lib.hellocharts.model.ColumnChartData; @@ -231,6 +230,7 @@ private void processColumnForSubcolumns(Canvas canvas, Column column, float colu float subcolumnRawX = rawX - halfColumnWidth; int valueIndex = 0; for (SubcolumnValue columnValue : column.getValues()) { + subcolumnWidth *= columnValue.getSubcolumnWidhtRatio(); columnPaint.setColor(columnValue.getColor()); if (subcolumnRawX > rawX + halfColumnWidth) { break; @@ -262,6 +262,7 @@ private void processColumnForSubcolumns(Canvas canvas, Column column, float colu } subcolumnRawX += subcolumnWidth + subcolumnSpacing; ++valueIndex; + subcolumnWidth /= columnValue.getSubcolumnWidhtRatio(); } }