Java Code Examples for java.awt.geom.Line2D#Float

The following examples show how to use java.awt.geom.Line2D#Float . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: ChartPanel.java    From openstock with GNU General Public License v3.0 6 votes vote down vote up
/**
 * Draws a horizontal line used to trace the mouse position to the vertical
 * axis.
 *
 * @param g2 the graphics device.
 * @param y  the y-coordinate of the trace line.
 */
private void drawVerticalAxisTrace(Graphics2D g2, int y) {

    Rectangle2D dataArea = getScreenDataArea();

    g2.setXORMode(Color.orange);
    if (((int) dataArea.getMinY() < y) && (y < (int) dataArea.getMaxY())) {

        if (this.horizontalTraceLine != null) {
            g2.draw(this.horizontalTraceLine);
            this.horizontalTraceLine.setLine((int) dataArea.getMinX(), y,
                    (int) dataArea.getMaxX(), y);
        }
        else {
            this.horizontalTraceLine = new Line2D.Float(
                    (int) dataArea.getMinX(), y, (int) dataArea.getMaxX(),
                    y);
        }
        g2.draw(this.horizontalTraceLine);
    }

    // Reset to the default 'overwrite' mode
    g2.setPaintMode();
}
 
Example 2
Source File: CookbookBorderLeft.java    From radiance with BSD 3-Clause "New" or "Revised" License 6 votes vote down vote up
@Override
public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
    SubstanceColorScheme scheme = SubstanceCortex.ComponentScope.getCurrentSkin(c)
            .getColorScheme(c, ColorSchemeAssociationKind.BORDER, ComponentState.ENABLED);

    Graphics2D g2d = (Graphics2D) g.create();

    // light line on the left-hand side
    g2d.setComposite(AlphaComposite.SrcOver);
    Color baseColor = scheme.getLightColor();
    g2d.setPaint(new GradientPaint(x, y,
            new Color(baseColor.getRed(), baseColor.getGreen(), baseColor.getBlue(),
                    (int) (baseColor.getAlpha() * this.alphaTop)),
            x, y + height, new Color(baseColor.getRed(), baseColor.getGreen(),
                    baseColor.getBlue(), (int) (baseColor.getAlpha() * this.alphaBottom))));
    // start one pixel lower so that the top border painted by the
    // decoration painter on footers doesn't get overriden
    float borderStrokeWidth = 1.0f / (float) NeonCortex.getScaleFactor();
    g2d.setStroke(new BasicStroke(borderStrokeWidth));
    float topY = y + (skipTopPixel ? borderStrokeWidth : 0);
    float bottomY = y + height - borderStrokeWidth - (skipBottomPixel ? borderStrokeWidth : 0);
    Line2D.Float line = new Line2D.Float(x, topY, x, bottomY);
    g2d.draw(line);

    g2d.dispose();
}
 
Example 3
Source File: Underline.java    From jdk8u-jdk with GNU General Public License v2.0 6 votes vote down vote up
void drawUnderline(Graphics2D g2d,
                   float thickness,
                   float x1,
                   float x2,
                   float y) {

    Stroke saveStroke = g2d.getStroke();
    g2d.setStroke(stroke);

    Line2D.Float drawLine = new Line2D.Float(x1, y, x2, y);
    g2d.draw(drawLine);

    drawLine.y1 += DEFAULT_THICKNESS;
    drawLine.y2 += DEFAULT_THICKNESS;
    drawLine.x1 += DEFAULT_THICKNESS;

    g2d.draw(drawLine);

    g2d.setStroke(saveStroke);
}
 
Example 4
Source File: ShapeUtilitiesTest.java    From ccu-historian with GNU General Public License v3.0 6 votes vote down vote up
/**
 * Tests the equal() method.
 */
public void testEqualLine2Ds() {

    assertTrue(ShapeUtilities.equal((Line2D) null, (Line2D) null));
    Line2D l1 = new Line2D.Float(1.0f, 2.0f, 3.0f, 4.0f);
    Line2D l2 = new Line2D.Float(1.0f, 2.0f, 3.0f, 4.0f);
    assertTrue(ShapeUtilities.equal(l1, l2));

    l1 = new Line2D.Float(4.0f, 3.0f, 2.0f, 1.0f);
    assertFalse(ShapeUtilities.equal(l1, l2));
    l2 = new Line2D.Float(4.0f, 3.0f, 2.0f, 1.0f);
    assertTrue(ShapeUtilities.equal(l1, l2));

    l1 = new Line2D.Double(4.0f, 3.0f, 2.0f, 1.0f);
    assertTrue(ShapeUtilities.equal(l1, l2));

}
 
Example 5
Source File: ChartPanel.java    From ccu-historian with GNU General Public License v3.0 6 votes vote down vote up
/**
 * Draws a horizontal line used to trace the mouse position to the vertical
 * axis.
 *
 * @param g2 the graphics device.
 * @param y  the y-coordinate of the trace line.
 */
private void drawVerticalAxisTrace(Graphics2D g2, int y) {

    Rectangle2D dataArea = getScreenDataArea();

    g2.setXORMode(Color.orange);
    if (((int) dataArea.getMinY() < y) && (y < (int) dataArea.getMaxY())) {

        if (this.horizontalTraceLine != null) {
            g2.draw(this.horizontalTraceLine);
            this.horizontalTraceLine.setLine((int) dataArea.getMinX(), y,
                    (int) dataArea.getMaxX(), y);
        }
        else {
            this.horizontalTraceLine = new Line2D.Float(
                    (int) dataArea.getMinX(), y, (int) dataArea.getMaxX(),
                    y);
        }
        g2.draw(this.horizontalTraceLine);
    }

    // Reset to the default 'overwrite' mode
    g2.setPaintMode();
}
 
Example 6
Source File: Underline.java    From TencentKona-8 with GNU General Public License v2.0 6 votes vote down vote up
void drawUnderline(Graphics2D g2d,
                   float thickness,
                   float x1,
                   float x2,
                   float y) {

    Stroke saveStroke = g2d.getStroke();
    g2d.setStroke(stroke);

    Line2D.Float drawLine = new Line2D.Float(x1, y, x2, y);
    g2d.draw(drawLine);

    drawLine.y1 += DEFAULT_THICKNESS;
    drawLine.y2 += DEFAULT_THICKNESS;
    drawLine.x1 += DEFAULT_THICKNESS;

    g2d.draw(drawLine);

    g2d.setStroke(saveStroke);
}
 
Example 7
Source File: ChartPanel.java    From opensim-gui with Apache License 2.0 6 votes vote down vote up
/**
 * Draws a vertical line used to trace the mouse position to the horizontal 
 * axis.
 *
 * @param x  the x-coordinate of the trace line.
 */
private void drawHorizontalAxisTrace(int x) {

    Graphics2D g2 = (Graphics2D) getGraphics();
    Rectangle2D dataArea = getScreenDataArea();

    g2.setXORMode(java.awt.Color.orange);
    if (((int) dataArea.getMinX() < x) && (x < (int) dataArea.getMaxX())) {

        if (this.verticalTraceLine != null) {
            g2.draw(this.verticalTraceLine);
            this.verticalTraceLine.setLine(x, (int) dataArea.getMinY(), x, 
                    (int) dataArea.getMaxY());
        }
        else {
            this.verticalTraceLine = new Line2D.Float(x, 
                    (int) dataArea.getMinY(), x, (int) dataArea.getMaxY());
        }
        g2.draw(this.verticalTraceLine);
    }

}
 
Example 8
Source File: StatisticsUtilsTest.java    From snap-desktop with GNU General Public License v3.0 6 votes vote down vote up
@Test
public void testCreateTransectProfileText_Byte() throws IOException {
    final Product product = new Product("X", "Y", 2, 1);
    Band node = product.addBand("name", ProductData.TYPE_INT8);
    node.setSynthetic(true);
    node.setNoDataValue(0);
    node.setNoDataValueUsed(true);
    final byte[] data = new byte[product.getSceneRasterWidth() * product.getSceneRasterHeight()];
    Arrays.fill(data, (byte) 1);
    data[0] = 0; // no data
    node.setData(ProductData.createInstance(data));

    final Line2D.Float shape = new Line2D.Float(0.5f, 0.5f, 1.5f, 0.5f);
    final TransectProfileData profileData = node.createTransectProfileData(shape);
    final String profileDataString = StatisticsUtils.TransectProfile.createTransectProfileText(node, profileData);
    assertTrue(profileDataString.contains("NaN"));
    assertFalse(profileDataString.toLowerCase().contains("no data"));
}
 
Example 9
Source File: ChartPanel.java    From opensim-gui with Apache License 2.0 6 votes vote down vote up
/**
 * Draws a horizontal line used to trace the mouse position to the vertical
 * axis.
 *
 * @param y  the y-coordinate of the trace line.
 */
private void drawVerticalAxisTrace(int y) {

    Graphics2D g2 = (Graphics2D) getGraphics();
    Rectangle2D dataArea = getScreenDataArea();

    g2.setXORMode(java.awt.Color.orange);
    if (((int) dataArea.getMinY() < y) && (y < (int) dataArea.getMaxY())) {

        if (this.horizontalTraceLine != null) {
            g2.draw(this.horizontalTraceLine);
            this.horizontalTraceLine.setLine((int) dataArea.getMinX(), y, 
                    (int) dataArea.getMaxX(), y);
        }
        else {
            this.horizontalTraceLine = new Line2D.Float(
                    (int) dataArea.getMinX(), y, (int) dataArea.getMaxX(), 
                    y);
        }
        g2.draw(this.horizontalTraceLine);
    }

}
 
Example 10
Source File: Underline.java    From hottub with GNU General Public License v2.0 6 votes vote down vote up
Shape getUnderlineShape(float thickness,
                        float x1,
                        float x2,
                        float y) {

    GeneralPath gp = new GeneralPath();

    Line2D.Float line = new Line2D.Float(x1, y, x2, y);
    gp.append(stroke.createStrokedShape(line), false);

    line.y1 += DEFAULT_THICKNESS;
    line.y2 += DEFAULT_THICKNESS;
    line.x1 += DEFAULT_THICKNESS;

    gp.append(stroke.createStrokedShape(line), false);

    return gp;
}
 
Example 11
Source File: Underline.java    From jdk8u-jdk with GNU General Public License v2.0 6 votes vote down vote up
Shape getUnderlineShape(float thickness,
                        float x1,
                        float x2,
                        float y) {

    GeneralPath gp = new GeneralPath();

    Line2D.Float line = new Line2D.Float(x1, y, x2, y);
    gp.append(stroke.createStrokedShape(line), false);

    line.y1 += DEFAULT_THICKNESS;
    line.y2 += DEFAULT_THICKNESS;
    line.x1 += DEFAULT_THICKNESS;

    gp.append(stroke.createStrokedShape(line), false);

    return gp;
}
 
Example 12
Source File: Line2DObjectDescription.java    From ccu-historian with GNU General Public License v3.0 5 votes vote down vote up
/**
 * Creates an object based on this description.
 *
 * @return The object.
 */
public Object createObject() {
    final Line2D line = new Line2D.Float();

    final float x1 = getFloatParameter("x1");
    final float x2 = getFloatParameter("x2");
    final float y1 = getFloatParameter("y1");
    final float y2 = getFloatParameter("y2");
    line.setLine(x1, y1, x2, y2);
    return line;
}
 
Example 13
Source File: PiePlot.java    From buffer_bci with GNU General Public License v3.0 4 votes vote down vote up
/**
 * Returns a collection of legend items for the pie chart.
 *
 * @return The legend items (never <code>null</code>).
 */
@Override
public LegendItemCollection getLegendItems() {

    LegendItemCollection result = new LegendItemCollection();
    if (this.dataset == null) {
        return result;
    }
    List keys = this.dataset.getKeys();
    int section = 0;
    Shape shape = getLegendItemShape();
    Iterator iterator = keys.iterator();
    while (iterator.hasNext()) {
        Comparable key = (Comparable) iterator.next();
        Number n = this.dataset.getValue(key);
        boolean include;
        if (n == null) {
            include = !this.ignoreNullValues;
        }
        else {
            double v = n.doubleValue();
            if (v == 0.0) {
                include = !this.ignoreZeroValues;
            }
            else {
                include = v > 0.0;
            }
        }
        if (include) {
            String label = this.legendLabelGenerator.generateSectionLabel(
                    this.dataset, key);
            if (label != null) {
                String description = label;
                String toolTipText = null;
                if (this.legendLabelToolTipGenerator != null) {
                    toolTipText = this.legendLabelToolTipGenerator
                            .generateSectionLabel(this.dataset, key);
                }
                String urlText = null;
                if (this.legendLabelURLGenerator != null) {
                    urlText = this.legendLabelURLGenerator.generateURL(
                            this.dataset, key, this.pieIndex);
                }
                Paint paint = lookupSectionPaint(key);
                Paint outlinePaint = lookupSectionOutlinePaint(key);
                Stroke outlineStroke = lookupSectionOutlineStroke(key);
                LegendItem item = new LegendItem(label, description,
                        toolTipText, urlText, true, shape, true, paint,
                        true, outlinePaint, outlineStroke,
                        false,          // line not visible
                        new Line2D.Float(), new BasicStroke(), Color.black);
                item.setDataset(getDataset());
                item.setSeriesIndex(this.dataset.getIndex(key));
                item.setSeriesKey(key);
                result.add(item);
            }
            section++;
        }
        else {
            section++;
        }
    }
    return result;
}
 
Example 14
Source File: CohenSutherlandClipping.java    From tabula-java with MIT License 4 votes vote down vote up
/**
 * Clips a given line against the clip rectangle.
 * The modification (if needed) is done in place.
 * @param line the line to clip
 * @return true if line is clipped, false if line is
 * totally outside the clip rect.
 */
public boolean clip(Line2D.Float line) {

    double p1x = line.getX1();
    double p1y = line.getY1();
    double p2x = line.getX2();
    double p2y = line.getY2();

    double qx = 0d;
    double qy = 0d;

    boolean vertical = p1x == p2x;

    double slope = vertical 
        ? 0d
        : (p2y-p1y)/(p2x-p1x);

    int c1 = regionCode(p1x, p1y);
    int c2 = regionCode(p2x, p2y);

    while (c1 != INSIDE || c2 != INSIDE) {

        if ((c1 & c2) != INSIDE)
            return false;

        int c = c1 == INSIDE ? c2 : c1;

        if ((c & LEFT) != INSIDE) {
            qx = xMin;
            qy = (Utils.feq(qx, p1x) ? 0 : qx-p1x)*slope + p1y;
        }
        else if ((c & RIGHT) != INSIDE) {
            qx = xMax;
            qy = (Utils.feq(qx, p1x) ? 0 : qx-p1x)*slope + p1y;
        }
        else if ((c & BOTTOM) != INSIDE) {
            qy = yMin;
            qx = vertical
                ? p1x
                : (Utils.feq(qy, p1y) ? 0 : qy-p1y)/slope + p1x;
        }
        else if ((c & TOP) != INSIDE) {
            qy = yMax;
            qx = vertical
                ? p1x
                : (Utils.feq(qy, p1y) ? 0 : qy-p1y)/slope + p1x;
        }

        if (c == c1) {
            p1x = qx;
            p1y = qy;
            c1  = regionCode(p1x, p1y);
        }
        else {
            p2x = qx;
            p2y = qy;
            c2 = regionCode(p2x, p2y);
        }
    }
    line.setLine(p1x, p1y, p2x, p2y);
    return true;
}
 
Example 15
Source File: CustomBarRenderer.java    From openbd-core with GNU General Public License v3.0 4 votes vote down vote up
/**
 * Returns a legend item for a series.
 * 
 * @param datasetIndex
 *          the dataset index (zero-based).
 * @param series
 *          the series index (zero-based).
 * 
 * @return The legend item.
 */
public LegendItem getLegendItem(int datasetIndex, int series) {

	CategoryPlot cp = getPlot();
	if (cp == null) {
		return null;
	}

	CategoryDataset dataset;
	dataset = cp.getDataset(datasetIndex);
	String label = getLegendItemLabelGenerator().generateLabel(dataset, series);
	String description = label;
	String toolTipText = null;
	if (getLegendItemToolTipGenerator() != null) {
		toolTipText = getLegendItemToolTipGenerator().generateLabel(dataset, series);
	}
	String urlText = null;
	if (getLegendItemURLGenerator() != null) {
		urlText = getLegendItemURLGenerator().generateLabel(dataset, series);
	}
	Shape shape = new Rectangle2D.Double(-4.0, -4.0, 8.0, 8.0);
	Paint paint = getSeriesPaint(series);
	Paint outlinePaint = getSeriesOutlinePaint(series);
	Stroke outlineStroke = getSeriesOutlineStroke(series);

	// This is the fix for bug #2695
	if (paint instanceof java.awt.GradientPaint) {
		// When the paintstyle is "shade" use the lighter
		// color while with "light" use the darker color
		// NOTE: if we take the lighter color (Color2) and make it darker
		// and it equals the darker color (Color1) then the paintstyle
		// is "shade".
		GradientPaint gp = ((GradientPaint) paint);
		if (cfCHART.getDarkerColor(gp.getColor2()).equals(gp.getColor1()))
			paint = gp.getColor2(); // the lighter color
		else
			paint = gp.getColor1(); // the darker color
	}

	return new LegendItem(label, description, toolTipText, urlText, true, shape, true, paint, isDrawBarOutline(), outlinePaint, outlineStroke, false, new Line2D.Float(), new BasicStroke(1.0f), Color.black);
}
 
Example 16
Source File: BarRenderer.java    From astor with GNU General Public License v2.0 4 votes vote down vote up
/**
 * Returns a legend item for a series.
 *
 * @param datasetIndex  the dataset index (zero-based).
 * @param series  the series index (zero-based).
 *
 * @return The legend item (possibly <code>null</code>).
 */
public LegendItem getLegendItem(int datasetIndex, int series) {

    CategoryPlot cp = getPlot();
    if (cp == null) {
        return null;
    }

    // check that a legend item needs to be displayed...
    if (!isSeriesVisible(series) || !isSeriesVisibleInLegend(series)) {
        return null;
    }

    CategoryDataset dataset = cp.getDataset(datasetIndex);
    String label = getLegendItemLabelGenerator().generateLabel(dataset, 
            series);
    String description = label;
    String toolTipText = null; 
    if (getLegendItemToolTipGenerator() != null) {
        toolTipText = getLegendItemToolTipGenerator().generateLabel(
                dataset, series);   
    }
    String urlText = null;
    if (getLegendItemURLGenerator() != null) {
        urlText = getLegendItemURLGenerator().generateLabel(dataset, 
                series);   
    }
    Shape shape = new Rectangle2D.Double(-4.0, -4.0, 8.0, 8.0);
    Paint paint = lookupSeriesPaint(series);
    Paint outlinePaint = lookupSeriesOutlinePaint(series);
    Stroke outlineStroke = lookupSeriesOutlineStroke(series);

    LegendItem result = new LegendItem(label, description, toolTipText, 
            urlText, true, shape, true, paint, isDrawBarOutline(), 
            outlinePaint, outlineStroke, false, new Line2D.Float(), 
            new BasicStroke(1.0f), Color.black);
    result.setDataset(dataset);
    result.setDatasetIndex(datasetIndex);
    result.setSeriesKey(dataset.getRowKey(series));
    result.setSeriesIndex(series);
    if (this.gradientPaintTransformer != null) {
        result.setFillPaintTransformer(this.gradientPaintTransformer);
    }
    return result;
}
 
Example 17
Source File: CustomBarRenderer3D.java    From openbd-core with GNU General Public License v3.0 4 votes vote down vote up
/**
 * Returns a legend item for a series.
 * 
 * @param datasetIndex
 *          the dataset index (zero-based).
 * @param series
 *          the series index (zero-based).
 * 
 * @return The legend item.
 */
public LegendItem getLegendItem(int datasetIndex, int series) {

	CategoryPlot cp = getPlot();
	if (cp == null) {
		return null;
	}

	CategoryDataset dataset;
	dataset = cp.getDataset(datasetIndex);
	String label = getLegendItemLabelGenerator().generateLabel(dataset, series);
	String description = label;
	String toolTipText = null;
	if (getLegendItemToolTipGenerator() != null) {
		toolTipText = getLegendItemToolTipGenerator().generateLabel(dataset, series);
	}
	String urlText = null;
	if (getLegendItemURLGenerator() != null) {
		urlText = getLegendItemURLGenerator().generateLabel(dataset, series);
	}
	Shape shape = new Rectangle2D.Double(-4.0, -4.0, 8.0, 8.0);
	Paint paint = getSeriesPaint(series);
	Paint outlinePaint = getSeriesOutlinePaint(series);
	Stroke outlineStroke = getSeriesOutlineStroke(series);

	// This is the fix for bug #2695
	if (paint instanceof java.awt.GradientPaint) {
		// When the paintstyle is "shade" use the lighter
		// color while with "light" use the darker color
		// NOTE: if we take the lighter color (Color2) and make it darker
		// and it equals the darker color (Color1) then the paintstyle
		// is "shade".
		GradientPaint gp = ((GradientPaint) paint);
		if (cfCHART.getDarkerColor(gp.getColor2()).equals(gp.getColor1()))
			paint = gp.getColor2(); // the lighter color
		else
			paint = gp.getColor1(); // the darker color
	}

	return new LegendItem(label, description, toolTipText, urlText, true, shape, true, paint, isDrawBarOutline(), outlinePaint, outlineStroke, false, new Line2D.Float(), new BasicStroke(1.0f), Color.black);
}
 
Example 18
Source File: PiePlot.java    From astor with GNU General Public License v2.0 4 votes vote down vote up
/**
 * Returns a collection of legend items for the pie chart.
 *
 * @return The legend items (never <code>null</code>).
 */
public LegendItemCollection getLegendItems() {

    LegendItemCollection result = new LegendItemCollection();
    if (this.dataset == null) {
        return result;
    }
    List keys = this.dataset.getKeys();
    int section = 0;
    Shape shape = getLegendItemShape();
    Iterator iterator = keys.iterator();
    while (iterator.hasNext()) {
        Comparable key = (Comparable) iterator.next();
        Number n = this.dataset.getValue(key);
        boolean include = true;
        if (n == null) {
            include = !this.ignoreNullValues;
        }
        else {
            double v = n.doubleValue();
            if (v == 0.0) {
                include = !this.ignoreZeroValues;
            }
            else {
                include = v > 0.0;
            }
        }
        if (include) {
            String label = this.legendLabelGenerator.generateSectionLabel(
                    this.dataset, key);
            if (label != null) {
                String description = label;
                String toolTipText = null;
                if (this.legendLabelToolTipGenerator != null) {
                    toolTipText = this.legendLabelToolTipGenerator
                            .generateSectionLabel(this.dataset, key);
                }
                String urlText = null;
                if (this.legendLabelURLGenerator != null) {
                    urlText = this.legendLabelURLGenerator.generateURL(
                            this.dataset, key, this.pieIndex);
                }
                Paint paint = lookupSectionPaint(key, false);
                Paint outlinePaint = lookupSectionOutlinePaint(key, false);
                Stroke outlineStroke = lookupSectionOutlineStroke(key,
                        false);
                LegendItem item = new LegendItem(label, description,
                        toolTipText, urlText, true, shape, true, paint,
                        true, outlinePaint, outlineStroke,
                        false,          // line not visible
                        new Line2D.Float(), new BasicStroke(), Color.black);
                item.setDataset(getDataset());
                item.setSeriesIndex(this.dataset.getIndex(key));
                item.setSeriesKey(key);
                result.add(item);
            }
            section++;
        }
        else {
            section++;
        }
    }
    return result;
}
 
Example 19
Source File: StandardCategoryAxis3D.java    From orson-charts with GNU General Public License v3.0 4 votes vote down vote up
/**
 * Draws the axis between the two points {@code pt0} and {@code pt1} in 
 * Java2D space.
 * 
 * @param g2  the graphics target ({@code null} not permitted).
 * @param pt0  the starting point for the axis ({@code null} not 
 *     permitted).
 * @param pt1  the ending point for the axis ({@code null} not 
 *     permitted).
 * @param opposingPt  a point on the opposite side of the line from the 
 *         labels ({@code null} not permitted).
 * @param tickData  the tick data, contains positioning anchors calculated 
 *     by the 3D engine ({@code null} not permitted).
 * @param info  an object to be populated with rendering info 
 *     ({@code null} permitted).
 * @param hinting  perform element hinting?
 */
@Override
public void draw(Graphics2D g2, Point2D pt0, Point2D pt1, 
        Point2D opposingPt, List<TickData> tickData, RenderingInfo info,
        boolean hinting) {
    
    if (!isVisible()) {
        return;
    }
    if (pt0.equals(pt1)) { // if the axis starts and ends on the same point
        return;            // there is nothing we can draw
    }
    
    // draw the axis line (if you want no line, setting the line color
    // to fully transparent will achieve this)
    g2.setStroke(getLineStroke());
    g2.setPaint(getLineColor());
    Line2D axisLine = new Line2D.Float(pt0, pt1);
    g2.draw(axisLine);
 
    // draw the tick marks - during this pass we will also find the maximum
    // tick label width
    g2.setPaint(this.tickMarkPaint);
    g2.setStroke(this.tickMarkStroke);
    g2.setFont(getTickLabelFont());
    double maxTickLabelWidth = 0.0;
    for (TickData t : tickData) {
        if (this.tickMarkLength > 0.0) {
            Line2D tickLine = Utils2D.createPerpendicularLine(axisLine, 
                    t.getAnchorPt(), this.tickMarkLength, opposingPt);
            g2.draw(tickLine);
        }
        String tickLabel = t.getKeyLabel();
        maxTickLabelWidth = Math.max(maxTickLabelWidth, 
                g2.getFontMetrics().stringWidth(tickLabel));
    }

    double maxTickLabelDim = maxTickLabelWidth;
    if (getTickLabelsVisible()) {
        g2.setPaint(getTickLabelColor());
        if (this.tickLabelOrientation.equals(
                LabelOrientation.PERPENDICULAR)) {
            drawPerpendicularTickLabels(g2, axisLine, opposingPt, tickData,
                    info, hinting);
        } else if (this.tickLabelOrientation.equals(
                LabelOrientation.PARALLEL)) {
            maxTickLabelDim = drawParallelTickLabels(g2, axisLine, 
                    opposingPt, tickData, maxTickLabelWidth, info, hinting);
        }
    } else {
        maxTickLabelDim = 0.0;
    }

    // draw the axis label if there is one
    if (getLabel() != null) {
        Shape labelBounds = drawAxisLabel(getLabel(), g2, axisLine, 
                opposingPt, maxTickLabelDim + this.tickMarkLength 
                + this.tickLabelOffset + getLabelOffset(), info, hinting);
    }
}
 
Example 20
Source File: BarRenderer.java    From SIMVA-SoS with Apache License 2.0 4 votes vote down vote up
/**
 * Returns a legend item for a series.
 *
 * @param datasetIndex  the dataset index (zero-based).
 * @param series  the series index (zero-based).
 *
 * @return The legend item (possibly <code>null</code>).
 */
@Override
public LegendItem getLegendItem(int datasetIndex, int series) {

    CategoryPlot cp = getPlot();
    if (cp == null) {
        return null;
    }

    // check that a legend item needs to be displayed...
    if (!isSeriesVisible(series) || !isSeriesVisibleInLegend(series)) {
        return null;
    }

    CategoryDataset dataset = cp.getDataset(datasetIndex);
    String label = getLegendItemLabelGenerator().generateLabel(dataset,
            series);
    String description = label;
    String toolTipText = null;
    if (getLegendItemToolTipGenerator() != null) {
        toolTipText = getLegendItemToolTipGenerator().generateLabel(
                dataset, series);
    }
    String urlText = null;
    if (getLegendItemURLGenerator() != null) {
        urlText = getLegendItemURLGenerator().generateLabel(dataset,
                series);
    }
    Shape shape = lookupLegendShape(series);
    Paint paint = lookupSeriesPaint(series);
    Paint outlinePaint = lookupSeriesOutlinePaint(series);
    Stroke outlineStroke = lookupSeriesOutlineStroke(series);

    LegendItem result = new LegendItem(label, description, toolTipText,
            urlText, true, shape, true, paint, isDrawBarOutline(),
            outlinePaint, outlineStroke, false, new Line2D.Float(),
            new BasicStroke(1.0f), Color.black);
    result.setLabelFont(lookupLegendTextFont(series));
    Paint labelPaint = lookupLegendTextPaint(series);
    if (labelPaint != null) {
        result.setLabelPaint(labelPaint);
    }
    result.setDataset(dataset);
    result.setDatasetIndex(datasetIndex);
    result.setSeriesKey(dataset.getRowKey(series));
    result.setSeriesIndex(series);
    if (this.gradientPaintTransformer != null) {
        result.setFillPaintTransformer(this.gradientPaintTransformer);
    }
    return result;
}