fix: introduce individual spacing constant for legend

Legends need to use their individual text spacing - not use the Tick spacing. For vertical lists it looks a lot better to use a spacing of 10 instead of 20. Prior to this commit this couldn't be set in the defaults without also manipulating the axis tick spacing.
Using their own constant, this can be now easily configured.
This commit is contained in:
Rico 2022-02-08 04:02:16 +01:00
parent 1288c8d48d
commit 6eff5912ca
No known key found for this signature in database
GPG key ID: 91F477359C5B7AD3
2 changed files with 12 additions and 7 deletions

View file

@ -58,6 +58,11 @@ const (
// DefaultMinimumTickVerticalSpacing is the minimum distance between vertical ticks. // DefaultMinimumTickVerticalSpacing is the minimum distance between vertical ticks.
DefaultMinimumTickVerticalSpacing = 20 DefaultMinimumTickVerticalSpacing = 20
// DefaultLegendHorizontalSpacing is the minimum distance between two horizontal elements in the legend.
DefaultLegendHorizontalSpacing = 20
// DefaultLegendVerticalSpacing is the minimum distance between two vertical elements in the legend.
DefaultLegendVerticalSpacing = 10
// DefaultDateFormat is the default date format. // DefaultDateFormat is the default date format.
DefaultDateFormat = "2006-01-02" DefaultDateFormat = "2006-01-02"
// DefaultDateHourFormat is the date format for hour timestamp formats. // DefaultDateHourFormat is the date format for hour timestamp formats.

View file

@ -64,7 +64,7 @@ func Legend(c *Chart, userDefaults ...Style) Renderable {
if len(labels[x]) > 0 { if len(labels[x]) > 0 {
tb := r.MeasureText(labels[x]) tb := r.MeasureText(labels[x])
if labelCount > 0 { if labelCount > 0 {
legendContent.Bottom += DefaultMinimumTickVerticalSpacing legendContent.Bottom += DefaultLegendVerticalSpacing
} }
legendContent.Bottom += tb.Height() legendContent.Bottom += tb.Height()
right := legendContent.Left + tb.Width() + lineTextGap + lineLengthMinimum right := legendContent.Left + tb.Width() + lineTextGap + lineLengthMinimum
@ -89,7 +89,7 @@ func Legend(c *Chart, userDefaults ...Style) Renderable {
label = labels[x] label = labels[x]
if len(label) > 0 { if len(label) > 0 {
if legendCount > 0 { if legendCount > 0 {
ycursor += DefaultMinimumTickVerticalSpacing ycursor += DefaultLegendVerticalSpacing
} }
tb := r.MeasureText(label) tb := r.MeasureText(label)
@ -179,7 +179,7 @@ func LegendLineLeft(c *Chart, userDefaults ...Style) Renderable {
if len(labels[x]) > 0 { if len(labels[x]) > 0 {
tb := r.MeasureText(labels[x]) tb := r.MeasureText(labels[x])
if labelCount > 0 { if labelCount > 0 {
legendContent.Bottom += DefaultMinimumTickVerticalSpacing legendContent.Bottom += DefaultLegendVerticalSpacing
} }
legendContent.Bottom += tb.Height() legendContent.Bottom += tb.Height()
right := legendContent.Left + tb.Width() + lineTextGap + lineLengthMinimum right := legendContent.Left + tb.Width() + lineTextGap + lineLengthMinimum
@ -204,7 +204,7 @@ func LegendLineLeft(c *Chart, userDefaults ...Style) Renderable {
label = labels[x] label = labels[x]
if len(label) > 0 { if len(label) > 0 {
if legendCount > 0 { if legendCount > 0 {
ycursor += DefaultMinimumTickVerticalSpacing ycursor += DefaultLegendVerticalSpacing
} }
// Calculate text dimensions // Calculate text dimensions
@ -329,7 +329,7 @@ func LegendThin(c *Chart, userDefaults ...Style) Renderable {
r.LineTo(lx+lineLengthMinimum, ly) r.LineTo(lx+lineLengthMinimum, ly)
r.Stroke() r.Stroke()
tx += textBox.Width() + DefaultMinimumTickHorizontalSpacing + lineTextGap + lineLengthMinimum tx += textBox.Width() + DefaultLegendHorizontalSpacing + lineTextGap + lineLengthMinimum
} }
} }
} }
@ -395,7 +395,7 @@ func LegendLeft(c *Chart, userDefaults ...Style) Renderable {
if len(labels[x]) > 0 { if len(labels[x]) > 0 {
tb := r.MeasureText(labels[x]) tb := r.MeasureText(labels[x])
if labelCount > 0 { if labelCount > 0 {
legendContent.Bottom += DefaultMinimumTickVerticalSpacing legendContent.Bottom += DefaultLegendVerticalSpacing
} }
legendContent.Bottom += tb.Height() legendContent.Bottom += tb.Height()
right := legendContent.Left + tb.Width() + lineTextGap + lineLengthMinimum right := legendContent.Left + tb.Width() + lineTextGap + lineLengthMinimum
@ -420,7 +420,7 @@ func LegendLeft(c *Chart, userDefaults ...Style) Renderable {
label = labels[x] label = labels[x]
if len(label) > 0 { if len(label) > 0 {
if legendCount > 0 { if legendCount > 0 {
ycursor += DefaultMinimumTickVerticalSpacing ycursor += DefaultLegendVerticalSpacing
} }
tb := r.MeasureText(label) tb := r.MeasureText(label)