diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Legend.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Legend.java index bdc73f0ae14d01a1fcf1570d289795b4009fd8b2..68fa18a995dbabcb27dd21ecfe0b8f287ee8162c 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Legend.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Legend.java @@ -97,7 +97,7 @@ public class Legend implements ChartPart { // Draw Legend Box int legendBoxWidth = legendContentWidth + 2 * chart.getStyleManager().getLegendPadding(); int legendBoxHeight = legendContentHeight + 2 * chart.getStyleManager().getLegendPadding(); - return new int[] { legendBoxWidth, legendBoxHeight, legendTextContentMaxHeight }; + return new int[] { legendBoxWidth, legendBoxHeight, maxContentHeight }; } else { return new int[] { 0, 0, 0 }; } @@ -115,7 +115,7 @@ public class Legend implements ChartPart { int legendBoxWidth = getSizeHint()[0]; int legendBoxHeight = getSizeHint()[1]; - int legendTextContentMaxHeight = getSizeHint()[2]; + int maxContentHeight = getSizeHint()[2]; // legend draw position int xOffset = 0; @@ -162,12 +162,12 @@ public class Legend implements ChartPart { if (series.getStroke() != null) { g.setColor(series.getStrokeColor()); g.setStroke(series.getStroke()); - g.drawLine(startx, starty - Marker.Y_OFFSET, (int) (startx + Marker.SIZE * 3.0), starty - Marker.Y_OFFSET); + g.drawLine(startx, starty + (int) (maxContentHeight / 2.0), (int) (startx + Marker.SIZE * 3.0), starty + (int) (maxContentHeight / 2.0)); } // paint marker if (series.getMarker() != null) { g.setColor(series.getMarkerColor()); - series.getMarker().paint(g, (int) (startx + (Marker.SIZE * 1.5)), starty - Marker.Y_OFFSET); + series.getMarker().paint(g, (int) (startx + (Marker.SIZE * 1.5)), starty + (int) (maxContentHeight / 2.0)); } } else { // paint box @@ -176,7 +176,6 @@ public class Legend implements ChartPart { g.fillPolygon(new int[] { startx, startx + BOX_SIZE, startx + BOX_SIZE, startx }, new int[] { starty, starty, starty + BOX_SIZE, starty + BOX_SIZE }, 4); g.setStroke(series.getStroke()); g.drawPolygon(new int[] { startx, startx + BOX_SIZE, startx + BOX_SIZE, startx }, new int[] { starty, starty, starty + BOX_SIZE, starty + BOX_SIZE }, 4); - } } @@ -184,13 +183,12 @@ public class Legend implements ChartPart { g.setColor(chart.getStyleManager().getChartFontColor()); TextLayout layout = new TextLayout(series.getName(), chart.getStyleManager().getLegendFont(), new FontRenderContext(null, true, false)); if (getChart().getStyleManager().getChartType() != ChartType.Bar) { - layout.draw(g, (float) (startx + Marker.SIZE + (Marker.SIZE * 1.5) + chart.getStyleManager().getLegendPadding()), - (int) (starty + (Marker.SIZE + chart.getStyleManager().getLegendPadding()) / 2.0)); - starty = starty + legendTextContentMaxHeight + chart.getStyleManager().getLegendPadding(); + layout.draw(g, (float) (startx + Marker.SIZE + (Marker.SIZE * 1.5) + chart.getStyleManager().getLegendPadding()), starty + + (int) ((maxContentHeight + layout.getPixelBounds(null, 0, 0).getHeight()) / 2.0)); } else { - layout.draw(g, startx + BOX_SIZE + chart.getStyleManager().getLegendPadding(), (int) (starty + (BOX_SIZE + chart.getStyleManager().getLegendPadding()) / 2.0)); - starty = starty + legendTextContentMaxHeight + chart.getStyleManager().getLegendPadding(); + layout.draw(g, startx + BOX_SIZE + chart.getStyleManager().getLegendPadding(), starty + (int) ((maxContentHeight + layout.getPixelBounds(null, 0, 0).getHeight()) / 2.0)); } + starty = starty + maxContentHeight + chart.getStyleManager().getLegendPadding(); } // bounds