aboutsummaryrefslogtreecommitdiff
path: root/MPChartLib/src/main/java/com
diff options
context:
space:
mode:
authorDaniel Cohen Gindi <danielgindi@gmail.com>2020-01-22 12:15:02 +0200
committerDaniel Cohen Gindi <danielgindi@gmail.com>2020-01-22 12:15:02 +0200
commit4549ae17b74967671ee218daf4a271c0283a98c1 (patch)
tree3e91177e0b995750e89ef4aa70d44dd4c2068acd /MPChartLib/src/main/java/com
parent912427e54378602f44db00b4579dd2db50a23404 (diff)
downloadMPAndroidChart-4549ae17b74967671ee218daf4a271c0283a98c1.tar.gz
Select correct axis for legend distance calculation in horz bar chart
https://github.com/danielgindi/Charts/pull/2214
Diffstat (limited to 'MPChartLib/src/main/java/com')
-rw-r--r--MPChartLib/src/main/java/com/github/mikephil/charting/charts/BarLineChartBase.java124
-rw-r--r--MPChartLib/src/main/java/com/github/mikephil/charting/charts/HorizontalBarChart.java78
2 files changed, 142 insertions, 60 deletions
diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/charts/BarLineChartBase.java b/MPChartLib/src/main/java/com/github/mikephil/charting/charts/BarLineChartBase.java
index 71f8a2d8..c7a59373 100644
--- a/MPChartLib/src/main/java/com/github/mikephil/charting/charts/BarLineChartBase.java
+++ b/MPChartLib/src/main/java/com/github/mikephil/charting/charts/BarLineChartBase.java
@@ -394,66 +394,70 @@ public abstract class BarLineChartBase<T extends BarLineScatterCandleBubbleData<
offsets.top = 0.f;
offsets.bottom = 0.f;
- // setup offsets for legend
- if (mLegend != null && mLegend.isEnabled() && !mLegend.isDrawInsideEnabled()) {
- switch (mLegend.getOrientation()) {
- case VERTICAL:
-
- switch (mLegend.getHorizontalAlignment()) {
- case LEFT:
- offsets.left += Math.min(mLegend.mNeededWidth,
- mViewPortHandler.getChartWidth() * mLegend.getMaxSizePercent())
- + mLegend.getXOffset();
- break;
-
- case RIGHT:
- offsets.right += Math.min(mLegend.mNeededWidth,
- mViewPortHandler.getChartWidth() * mLegend.getMaxSizePercent())
- + mLegend.getXOffset();
- break;
-
- case CENTER:
-
- switch (mLegend.getVerticalAlignment()) {
- case TOP:
- offsets.top += Math.min(mLegend.mNeededHeight,
- mViewPortHandler.getChartHeight() * mLegend.getMaxSizePercent())
- + mLegend.getYOffset();
- break;
-
- case BOTTOM:
- offsets.bottom += Math.min(mLegend.mNeededHeight,
- mViewPortHandler.getChartHeight() * mLegend.getMaxSizePercent())
- + mLegend.getYOffset();
- break;
-
- default:
- break;
- }
- }
-
- break;
-
- case HORIZONTAL:
-
- switch (mLegend.getVerticalAlignment()) {
- case TOP:
- offsets.top += Math.min(mLegend.mNeededHeight,
- mViewPortHandler.getChartHeight() * mLegend.getMaxSizePercent())
- + mLegend.getYOffset();
- break;
-
- case BOTTOM:
- offsets.bottom += Math.min(mLegend.mNeededHeight,
- mViewPortHandler.getChartHeight() * mLegend.getMaxSizePercent())
- + mLegend.getYOffset();
- break;
-
- default:
- break;
- }
- break;
- }
+ if (mLegend == null || !mLegend.isEnabled() || mLegend.isDrawInsideEnabled())
+ return;
+
+ switch (mLegend.getOrientation()) {
+ case VERTICAL:
+
+ switch (mLegend.getHorizontalAlignment()) {
+ case LEFT:
+ offsets.left += Math.min(mLegend.mNeededWidth,
+ mViewPortHandler.getChartWidth() * mLegend.getMaxSizePercent())
+ + mLegend.getXOffset();
+ break;
+
+ case RIGHT:
+ offsets.right += Math.min(mLegend.mNeededWidth,
+ mViewPortHandler.getChartWidth() * mLegend.getMaxSizePercent())
+ + mLegend.getXOffset();
+ break;
+
+ case CENTER:
+
+ switch (mLegend.getVerticalAlignment()) {
+ case TOP:
+ offsets.top += Math.min(mLegend.mNeededHeight,
+ mViewPortHandler.getChartHeight() * mLegend.getMaxSizePercent())
+ + mLegend.getYOffset();
+ break;
+
+ case BOTTOM:
+ offsets.bottom += Math.min(mLegend.mNeededHeight,
+ mViewPortHandler.getChartHeight() * mLegend.getMaxSizePercent())
+ + mLegend.getYOffset();
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ break;
+
+ case HORIZONTAL:
+
+ switch (mLegend.getVerticalAlignment()) {
+ case TOP:
+ offsets.top += Math.min(mLegend.mNeededHeight,
+ mViewPortHandler.getChartHeight() * mLegend.getMaxSizePercent())
+ + mLegend.getYOffset();
+
+
+ break;
+
+ case BOTTOM:
+ offsets.bottom += Math.min(mLegend.mNeededHeight,
+ mViewPortHandler.getChartHeight() * mLegend.getMaxSizePercent())
+ + mLegend.getYOffset();
+
+
+ break;
+
+ default:
+ break;
+ }
+ break;
}
}
diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/charts/HorizontalBarChart.java b/MPChartLib/src/main/java/com/github/mikephil/charting/charts/HorizontalBarChart.java
index e4ec309d..9aac1ce9 100644
--- a/MPChartLib/src/main/java/com/github/mikephil/charting/charts/HorizontalBarChart.java
+++ b/MPChartLib/src/main/java/com/github/mikephil/charting/charts/HorizontalBarChart.java
@@ -60,6 +60,84 @@ public class HorizontalBarChart extends BarChart {
private RectF mOffsetsBuffer = new RectF();
+ protected void calculateLegendOffsets(RectF offsets) {
+
+ offsets.left = 0.f;
+ offsets.right = 0.f;
+ offsets.top = 0.f;
+ offsets.bottom = 0.f;
+
+ if (mLegend == null || !mLegend.isEnabled() || mLegend.isDrawInsideEnabled())
+ return;
+
+ switch (mLegend.getOrientation()) {
+ case VERTICAL:
+
+ switch (mLegend.getHorizontalAlignment()) {
+ case LEFT:
+ offsets.left += Math.min(mLegend.mNeededWidth,
+ mViewPortHandler.getChartWidth() * mLegend.getMaxSizePercent())
+ + mLegend.getXOffset();
+ break;
+
+ case RIGHT:
+ offsets.right += Math.min(mLegend.mNeededWidth,
+ mViewPortHandler.getChartWidth() * mLegend.getMaxSizePercent())
+ + mLegend.getXOffset();
+ break;
+
+ case CENTER:
+
+ switch (mLegend.getVerticalAlignment()) {
+ case TOP:
+ offsets.top += Math.min(mLegend.mNeededHeight,
+ mViewPortHandler.getChartHeight() * mLegend.getMaxSizePercent())
+ + mLegend.getYOffset();
+ break;
+
+ case BOTTOM:
+ offsets.bottom += Math.min(mLegend.mNeededHeight,
+ mViewPortHandler.getChartHeight() * mLegend.getMaxSizePercent())
+ + mLegend.getYOffset();
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ break;
+
+ case HORIZONTAL:
+
+ switch (mLegend.getVerticalAlignment()) {
+ case TOP:
+ offsets.top += Math.min(mLegend.mNeededHeight,
+ mViewPortHandler.getChartHeight() * mLegend.getMaxSizePercent())
+ + mLegend.getYOffset();
+
+ if (mAxisLeft.isEnabled() && mAxisLeft.isDrawLabelsEnabled())
+ offsets.top += mAxisLeft.getRequiredHeightSpace(
+ mAxisRendererLeft.getPaintAxisLabels());
+ break;
+
+ case BOTTOM:
+ offsets.bottom += Math.min(mLegend.mNeededHeight,
+ mViewPortHandler.getChartHeight() * mLegend.getMaxSizePercent())
+ + mLegend.getYOffset();
+
+ if (mAxisRight.isEnabled() && mAxisRight.isDrawLabelsEnabled())
+ offsets.bottom += mAxisRight.getRequiredHeightSpace(
+ mAxisRendererRight.getPaintAxisLabels());
+ break;
+
+ default:
+ break;
+ }
+ break;
+ }
+ }
+
@Override
public void calculateOffsets() {