Skip to content

Commit 684c92c

Browse files
Fixing YAxis format on zoom
1 parent 3eddd6c commit 684c92c

File tree

4 files changed

+11
-9
lines changed

4 files changed

+11
-9
lines changed

Sources/Microcharts/Charts/AxisBasedChart.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -198,8 +198,9 @@ public override void DrawContent(SKCanvas canvas, int width, int height)
198198
float minValue = InternalMinValue.HasValue ? InternalMinValue.Value : MinValue;
199199

200200
//This function might change the min/max value
201+
string yAxisFormat = XForm.Scale == 1.0f ? "G" : "F1";
201202
int yMaxTicks = (int)(YAxisMaxTicks * XForm.Scale);
202-
var yAxisSize = MeasureHelper.CalculateYAxis(ShowYAxisText, ShowYAxisLines, entries, yMaxTicks, YAxisTextPaint, YAxisPosition, width, fixedRange, ref maxValue, ref minValue, out float yAxisXShift, out List<float> yAxisIntervalLabels);
203+
var yAxisSize = MeasureHelper.CalculateYAxis(ShowYAxisText, ShowYAxisLines, yAxisFormat, yMaxTicks, YAxisTextPaint, YAxisPosition, width, fixedRange, ref maxValue, ref minValue, out float yAxisXShift, out List<float> yAxisIntervalLabels);
203204
width = (int)yAxisSize.Width;
204205

205206
float valRange = maxValue - minValue;
@@ -250,7 +251,7 @@ public override void DrawContent(SKCanvas canvas, int width, int height)
250251

251252
canvas.Save();
252253
if(EnableZoom) canvas.ClipRect(yAxisRect);
253-
DrawHelper.DrawYAxis(ShowYAxisText, ShowYAxisLines, YAxisPosition, YAxisTextPaint, YAxisLinesPaint, XForm.Offset, XForm.Scale, Margin, AnimationProgress, maxValue, valRange, canvas, width, yAxisXShift, yAxisIntervalLabels, headerHeight, itemSize, origin);
254+
DrawHelper.DrawYAxis(ShowYAxisText, ShowYAxisLines, yAxisFormat, YAxisPosition, YAxisTextPaint, YAxisLinesPaint, XForm.Offset, XForm.Scale, Margin, AnimationProgress, maxValue, valRange, canvas, width, yAxisXShift, yAxisIntervalLabels, headerHeight, itemSize, origin);
254255
canvas.Restore();
255256

256257

Sources/Microcharts/Charts/Legacy/LegacyPointChart.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -130,8 +130,9 @@ public override void DrawContent(SKCanvas canvas, int width, int height)
130130
{
131131
float maxValue = MaxValue;
132132
float minValue = MinValue;
133-
var yAxisRect = MeasureHelper.CalculateYAxis(ShowYAxisText, ShowYAxisLines, Entries, YAxisMaxTicks, YAxisTextPaint, YAxisPosition, width, false, ref maxValue, ref minValue, out float yAxisXShift, out List<float> yAxisIntervalLabels);
134-
width = (int)yAxisRect.Width;
133+
string yAxisFormat = "G";
134+
var yAxisSize = MeasureHelper.CalculateYAxis(ShowYAxisText, ShowYAxisLines, yAxisFormat, YAxisMaxTicks, YAxisTextPaint, YAxisPosition, width, false, ref maxValue, ref minValue, out float yAxisXShift, out List<float> yAxisIntervalLabels);
135+
width = (int)yAxisSize.Width;
135136

136137
var labels = Entries.Select(x => x.Label).ToArray();
137138
var labelSizes = MeasureHelper.MeasureTexts(labels, LabelTextSize);
@@ -144,7 +145,7 @@ public override void DrawContent(SKCanvas canvas, int width, int height)
144145
var itemSize = CalculateItemSize(width, height, footerHeight, headerHeight);
145146
var origin = CalculateYOrigin(itemSize.Height, headerHeight);
146147
var points = CalculatePoints(itemSize, origin, headerHeight, yAxisXShift);
147-
DrawHelper.DrawYAxis(ShowYAxisText, ShowYAxisLines, YAxisPosition, YAxisTextPaint, YAxisLinesPaint, new SKPoint(0,0), 1.0f, Margin, AnimationProgress, MaxValue, ValueRange, canvas, width, yAxisXShift, yAxisIntervalLabels, headerHeight, itemSize, origin);
148+
DrawHelper.DrawYAxis(ShowYAxisText, ShowYAxisLines, yAxisFormat, YAxisPosition, YAxisTextPaint, YAxisLinesPaint, new SKPoint(0,0), 1.0f, Margin, AnimationProgress, MaxValue, ValueRange, canvas, width, yAxisXShift, yAxisIntervalLabels, headerHeight, itemSize, origin);
148149

149150
DrawAreas(canvas, points, itemSize, origin, headerHeight);
150151
DrawPoints(canvas, points);

Sources/Microcharts/Helpers/DrawHelper.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,15 +92,15 @@ internal static void DrawLabel(SKCanvas canvas, Orientation orientation, YPositi
9292
}
9393
}
9494

95-
internal static void DrawYAxis(bool showYAxisText, bool showYAxisLines, Position yAxisPosition, SKPaint yAxisTextPaint, SKPaint yAxisLinesPaint, SKPoint offset, float scale, float margin, float animationProgress, float maxValue, float valueRange, SKCanvas canvas, int width, float yAxisXShift, List<float> yAxisIntervalLabels, float headerHeight, SKSize itemSize, float origin)
95+
internal static void DrawYAxis(bool showYAxisText, bool showYAxisLines, string yAxisFormat, Position yAxisPosition, SKPaint yAxisTextPaint, SKPaint yAxisLinesPaint, SKPoint offset, float scale, float margin, float animationProgress, float maxValue, float valueRange, SKCanvas canvas, int width, float yAxisXShift, List<float> yAxisIntervalLabels, float headerHeight, SKSize itemSize, float origin)
9696
{
9797
if (showYAxisText || showYAxisLines)
9898
{
9999
int cnt = 0;
100100
var intervals = yAxisIntervalLabels
101101
.Select(t => new ValueTuple<string, SKPoint>
102102
(
103-
t.ToString(),
103+
t.ToString(yAxisFormat),
104104
new SKPoint(yAxisPosition == Position.Left ? yAxisXShift : width, offset.Y+(scale * MeasureHelper.CalculatePoint(margin, animationProgress, maxValue, valueRange, t, cnt++, itemSize, origin, headerHeight).Y))
105105
))
106106
.ToList();

Sources/Microcharts/Helpers/MeasureHelper.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ internal static float CalculateFooterHeaderHeight(float margin, float textSize,
6868
return result;
6969
}
7070

71-
internal static SKSize CalculateYAxis(bool showYAxisText, bool showYAxisLines, IEnumerable<ChartEntry> entries, int yAxisMaxTicks, SKPaint yAxisTextPaint, Position yAxisPosition, int width, bool fixedRange, ref float maxValue, ref float minValue, out float yAxisXShift, out List<float> yAxisIntervalLabels)
71+
internal static SKSize CalculateYAxis(bool showYAxisText, bool showYAxisLines, string yAxisFormat, int yAxisMaxTicks, SKPaint yAxisTextPaint, Position yAxisPosition, int width, bool fixedRange, ref float maxValue, ref float minValue, out float yAxisXShift, out List<float> yAxisIntervalLabels)
7272
{
7373
float height = 0;
7474
yAxisXShift = 0.0f;
@@ -106,7 +106,7 @@ internal static SKSize CalculateYAxis(bool showYAxisText, bool showYAxisLines, I
106106
.Select(i => (float)(niceMax - (i * tickSpacing)))
107107
.ToList();
108108

109-
var longestYAxisLabel = yAxisIntervalLabels.Aggregate(string.Empty, (max, cur) => max.Length > cur.ToString().Length ? max : cur.ToString());
109+
var longestYAxisLabel = yAxisIntervalLabels.Aggregate(string.Empty, (max, cur) => max.Length > cur.ToString(yAxisFormat).Length ? max : cur.ToString(yAxisFormat));
110110
var longestYAxisLabelRect = MeasureHelper.MeasureTexts(new string[] { longestYAxisLabel }, yAxisTextPaint).FirstOrDefault();
111111

112112
yAxisWidth = (int)(width - longestYAxisLabelRect.Width);

0 commit comments

Comments
 (0)