From: <mu...@us...> - 2016-01-16 17:36:54
|
Revision: 3331 http://sourceforge.net/p/jfreechart/code/3331 Author: mungady Date: 2016-01-16 17:36:52 +0000 (Sat, 16 Jan 2016) Log Message: ----------- Fill background for marker labels. Modified Paths: -------------- branches/jfreechart-1.0.x-branch/source/org/jfree/chart/renderer/category/AbstractCategoryItemRenderer.java Modified: branches/jfreechart-1.0.x-branch/source/org/jfree/chart/renderer/category/AbstractCategoryItemRenderer.java =================================================================== --- branches/jfreechart-1.0.x-branch/source/org/jfree/chart/renderer/category/AbstractCategoryItemRenderer.java 2015-11-24 17:17:36 UTC (rev 3330) +++ branches/jfreechart-1.0.x-branch/source/org/jfree/chart/renderer/category/AbstractCategoryItemRenderer.java 2016-01-16 17:36:52 UTC (rev 3331) @@ -2,7 +2,7 @@ * JFreeChart : a free chart library for the Java(tm) platform * =========================================================== * - * (C) Copyright 2000-2014, by Object Refinery Limited and Contributors. + * (C) Copyright 2000-2016, by Object Refinery Limited and Contributors. * * Project Info: http://www.jfree.org/jfreechart/index.html * @@ -27,7 +27,7 @@ * --------------------------------- * AbstractCategoryItemRenderer.java * --------------------------------- - * (C) Copyright 2002-2014, by Object Refinery Limited. + * (C) Copyright 2002-2016, by Object Refinery Limited. * * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): Richard Atkinson; @@ -253,10 +253,10 @@ /** * Returns the plot that the renderer has been assigned to (where - * <code>null</code> indicates that the renderer is not currently assigned + * {@code null} indicates that the renderer is not currently assigned * to a plot). * - * @return The plot (possibly <code>null</code>). + * @return The plot (possibly {@code null}). * * @see #setPlot(CategoryPlot) */ @@ -270,7 +270,7 @@ * usually called by the {@link CategoryPlot}, in normal usage you * shouldn't need to call this method directly. * - * @param plot the plot (<code>null</code> not permitted). + * @param plot the plot ({@code null} not permitted). * * @see #getPlot() */ @@ -291,7 +291,7 @@ * @param row the row index (zero based). * @param column the column index (zero based). * - * @return The generator (possibly <code>null</code>). + * @return The generator (possibly {@code null}). */ @Override public CategoryItemLabelGenerator getItemLabelGenerator(int row, @@ -304,7 +304,7 @@ * * @param series the series index (zero based). * - * @return The generator (possibly <code>null</code>). + * @return The generator (possibly {@code null}). * * @see #setSeriesItemLabelGenerator(int, CategoryItemLabelGenerator) */ @@ -330,7 +330,7 @@ * {@link RendererChangeEvent} to all registered listeners. * * @param series the series index (zero based). - * @param generator the generator (<code>null</code> permitted). + * @param generator the generator ({@code null} permitted). * * @see #getSeriesItemLabelGenerator(int) */ @@ -344,7 +344,7 @@ /** * Returns the base item label generator. * - * @return The generator (possibly <code>null</code>). + * @return The generator (possibly {@code null}). * * @see #setBaseItemLabelGenerator(CategoryItemLabelGenerator) */ @@ -357,7 +357,7 @@ * Sets the base item label generator and sends a * {@link RendererChangeEvent} to all registered listeners. * - * @param generator the generator (<code>null</code> permitted). + * @param generator the generator ({@code null} permitted). * * @see #getBaseItemLabelGenerator() */ @@ -380,7 +380,7 @@ * @param row the row index (zero-based). * @param column the column index (zero-based). * - * @return The generator (possibly <code>null</code>). + * @return The generator (possibly {@code null}). */ @Override public CategoryToolTipGenerator getToolTipGenerator(int row, int column) { @@ -404,7 +404,7 @@ * * @param series the series index (zero-based). * - * @return The tool tip generator (possibly <code>null</code>). + * @return The tool tip generator (possibly {@code null}). * * @see #setSeriesToolTipGenerator(int, CategoryToolTipGenerator) */ @@ -418,7 +418,7 @@ * {@link RendererChangeEvent} to all registered listeners. * * @param series the series index (zero-based). - * @param generator the generator (<code>null</code> permitted). + * @param generator the generator ({@code null} permitted). * * @see #getSeriesToolTipGenerator(int) */ @@ -432,7 +432,7 @@ /** * Returns the base tool tip generator (the "layer 2" generator). * - * @return The tool tip generator (possibly <code>null</code>). + * @return The tool tip generator (possibly {@code null}). * * @see #setBaseToolTipGenerator(CategoryToolTipGenerator) */ @@ -445,7 +445,7 @@ * Sets the base tool tip generator and sends a {@link RendererChangeEvent} * to all registered listeners. * - * @param generator the generator (<code>null</code> permitted). + * @param generator the generator ({@code null} permitted). * * @see #getBaseToolTipGenerator() */ @@ -527,7 +527,7 @@ * Sets the base item URL generator and sends a * {@link RendererChangeEvent} to all registered listeners. * - * @param generator the item URL generator (<code>null</code> permitted). + * @param generator the item URL generator ({@code null} permitted). * * @see #getBaseItemURLGenerator() */ @@ -563,9 +563,9 @@ * PlotRenderingInfo)} method. Subclasses can override this method if * they need to use a subclass of {@link CategoryItemRendererState}. * - * @param info collects plot rendering info (<code>null</code> permitted). + * @param info collects plot rendering info ({@code null} permitted). * - * @return The new state instance (never <code>null</code>). + * @return The new state instance (never {@code null}). * * @since 1.0.5 */ @@ -584,7 +584,7 @@ * @param plot the plot. * @param rendererIndex the renderer index. * @param info an object for returning information about the structure of - * the plot (<code>null</code> permitted). + * the plot ({@code null} permitted). * * @return The renderer state. */ @@ -641,10 +641,10 @@ * Returns the range of values the renderer requires to display all the * items from the specified dataset. * - * @param dataset the dataset (<code>null</code> permitted). + * @param dataset the dataset ({@code null} permitted). * - * @return The range (or <code>null</code> if the dataset is - * <code>null</code> or empty). + * @return The range (or {@code null} if the dataset is + * {@code null} or empty). */ @Override public Range findRangeBounds(CategoryDataset dataset) { @@ -655,10 +655,10 @@ * Returns the range of values the renderer requires to display all the * items from the specified dataset. * - * @param dataset the dataset (<code>null</code> permitted). + * @param dataset the dataset ({@code null} permitted). * @param includeInterval include the y-interval if the dataset has one. * - * @return The range (<code>null</code> if the dataset is <code>null</code> + * @return The range ({@code null} if the dataset is {@code null} * or empty). * * @since 1.0.13 @@ -841,8 +841,8 @@ * @param dataArea the area for plotting data (not yet adjusted for any 3D * effect). * @param value the value at which the grid line should be drawn. - * @param paint the paint (<code>null</code> not permitted). - * @param stroke the stroke (<code>null</code> not permitted). + * @param paint the paint ({@code null} not permitted). + * @param stroke the stroke ({@code null} not permitted). * * @see #drawRangeGridline * @@ -881,11 +881,11 @@ /** * Draws a marker for the domain axis. * - * @param g2 the graphics device (not <code>null</code>). - * @param plot the plot (not <code>null</code>). - * @param axis the range axis (not <code>null</code>). - * @param marker the marker to be drawn (not <code>null</code>). - * @param dataArea the area inside the axes (not <code>null</code>). + * @param g2 the graphics device (not {@code null}). + * @param plot the plot (not {@code null}). + * @param axis the range axis (not {@code null}). + * @param marker the marker to be drawn (not {@code null}). + * @param dataArea the area inside the axes (not {@code null}). * * @see #drawRangeMarker(Graphics2D, CategoryPlot, ValueAxis, Marker, * Rectangle2D) @@ -967,11 +967,11 @@ /** * Draws a marker for the range axis. * - * @param g2 the graphics device (not <code>null</code>). - * @param plot the plot (not <code>null</code>). - * @param axis the range axis (not <code>null</code>). - * @param marker the marker to be drawn (not <code>null</code>). - * @param dataArea the area inside the axes (not <code>null</code>). + * @param g2 the graphics device (not {@code null}). + * @param plot the plot (not {@code null}). + * @param axis the range axis (not {@code null}). + * @param marker the marker to be drawn (not {@code null}). + * @param dataArea the area inside the axes (not {@code null}). * * @see #drawDomainMarker(Graphics2D, CategoryPlot, CategoryAxis, * CategoryMarker, Rectangle2D) @@ -1101,8 +1101,7 @@ line.setLine(x0, end2d, x1, end2d); g2.draw(line); } - } - else { // PlotOrientation.HORIZONTAL + } else { // PlotOrientation.HORIZONTAL Line2D line = new Line2D.Double(); double y0 = dataArea.getMinY(); double y1 = dataArea.getMaxY(); @@ -1124,13 +1123,18 @@ if (label != null) { Font labelFont = marker.getLabelFont(); g2.setFont(labelFont); - g2.setPaint(marker.getLabelPaint()); - Point2D coordinates = calculateRangeMarkerTextAnchorPoint( + Point2D coords = calculateRangeMarkerTextAnchorPoint( g2, orientation, dataArea, rect, marker.getLabelOffset(), marker.getLabelOffsetType(), anchor); + Rectangle2D r = TextUtils.calcAlignedStringBounds(label, + g2, (float) coords.getX(), (float) coords.getY(), + marker.getLabelTextAnchor()); + g2.setPaint(marker.getLabelBackgroundColor()); + g2.fill(r); + g2.setPaint(marker.getLabelPaint()); TextUtilities.drawAlignedString(label, g2, - (float) coordinates.getX(), (float) coordinates.getY(), + (float) coords.getX(), (float) coords.getY(), marker.getLabelTextAnchor()); } g2.setComposite(savedComposite); @@ -1138,8 +1142,8 @@ } /** - * Calculates the (x, y) coordinates for drawing the label for a marker on - * the range axis. + * Calculates the {@code (x, y)} coordinates for drawing the label for a + * marker on the range axis. * * @param g2 the graphics device. * @param orientation the plot orientation. @@ -1160,13 +1164,11 @@ if (orientation == PlotOrientation.HORIZONTAL) { anchorRect = markerOffset.createAdjustedRectangle(markerArea, LengthAdjustmentType.CONTRACT, labelOffsetType); - } - else if (orientation == PlotOrientation.VERTICAL) { + } else if (orientation == PlotOrientation.VERTICAL) { anchorRect = markerOffset.createAdjustedRectangle(markerArea, labelOffsetType, LengthAdjustmentType.CONTRACT); } return RectangleAnchor.coordinates(anchorRect, anchor); - } /** @@ -1191,8 +1193,7 @@ if (orientation == PlotOrientation.HORIZONTAL) { anchorRect = markerOffset.createAdjustedRectangle(markerArea, labelOffsetType, LengthAdjustmentType.CONTRACT); - } - else if (orientation == PlotOrientation.VERTICAL) { + } else if (orientation == PlotOrientation.VERTICAL) { anchorRect = markerOffset.createAdjustedRectangle(markerArea, LengthAdjustmentType.CONTRACT, labelOffsetType); } @@ -1202,13 +1203,13 @@ /** * Returns a legend item for a series. This default implementation will - * return <code>null</code> if {@link #isSeriesVisible(int)} or - * {@link #isSeriesVisibleInLegend(int)} returns <code>false</code>. + * return {@code null} if {@link #isSeriesVisible(int)} or + * {@link #isSeriesVisibleInLegend(int)} returns {@code false}. * * @param datasetIndex the dataset index (zero-based). * @param series the series index (zero-based). * - * @return The legend item (possibly <code>null</code>). + * @return The legend item (possibly {@code null}). * * @see #getLegendItems() */ @@ -1263,7 +1264,7 @@ * * @param obj the object. * - * @return <code>true</code> or <code>false</code>. + * @return {@code true} or {@code false}. */ @Override public boolean equals(Object obj) { @@ -1340,7 +1341,7 @@ /** * Returns the drawing supplier from the plot. * - * @return The drawing supplier (possibly <code>null</code>). + * @return The drawing supplier (possibly {@code null}). */ @Override public DrawingSupplier getDrawingSupplier() { @@ -1357,7 +1358,7 @@ * if it meets the criteria (usually means the (x, y) coordinate is the * closest to the anchor point so far). * - * @param crosshairState the crosshair state (<code>null</code> permitted, + * @param crosshairState the crosshair state ({@code null} permitted, * but the method does nothing in that case). * @param rowKey the row key. * @param columnKey the column key. @@ -1365,7 +1366,7 @@ * @param datasetIndex the dataset index. * @param transX the x-value translated to Java2D space. * @param transY the y-value translated to Java2D space. - * @param orientation the plot orientation (<code>null</code> not + * @param orientation the plot orientation ({@code null} not * permitted). * * @since 1.0.11 @@ -1433,7 +1434,7 @@ } /** - * Returns an independent copy of the renderer. The <code>plot</code> + * Returns an independent copy of the renderer. The {@code plot} * reference is shallow copied. * * @return A clone. @@ -1585,7 +1586,7 @@ * Returns a (possibly empty) collection of legend items for the series * that this renderer is responsible for drawing. * - * @return The legend item collection (never <code>null</code>). + * @return The legend item collection (never {@code null}). * * @see #getLegendItem(int, int) */ @@ -1627,7 +1628,7 @@ /** * Returns the legend item label generator. * - * @return The label generator (never <code>null</code>). + * @return The label generator (never {@code null}). * * @see #setLegendItemLabelGenerator(CategorySeriesLabelGenerator) */ @@ -1639,7 +1640,7 @@ * Sets the legend item label generator and sends a * {@link RendererChangeEvent} to all registered listeners. * - * @param generator the generator (<code>null</code> not permitted). + * @param generator the generator ({@code null} not permitted). * * @see #getLegendItemLabelGenerator() */ @@ -1653,7 +1654,7 @@ /** * Returns the legend item tool tip generator. * - * @return The tool tip generator (possibly <code>null</code>). + * @return The tool tip generator (possibly {@code null}). * * @see #setLegendItemToolTipGenerator(CategorySeriesLabelGenerator) */ @@ -1665,7 +1666,7 @@ * Sets the legend item tool tip generator and sends a * {@link RendererChangeEvent} to all registered listeners. * - * @param generator the generator (<code>null</code> permitted). + * @param generator the generator ({@code null} permitted). * * @see #setLegendItemToolTipGenerator(CategorySeriesLabelGenerator) */ @@ -1678,7 +1679,7 @@ /** * Returns the legend item URL generator. * - * @return The URL generator (possibly <code>null</code>). + * @return The URL generator (possibly {@code null}). * * @see #setLegendItemURLGenerator(CategorySeriesLabelGenerator) */ @@ -1690,7 +1691,7 @@ * Sets the legend item URL generator and sends a * {@link RendererChangeEvent} to all registered listeners. * - * @param generator the generator (<code>null</code> permitted). + * @param generator the generator ({@code null} permitted). * * @see #getLegendItemURLGenerator() */ @@ -1707,7 +1708,7 @@ * @param dataset the dataset. * @param row the row index. * @param column the column index. - * @param hotspot the hotspot (<code>null</code> not permitted). + * @param hotspot the hotspot ({@code null} not permitted). */ protected void addItemEntity(EntityCollection entities, CategoryDataset dataset, int row, int column, Shape hotspot) { @@ -1734,15 +1735,15 @@ * Adds an entity to the collection. * * @param entities the entity collection being populated. - * @param hotspot the entity area (if <code>null</code> a default will be + * @param hotspot the entity area (if {@code null} a default will be * used). * @param dataset the dataset. * @param row the series. * @param column the item. * @param entityX the entity's center x-coordinate in user space (only - * used if <code>area</code> is <code>null</code>). + * used if {@code area} is {@code null}). * @param entityY the entity's center y-coordinate in user space (only - * used if <code>area</code> is <code>null</code>). + * used if {@code area} is {@code null}). * * @since 1.0.13 */ @@ -1805,7 +1806,7 @@ * Sets the item label generator for ALL series and sends a * {@link RendererChangeEvent} to all registered listeners. * - * @param generator the generator (<code>null</code> permitted). + * @param generator the generator ({@code null} permitted). * * @deprecated This method should no longer be used (as of version 1.0.6). * It is sufficient to rely on {@link #setSeriesItemLabelGenerator(int, @@ -1822,7 +1823,7 @@ * Returns the tool tip generator that will be used for ALL items in the * dataset (the "layer 0" generator). * - * @return A tool tip generator (possibly <code>null</code>). + * @return A tool tip generator (possibly {@code null}). * * @see #setToolTipGenerator(CategoryToolTipGenerator) * @@ -1840,7 +1841,7 @@ * {@link org.jfree.chart.event.RendererChangeEvent} to all registered * listeners. * - * @param generator the generator (<code>null</code> permitted). + * @param generator the generator ({@code null} permitted). * * @see #getToolTipGenerator() * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |