Java 类java.awt.geom.Line2D 实例源码

项目:parabuild-ci    文件:LineNeedle.java   
/**
 * Draws the needle.
 *
 * @param g2  the graphics device.
 * @param plotArea  the plot area.
 * @param rotate  the rotation point.
 * @param angle  the angle.
 */
protected void drawNeedle(Graphics2D g2, Rectangle2D plotArea, 
                          Point2D rotate, double angle) {

    Line2D shape = new Line2D.Double();

    double x = plotArea.getMinX() + (plotArea.getWidth() / 2);
    shape.setLine(x, plotArea.getMinY(), x, plotArea.getMaxY());

    Shape s = shape;

    if ((rotate != null) && (angle != 0)) {
        /// we have rotation
        getTransform().setToRotation(angle, rotate.getX(), rotate.getY());
        s = getTransform().createTransformedShape(s);
    }

    defaultDisplay(g2, s);

}
项目:parabuild-ci    文件:XYPlot.java   
/**
 * Utility method for drawing a horizontal line across the data area of the plot.
 *
 * @param g2  the graphics device.
 * @param dataArea  the data area.
 * @param value  the coordinate, where to draw the line.
 * @param stroke  the stroke to use.
 * @param paint  the paint to use.
 */
protected void drawHorizontalLine(Graphics2D g2, Rectangle2D dataArea,
                                  double value, Stroke stroke, Paint paint) {

    ValueAxis axis = getRangeAxis();  
    if (getOrientation() == PlotOrientation.HORIZONTAL) {
        axis = getDomainAxis();   
    }
    if (axis.getRange().contains(value)) {
        double yy = axis.valueToJava2D(value, dataArea, RectangleEdge.LEFT);
        Line2D line = new Line2D.Double(dataArea.getMinX(), yy, dataArea.getMaxX(), yy);
        g2.setStroke(stroke);
        g2.setPaint(paint);
        g2.draw(line);
    }

}
项目:parabuild-ci    文件:ChartPanel.java   
/**
 * 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 = getScaledDataArea();

    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);
    }

}
项目:incubator-netbeans    文件:AddRemoveControlPointAction.java   
/**
 * Adds or removes a control point on a specified location
 * @param widget the connection widget
 * @param localLocation the local location
 */
private void addRemoveControlPoint (ConnectionWidget widget, Point localLocation) {
    ArrayList<Point> list = new ArrayList<Point> (widget.getControlPoints ());
    if (!removeControlPoint (localLocation, list, deleteSensitivity)) {
        Point exPoint = null;
        int index = 0;
        for (Point elem : list) {
            if (exPoint != null) {
                Line2D l2d = new Line2D.Double (exPoint, elem);
                if (l2d.ptSegDist (localLocation) < createSensitivity) {
                    list.add (index, localLocation);
                    break;
                }
            }
            exPoint = elem;
            index++;
        }
    }
    if (routingPolicy != null)
        widget.setRoutingPolicy (routingPolicy);
    widget.setControlPoints (list, false);
}
项目:incubator-netbeans    文件:GeometryUtils.java   
/**
 * 
 * @param line1
 * @param line2
 * @return
 */
public static boolean isParallel(Line2D line1, Line2D line2) {
    float x1 = (float) line1.getX1();
    float y1 = (float) line1.getY1();
    float x2 = (float) line1.getX2();
    float y2 = (float) line1.getY2();
    float dx = x2 - x1;
    float dy = y1 - y2;
    float d = (float) Math.sqrt((double) (dx * dx + dy * dy));

    float slope1 = Math.abs(dx / d);


    x1 = (float) line2.getX1();
    y1 = (float) line2.getY1();
    x2 = (float) line2.getX2();
    y2 = (float) line2.getY2();
    dx = x2 - x1;
    dy = y1 - y2;
    d = (float) Math.sqrt((double) (dx * dx + dy * dy));

    float slope2 = Math.abs(dx / d);

    return (slope1 == slope2);
}
项目:incubator-netbeans    文件:ConnectionWidget.java   
/**
 * Returns whether a specified local location is a part of the connection widget. It checks whether the location is
 * close to the control-points-based path (up to 4px from the line),
 * close to the anchors (defined by AnchorShape) or
 * close to the control points (PointShape).
 * @param localLocation the local locaytion
 * @return true, if the location is a part of the connection widget
 */
public boolean isHitAt (Point localLocation) {
    if (! super.isHitAt (localLocation))
            return false;

    List<Point> controlPoints = getControlPoints ();
    for (int i = 0; i < controlPoints.size () - 1; i++) {
        Point point1 = controlPoints.get (i);
        Point point2 = controlPoints.get (i + 1);
        double dist = Line2D.ptSegDistSq (point1.x, point1.y, point2.x, point2.y, localLocation.x, localLocation.y);
        if (dist < HIT_DISTANCE_SQUARE)
            return true;
    }

    return getControlPointHitAt (localLocation) >= 0;
}
项目:rapidminer    文件:AbstractChartPanel.java   
/**
 * 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();
}
项目:parabuild-ci    文件:CategoryPlot.java   
/**
 * Utility method for drawing a line perpendicular to the range axis (used
 * for crosshairs).
 *
 * @param g2  the graphics device.
 * @param dataArea  the area defined by the axes.
 * @param value  the data value.
 * @param stroke  the line stroke (<code>null</code> not permitted).
 * @param paint  the line paint (<code>null</code> not permitted).
 */
protected void drawRangeLine(Graphics2D g2, Rectangle2D dataArea,
        double value, Stroke stroke, Paint paint) {

    double java2D = getRangeAxis().valueToJava2D(value, dataArea, 
            getRangeAxisEdge());
    Line2D line = null;
    if (this.orientation == PlotOrientation.HORIZONTAL) {
        line = new Line2D.Double(java2D, dataArea.getMinY(), java2D, 
                dataArea.getMaxY());
    }
    else if (this.orientation == PlotOrientation.VERTICAL) {
        line = new Line2D.Double(dataArea.getMinX(), java2D, 
                dataArea.getMaxX(), java2D);
    }
    g2.setStroke(stroke);
    g2.setPaint(paint);
    g2.draw(line);

}
项目:parabuild-ci    文件:Axis.java   
/**
 * Draws an axis line at the current cursor position and edge.
 * 
 * @param g2  the graphics device.
 * @param cursor  the cursor position.
 * @param dataArea  the data area.
 * @param edge  the edge.
 */
protected void drawAxisLine(Graphics2D g2, double cursor,
        Rectangle2D dataArea, RectangleEdge edge) {

    Line2D axisLine = null;
    if (edge == RectangleEdge.TOP) {
        axisLine = new Line2D.Double(dataArea.getX(), cursor, dataArea.getMaxX(), cursor);  
    }
    else if (edge == RectangleEdge.BOTTOM) {
        axisLine = new Line2D.Double(dataArea.getX(), cursor, dataArea.getMaxX(), cursor);  
    }
    else if (edge == RectangleEdge.LEFT) {
        axisLine = new Line2D.Double(cursor, dataArea.getY(), cursor, dataArea.getMaxY());  
    }
    else if (edge == RectangleEdge.RIGHT) {
        axisLine = new Line2D.Double(cursor, dataArea.getY(), cursor, dataArea.getMaxY());  
    }
    g2.setPaint(this.axisLinePaint);
    g2.setStroke(this.axisLineStroke);
    g2.draw(axisLine);

}
项目:parabuild-ci    文件:PiePlot.java   
/**
 * Draws a section label on the left side of the pie chart.
 * 
 * @param g2  the graphics device.
 * @param state  the state.
 * @param record  the label record.
 */
protected void drawLeftLabel(Graphics2D g2, PiePlotState state, PieLabelRecord record) {
    double theta = record.getAngle();
    double linkX = state.getPieCenterX() 
                   + Math.cos(theta) * state.getPieWRadius() * record.getLinkPercent();
    double linkY = state.getPieCenterY() 
                   - Math.sin(theta) * state.getPieHRadius() * record.getLinkPercent();
    double elbowX = state.getPieCenterX() 
                    + Math.cos(theta) * state.getLinkArea().getWidth() / 2.0;
    double elbowY = state.getPieCenterY() 
                    - Math.sin(theta) * state.getLinkArea().getHeight() / 2.0;
    double anchorX = state.getLinkArea().getMinX();
    double anchorY = elbowY;
    double targetX = anchorX - record.getGap();
    double targetY = record.getAllocatedY();
    g2.setPaint(this.labelLinkPaint);
    g2.setStroke(this.labelLinkStroke);
    g2.draw(new Line2D.Double(linkX, linkY, elbowX, elbowY));
    g2.draw(new Line2D.Double(anchorX, anchorY, elbowX, elbowY));
    g2.draw(new Line2D.Double(anchorX, anchorY, targetX, targetY));
    TextBox tb = record.getLabel();
    tb.draw(g2, (float) targetX, (float) targetY, RectangleAnchor.RIGHT);
}
项目:parabuild-ci    文件:FastScatterPlot.java   
/**
 * Draws the gridlines for the plot, if they are visible.
 *
 * @param g2  the graphics device.
 * @param dataArea  the data area.
 * @param ticks  the ticks.
 */
protected void drawDomainGridlines(Graphics2D g2, Rectangle2D dataArea, 
                                   List ticks) {

    // draw the domain grid lines, if the flag says they're visible...
    if (isDomainGridlinesVisible()) {
        Iterator iterator = ticks.iterator();
        while (iterator.hasNext()) {
            ValueTick tick = (ValueTick) iterator.next();
            double v = this.domainAxis.valueToJava2D(tick.getValue(), 
                    dataArea, RectangleEdge.BOTTOM);
            Line2D line = new Line2D.Double(v, dataArea.getMinY(), v, 
                    dataArea.getMaxY());
            g2.setPaint(getDomainGridlinePaint());
            g2.setStroke(getDomainGridlineStroke());
            g2.draw(line);                
        }
    }
}
项目:parabuild-ci    文件:LegendItemCollectionTests.java   
/**
 * Confirm that the equals method can distinguish all the required fields.
 */
public void testEquals() {

    LegendItemCollection c1 = new LegendItemCollection();
    LegendItemCollection c2 = new LegendItemCollection();
    assertTrue(c1.equals(c2));
    assertTrue(c2.equals(c1));

    LegendItem item1 = new LegendItem("Label", "Description", 
            "ToolTip", "URL", true,  
            new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0), true, Color.red, 
            true, Color.blue, new BasicStroke(1.2f), true, 
            new Line2D.Double(1.0, 2.0, 3.0, 4.0), 
            new BasicStroke(2.1f), Color.green);
    LegendItem item2 = new LegendItem("Label", "Description", 
            "ToolTip", "URL", true, 
            new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0), 
            true, Color.red, true, Color.blue, new BasicStroke(1.2f), true, 
            new Line2D.Double(1.0, 2.0, 3.0, 4.0), new BasicStroke(2.1f), 
            Color.green);
    c1.add(item1);
    c2.add(item2);
    assertTrue(c1.equals(c2));

}
项目:parabuild-ci    文件:CategoryPlot.java   
/**
 * Utility method for drawing a line perpendicular to the range axis (used for crosshairs).
 *
 * @param g2  the graphics device.
 * @param dataArea  the area defined by the axes.
 * @param value  the data value.
 * @param stroke  the line stroke.
 * @param paint  the line paint.
 */
protected void drawRangeLine(Graphics2D g2,
                             Rectangle2D dataArea,
                             double value, Stroke stroke, Paint paint) {

    double java2D = getRangeAxis().valueToJava2D(value, dataArea, getRangeAxisEdge());
    Line2D line = null;
    if (this.orientation == PlotOrientation.HORIZONTAL) {
        line = new Line2D.Double(java2D, dataArea.getMinY(), java2D, dataArea.getMaxY());
    }
    else if (this.orientation == PlotOrientation.VERTICAL) {
        line = new Line2D.Double(dataArea.getMinX(), java2D, dataArea.getMaxX(), java2D);
    }
    g2.setStroke(stroke);
    g2.setPaint(paint);
    g2.draw(line);

}
项目:COE1186    文件:TrainModelNewGUI.java   
public void paint(Graphics g) {
        Dimension d = this.getSize();
        super.paint(g);  // fixes the immediate problem.
        Graphics2D g2 = (Graphics2D) g;
        horizontalLine1 = new Line2D.Float(45, d.height-290, d.width - 45, d.height-290);
        verticalLine1 = new Line2D.Float(d.width/3+10, 100 , d.width/3+10, d.height - 325);
        verticalLine2 = new Line2D.Float((2*d.width)/3-10, 100 , (2*d.width)/3-10, d.height - 325);
        verticalLine3 = new Line2D.Float(d.width/3+10, 350 , d.width/3+10, d.height - 50);
        verticalLine4 = new Line2D.Float((2*d.width)/3-10, 350 , (2*d.width)/3-10, d.height - 50);

        //System.out.println("Height: "+d.height+"\tWidth: "+d.width);
        // (45, 267, 129, 20)
        //g2.setColor(Color.DARK_GRAY);
        g2.draw(horizontalLine1);
        g2.draw(verticalLine1);
        g2.draw(verticalLine2);
        g2.draw(verticalLine3);
        g2.draw(verticalLine4);
}
项目:jdk8u-jdk    文件:PathGraphics.java   
/**
 * Draws a sequence of connected lines defined by
 * arrays of <i>x</i> and <i>y</i> coordinates.
 * Each pair of (<i>x</i>,&nbsp;<i>y</i>) coordinates defines a point.
 * The figure is not closed if the first point
 * differs from the last point.
 * @param       xPoints an array of <i>x</i> points
 * @param       yPoints an array of <i>y</i> points
 * @param       nPoints the total number of points
 * @see         java.awt.Graphics#drawPolygon(int[], int[], int)
 * @since       JDK1.1
 */
public void drawPolyline(int xPoints[], int yPoints[],
                         int nPoints) {
    float fromX;
    float fromY;
    float toX;
    float toY;

    if (nPoints > 0) {
        fromX = xPoints[0];
        fromY = yPoints[0];
        for(int i = 1; i < nPoints; i++) {
            toX = xPoints[i];
            toY = yPoints[i];
            draw(new Line2D.Float(fromX, fromY, toX, toY));
            fromX = toX;
            fromY = toY;
        }
    }

}
项目:jdk8u-jdk    文件:Underline.java   
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;
}
项目:parabuild-ci    文件:XYPlot.java   
/**
 * Utility method for drawing a horizontal line across the data area of the
 * plot.
 *
 * @param g2  the graphics device.
 * @param dataArea  the data area.
 * @param value  the coordinate, where to draw the line.
 * @param stroke  the stroke to use.
 * @param paint  the paint to use.
 */
protected void drawHorizontalLine(Graphics2D g2, Rectangle2D dataArea,
                                  double value, Stroke stroke,
                                  Paint paint) {

    ValueAxis axis = getRangeAxis();
    if (getOrientation() == PlotOrientation.HORIZONTAL) {
        axis = getDomainAxis();
    }
    if (axis.getRange().contains(value)) {
        double yy = axis.valueToJava2D(value, dataArea, RectangleEdge.LEFT);
        Line2D line = new Line2D.Double(dataArea.getMinX(), yy, 
                dataArea.getMaxX(), yy);
        g2.setStroke(stroke);
        g2.setPaint(paint);
        g2.draw(line);
    }

}
项目:ramus    文件:Label.java   
@Override
public void paint(Graphics2D g, Bounds aBounds, Diagram diagram) {
    QBounds bounds = (QBounds) aBounds;
    label.setLocation(0, 0);
    Dimension size = new Dimension((int) bounds.getSize().getWidth() - 4,
            (int) bounds.getSize().getHeight());
    label.setPreferredSize(size);
    label.setSize(label.getPreferredSize());
    g.setColor(Color.black);
    Line2D line = new Line2D.Double(8, getMinHeight(), getMinWidth() - 16,
            getMinHeight());
    Stroke stroke = g.getStroke();
    g.setStroke(this.stroke);
    g.draw(line);
    g.setStroke(stroke);
    paintText(g);
}
项目:OpenJSharp    文件:Underline.java   
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);
}
项目:ramus    文件:ArrowPainter.java   
private static void paintTilda(final Graphics2D g, final double x1,
                               final double y1, final double x2, final double y2,
                               MovingArea movingArea) {
    final int tWidth = movingArea.getIntOrdinate(TILDA_WIDTH);
    final double bx = (x1 + x2) / 2;
    final double by = (y1 + y2) / 2;
    double dy = y2 - y1;
    double dx = x2 - x1;
    final double len = Math.sqrt(dx * dx + dy * dy);
    if (len <= 0.2)
        return;
    dx = dx / len * tWidth;
    dy = dy / len * tWidth;

    final double nx1 = bx + dy;
    final double ny1 = by - dx;
    final double nx2 = bx - dy;
    final double ny2 = by + dx;

    g.draw(new Line2D.Double(x1, y1, nx1, ny1));
    g.draw(new Line2D.Double(nx1, ny1, nx2, ny2));
    g.draw(new Line2D.Double(nx2, ny2, x2, y2));
}
项目:geomapapp    文件:XYGraph.java   
void dragEdge(MouseEvent e) {
    if( e.isControlDown() )return;
    if( !(xy instanceof ScalableXYPoints) )return;
    if( cursor==0 )return;
    drawLine();
    int[] wesn = getWESN();
    Rectangle r = getVisibleRect();
    Point p = e.getPoint();
    if( cursor>=10 ) {
        if( cursor==10 ) {
            if(p.x>wesn[1]-2) p.x=wesn[1]-2;
        } else {
            if(p.x<wesn[0]+2) p.x=wesn[0]+2;
        }
        line = new Line2D.Double(p.x, r.y, p.x, r.y+r.height);
    } else {
        line = new Line2D.Double(r.x, p.y, r.x+r.width, p.y);
    }
    drawLine();
}
项目:litiengine    文件:PhysicsEngine.java   
@Override
public Point2D collides(final Line2D rayCast) {
  final Point2D rayCastSource = new Point2D.Double(rayCast.getX1(), rayCast.getY1());
  final List<Rectangle2D> collBoxes = this.getAllCollisionBoxes();
  collBoxes.sort((rect1, rect2) -> {
    final Point2D rect1Center = new Point2D.Double(rect1.getCenterX(), rect1.getCenterY());
    final Point2D rect2Center = new Point2D.Double(rect2.getCenterX(), rect2.getCenterY());
    final double dist1 = rect1Center.distance(rayCastSource);
    final double dist2 = rect2Center.distance(rayCastSource);

    if (dist1 < dist2) {
      return -1;
    }

    if (dist1 > dist2) {
      return 1;
    }

    return 0;
  });

  for (final Rectangle2D collisionBox : collBoxes) {
    if (collisionBox.intersectsLine(rayCast)) {
      double closestDist = -1;
      Point2D closestPoint = null;
      for (final Point2D intersection : GeometricUtilities.getIntersectionPoints(rayCast, collisionBox)) {
        final double dist = intersection.distance(rayCastSource);
        if (closestPoint == null || dist < closestDist) {
          closestPoint = intersection;
          closestDist = dist;
        }
      }

      return closestPoint;
    }
  }

  return null;
}
项目:openjdk-jdk10    文件:PixelToParallelogramConverter.java   
public void draw(SunGraphics2D sg2d, Shape s) {
    if (sg2d.strokeState < SunGraphics2D.STROKE_CUSTOM) {
        BasicStroke bs = ((BasicStroke) sg2d.stroke);
        if (s instanceof Rectangle2D) {
            if (bs.getLineJoin() == BasicStroke.JOIN_MITER &&
                bs.getDashArray() == null)
            {
                Rectangle2D r2d = (Rectangle2D) s;
                double w = r2d.getWidth();
                double h = r2d.getHeight();
                double x = r2d.getX();
                double y = r2d.getY();
                if (w >= 0 && h >= 0) {
                    double lw = bs.getLineWidth();
                    drawRectangle(sg2d, x, y, w, h, lw);
                }
                return;
            }
        } else if (s instanceof Line2D) {
            Line2D l2d = (Line2D) s;
            if (drawGeneralLine(sg2d,
                                l2d.getX1(), l2d.getY1(),
                                l2d.getX2(), l2d.getY2()))
            {
                return;
            }
        }
    }

    outpipe.draw(sg2d, s);
}
项目:parabuild-ci    文件:ContourPlot.java   
/**
 * Utility method for drawing a crosshair on the chart (if required).
 *
 * @param g2  The graphics device.
 * @param dataArea  The data area.
 * @param value  The coordinate, where to draw the line.
 * @param stroke  The stroke to use.
 * @param paint  The paint to use.
 */
protected void drawHorizontalLine(Graphics2D g2, Rectangle2D dataArea,
                                  double value, Stroke stroke, Paint paint) {

    double yy = getRangeAxis().valueToJava2D(value, dataArea, RectangleEdge.LEFT);
    Line2D line = new Line2D.Double(dataArea.getMinX(), yy,
                                    dataArea.getMaxX(), yy);
    g2.setStroke(stroke);
    g2.setPaint(paint);
    g2.draw(line);

}
项目:cuttlefish    文件:IntersectingShapePickSupport.java   
public static boolean containsPoint(Edge edge, Point2D p, double scaleFactor) {
    Shape edgeShape = null;

    if (edge.getShape().equalsIgnoreCase(Constants.LINE_STRAIGHT)) {
        edgeShape = new Line2D.Double(edge.getSource().getPosition(), edge
                .getTarget().getPosition());

    } else if (edge.getShape().equalsIgnoreCase(Constants.LINE_CURVED)) {
        Point2D from = edge.getSource().getPosition();
        Point2D to = edge.getTarget().getPosition();
        double fx = from.getX();
        double fy = from.getY();
        double tx = to.getX();
        double ty = to.getY();
        double a = Utilities.calculateAngle(from, to);
        double h = EdgeRenderer.QUADCURVE_CTRL_POINT.getY() / scaleFactor;

        // Calculate Control Point
        double cx = (fx + tx) / 2 - h * Math.sin(a);
        double cy = (fy + ty) / 2 + h * Math.cos(a);

        edgeShape = new QuadCurve2D.Double(fx, fy, cx, cy, tx, ty);

    } else if (edge.getShape().equalsIgnoreCase(Constants.LINE_LOOP)) {
        // TODO: Calculate shape for loop to enable picking of loop edges
    }

    // Create a small rectangular area around point, and use it
    // to check for intersection with the line of the edge
    double pickRadius = 1;
    double px = p.getX();
    double py = p.getY();
    Rectangle2D pickArea = new Rectangle2D.Double(px - pickRadius, py
            - pickRadius, 2 * pickRadius, 2 * pickRadius);

    return edgeShape.intersects(pickArea);
}
项目:jaer    文件:EdgeFragments.java   
public Snakelet(int index, int point1, int point2, int ts){
    idx = index;
    i1 = point1;
    i2 = point2;
    line = new Line2D.Float();
    on = false;
    type = -1;
    timestamp = ts;
}
项目:openjdk-jdk10    文件:Underline.java   
Shape getUnderlineShape(float thickness,
                        float x1,
                        float x2,
                        float y) {

    Stroke ulStroke = getStroke(thickness);
    Line2D line = new Line2D.Float(x1, y + shift, x2, y + shift);
    return ulStroke.createStrokedShape(line);
}
项目:parabuild-ci    文件:AbstractXYItemRenderer.java   
/**
 * Draws a line perpendicular to the range axis.
 *
 * @param g2  the graphics device.
 * @param plot  the plot.
 * @param axis  the value axis.
 * @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.
 * @param stroke  the stroke.
 */
public void drawRangeLine(Graphics2D g2,
                          XYPlot plot,
                          ValueAxis axis,
                          Rectangle2D dataArea,
                          double value,
                          Paint paint,
                          Stroke stroke) {

    Range range = axis.getRange();
    if (!range.contains(value)) {
        return;
    }

    PlotOrientation orientation = plot.getOrientation();
    Line2D line = null;
    double v = axis.valueToJava2D(value, dataArea, plot.getRangeAxisEdge());
    if (orientation == PlotOrientation.HORIZONTAL) {
        line = new Line2D.Double(v, dataArea.getMinY(), v,
                dataArea.getMaxY());
    }
    else if (orientation == PlotOrientation.VERTICAL) {
        line = new Line2D.Double(dataArea.getMinX(), v,
                dataArea.getMaxX(), v);
    }

    g2.setPaint(paint);
    g2.setStroke(stroke);
    g2.draw(line);

}
项目:TrabalhoFinalEDA2    文件:mxEdgeHandler.java   
/**
 * 
 */
public void paint(Graphics g)
{
    Graphics2D g2 = (Graphics2D) g;

    Stroke stroke = g2.getStroke();
    g2.setStroke(getSelectionStroke());
    g.setColor(getSelectionColor());

    Point last = state.getAbsolutePoint(0).getPoint();

    for (int i = 1; i < state.getAbsolutePointCount(); i++)
    {
        Point current = state.getAbsolutePoint(i).getPoint();
        Line2D line = new Line2D.Float(last.x, last.y, current.x, current.y);

        Rectangle bounds = g2.getStroke().createStrokedShape(line)
                .getBounds();

        if (g.hitClip(bounds.x, bounds.y, bounds.width, bounds.height))
        {
            g2.draw(line);
        }

        last = current;
    }

    g2.setStroke(stroke);
    super.paint(g);
}
项目:incubator-netbeans    文件:DnDSupport.java   
private void setupDropLine( DropTargetDragEvent dtde, CategoryList list, int dropIndex ) {
    boolean verticalDropBar = list.getColumnCount() > 1;
    Rectangle rect = list.getCellBounds( dropIndex, dropIndex );
    if( verticalDropBar )
        dropBefore = dtde.getLocation().x < (rect.x + rect.width/2);
    else
        dropBefore = dtde.getLocation().y < (rect.y + rect.height/2);
    Point p1 = rect.getLocation();
    Point p2 = rect.getLocation();
    if( verticalDropBar ) {
        p2.y += rect.height;
        if( !dropBefore ) {
            p1.x += rect.width;
            p2.x += rect.width;
        }
    } else {
        p2.x += rect.width;
        if( !dropBefore ) {
            p1.y += rect.height;
            p2.y += rect.height;
        }
    }
    p1 = SwingUtilities.convertPoint( list, p1, palette.getRootPane() );
    p2 = SwingUtilities.convertPoint( list, p2, palette.getRootPane() );
    Line2D line = new Line2D.Double( p1.x, p1.y, p2.x, p2.y );
    dropPane.setDropLine( line );
    targetItem = (Item)list.getModel().getElementAt( dropIndex );
}
项目:parabuild-ci    文件:LineBorder.java   
/**
 * Draws the border by filling in the reserved space (in black).
 * 
 * @param g2  the graphics device.
 * @param area  the area.
 */
public void draw(Graphics2D g2, Rectangle2D area) {
    double w = area.getWidth();
    double h = area.getHeight();
    double t = this.insets.calculateTopInset(h);
    double b = this.insets.calculateBottomInset(h);
    double l = this.insets.calculateLeftInset(w);
    double r = this.insets.calculateRightInset(w);
    double x = area.getX();
    double y = area.getY();
    double x0 = x + l / 2.0;
    double x1 = x + w - r / 2.0;
    double y0 = y + h - b / 2.0;
    double y1 = y + t / 2.0;
    g2.setPaint(getPaint());
    g2.setStroke(getStroke());
    Line2D line = new Line2D.Double();
    if (t > 0.0) {
        line.setLine(x0, y1, x1, y1);
        g2.draw(line);
    }
    if (b > 0.0) {
        line.setLine(x0, y0, x1, y0);
        g2.draw(line);
    }
    if (l > 0.0) {
        line.setLine(x0, y0, x0, y1);
        g2.draw(line);
    }
    if (r > 0.0) {
        line.setLine(x1, y0, x1, y1);
        g2.draw(line);
    }        
}
项目:qupath-tracking-extension    文件:BoundsFeaturesOverlay.java   
private void drawSlowPans(Graphics2D g2d, double downsampleFactor, Rectangle clippingRectangle) {
    g2d.setStroke(new BasicStroke((float)boundsThicknessScalar.get() *
            ((downsampleFactor > 1) ? (float) downsampleFactor : 1)));
    g2d.setColor(Color.BLUE);

    TrackerFeatureList slowPans = trackerFeatures.getBoundsFeatures().getSlowPans();

    for (TrackerFeature slowPan : slowPans) {
        Rectangle startRect = slowPan.getFrameAtFeatureIndex(0).getImageBounds();
        Rectangle endRect = slowPan.getFrameAtFeatureIndex(slowPan.size() - 1).getImageBounds();
        g2d.setColor(TrackerUtils.colorFXtoAWT(
                (javafx.scene.paint.Color)zoomPeakStartColorProperty.get()));

        if (startRect.intersects(clippingRectangle))
            g2d.draw(startRect);
        g2d.setColor(TrackerUtils.colorFXtoAWT(
                (javafx.scene.paint.Color)zoomPeakEndColorProperty.get()));
        if (endRect.intersects(clippingRectangle))
            g2d.draw(endRect);
        g2d.setStroke(new BasicStroke((float)boundsThicknessScalar.get() *
                ((downsampleFactor > 1) ? (float) downsampleFactor : 1)));
        g2d.setColor(TrackerUtils.colorFXtoAWT(
                (javafx.scene.paint.Color)zoomPeakPathColorProperty.get()));
        for (Line2D line : makeSlowPanLines(startRect, endRect)) {
            if (line.intersects(clippingRectangle)) {
                g2d.draw(line);
            }
        }
    }
}
项目:incubator-netbeans    文件:VariableBorder.java   
public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
    Graphics2D g2d = (Graphics2D)g;
    Shape s;

    if(topColor != null) {
        s = new Line2D.Double(x,y,x+width, y);
        g2d.setColor(topColor);
        g2d.fill(s);
    }

    if(leftColor != null) {
        s = new Line2D.Double(x,y,x, y+height);
        g2d.setColor(leftColor);
        g2d.fill(s);
    }

    if(bottomColor != null) {
        s = new Line2D.Double(x,y+height-1,x+width, y+height-1);
        g2d.setColor(bottomColor);
        g2d.fill(s);
    }

    if(rightColor != null) {
        s = new Line2D.Double(x+width-1,y,x+width-1, y+height);
        g2d.setColor(rightColor);
        g2d.fill(s);
    }


}
项目:geomapapp    文件:GMAProfile.java   
void drag(MouseEvent e) {
    if (p0==null) { begin(e); return; }
    drawLine();
    Point2D p = map.getScaledPoint(e.getPoint());
    currentLine = new Line2D.Double(map.getScaledPoint(p0), p);
    Point2D[] pts = getPath(currentLine, 5);
    currentPath =  getGeneralPath(pts);
    drawLine();
    java.text.NumberFormat fmt = java.text.NumberFormat.getInstance();
    fmt.setMaximumFractionDigits(2);

    map.setXY(e.getPoint());
    map.getMapTools().setInfoText( map.getMapTools().getInfoText() + ", distance = " +
            fmt.format(distance(pts)) +" km");
}
项目:ramus    文件:LineStyleAttributePlugin.java   
public void paint(Graphics gr) {
    super.paint(gr);
    if (stroke == null)
        return;
    final Graphics2D g = (Graphics2D) gr;

    g.setColor(getForeground());
    g.setStroke(stroke);
    g.draw(new Line2D.Double(0, (double) getHeight() / 2, getWidth(),
            (double) getHeight() / 2));
}
项目:Tarski    文件:mxMarkerRegistry.java   
public mxPoint paintMarker(mxGraphics2DCanvas canvas, mxCellState state, String type,
    mxPoint pe, double nx, double ny, double size, boolean source) {
  canvas.getGraphics()
      .draw(new Line2D.Float((int) Math.round(pe.getX() - nx - ny / 2),
          (int) Math.round(pe.getY() - ny + nx / 2), (int) Math.round(pe.getX() - nx / 6),
          (int) Math.round(pe.getY() - ny / 6)));
  canvas.getGraphics()
      .draw(new Line2D.Float((int) Math.round(pe.getX() - nx / 6),
          (int) Math.round(pe.getY() - ny / 6), (int) Math.round(pe.getX() + ny / 2 - nx),
          (int) Math.round(pe.getY() - ny - nx / 2)));

  return new mxPoint(-nx / 2, -ny / 2);
}
项目:rapidminer    文件:ColorQuartilePlotter.java   
private void drawHorizontalTic(Graphics2D g, int ticNumber, double yTicSize, double ticDifference, int pixWidth,
        int pixHeight, DecimalFormat format) {
    g.setColor(GRID_COLOR);
    double yValue = this.globalMax - ticNumber * yTicSize;
    double yPos = ticNumber * ticDifference;
    g.draw(new Line2D.Double(0, yPos, pixWidth, yPos));
    g.setColor(Color.black);
    String label = format.format(yValue) + " ";
    Rectangle2D stringBounds = LABEL_FONT.getStringBounds(label, g.getFontRenderContext());
    g.drawString(label, (float) -stringBounds.getWidth(),
            (float) (yPos - stringBounds.getHeight() / 2 - stringBounds.getY()));
}
项目:parabuild-ci    文件:AbstractXYItemRenderer.java   
/**
 * Draws a grid line against the range axis.
 *
 * @param g2  the graphics device.
 * @param plot  the plot.
 * @param axis  the value axis.
 * @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.
 *
 */
public void drawRangeGridLine(Graphics2D g2,
                              XYPlot plot,
                              ValueAxis axis,
                              Rectangle2D dataArea,
                              double value) {

    Range range = axis.getRange();
    if (!range.contains(value)) {
        return;
    }

    PlotOrientation orientation = plot.getOrientation();
    Line2D line = null;
    double v = axis.valueToJava2D(value, dataArea, plot.getRangeAxisEdge());
    if (orientation == PlotOrientation.HORIZONTAL) {
        line = new Line2D.Double(v, dataArea.getMinY(), v, dataArea.getMaxY());
    }
    else if (orientation == PlotOrientation.VERTICAL) {
        line = new Line2D.Double(dataArea.getMinX(), v, dataArea.getMaxX(), v);
    }

    Paint paint = plot.getRangeGridlinePaint();
    Stroke stroke = plot.getRangeGridlineStroke();
    g2.setPaint(paint != null ? paint : Plot.DEFAULT_OUTLINE_PAINT);
    g2.setStroke(stroke != null ? stroke : Plot.DEFAULT_OUTLINE_STROKE);
    g2.draw(line);

}
项目:rapidminer    文件:SimilarityKDistanceVisualization.java   
private void drawVerticalTic(Graphics2D g, int ticNumber, DecimalFormat format, double dx, double dy, double sx,
        double sy) {
    double x = ticNumber * xTicSize + minX;
    g.setColor(GRID_COLOR);
    g.draw(new Line2D.Double((x + dx) * sx, (minY + dy) * sy, (x + dx) * sx, (maxY + dy) * sy));
    g.setColor(Color.black);
}
项目:jmt    文件:QueueDrawer.java   
private void drawOccupiedPercentage2(Color startC, Color border, boolean gradientFill, Graphics2D g2d, int cpu) {
    //processor.setFrame(x+PROC_RAD/2 , y + cpu*PROC_RAD, 2 * PROC_RAD /2, 2 * PROC_RAD /2);

    //      if (remainingTime[cpu] != 0) {
    double x = getProcessorXY().x, y = getProcessorXY().y;
    occupiedRect = new Rectangle2D.Double(x + PROC_RAD / 2, y + cpu * PROC_RAD + ELEMS_GAP * cpu - ELEMS_GAP / 2, 2 * PROC_RAD / 2, 2 * PROC_RAD
            * (1 - (double) remainingTime[cpu] / (double) totTime[cpu]) / 2);
    occupiedEll = new Ellipse2D.Double(x + PROC_RAD / 2, y + cpu * PROC_RAD + ELEMS_GAP * cpu - ELEMS_GAP / 2, 2 * PROC_RAD / 2, 2 * PROC_RAD / 2);
    if (gradientFill) {
        GradientPaint gp = new GradientPaint((float) x, (float) y, startC.brighter(), (float) x, (float) (y + 2 * PROC_RAD), startC.darker(),
                false);
        g2d.setPaint(gp);
    } else {
        g2d.setPaint(startC);
    }
    occupiedArea = new Area(occupiedEll);
    occupiedArea.subtract(new Area(occupiedRect));
    g2d.fill(occupiedArea);
    g2d.setPaint(Color.BLACK);
    g2d.draw(occupiedArea);

    // draw orizontal line parallel to occupation
    Line2D.Double l = new Line2D.Double(x + PROC_RAD * 2 + ELEMS_GAP, y + cpu * PROC_RAD + ELEMS_GAP * cpu - ELEMS_GAP / 2 + 2 * PROC_RAD
            * (1 - (double) remainingTime[cpu] / (double) totTime[cpu]) / 2,//y + PROC_RAD * 2 * (1 - (double) remainingTime / (double) totTime) /2 + ELEMS_GAP * cpu -  ELEMS_GAP /2  , 
            x + PROC_RAD * 2 + 2 * ELEMS_GAP, y + cpu * PROC_RAD + ELEMS_GAP * cpu - ELEMS_GAP / 2 + 2 * PROC_RAD
                    * (1 - (double) remainingTime[cpu] / (double) totTime[cpu]) / 2);//y + PROC_RAD * 2 * (1 - (double) remainingTime / (double) totTime) /2 + ELEMS_GAP * cpu -  ELEMS_GAP /2 );
    g2d.draw(l);

    // draw vertical line
    l = new Line2D.Double(x + PROC_RAD * 2 + 2 * ELEMS_GAP, y + cpu * PROC_RAD + ELEMS_GAP * cpu - ELEMS_GAP / 2 + 2 * PROC_RAD
            * (1 - (double) remainingTime[cpu] / (double) totTime[cpu]) / 2, x + PROC_RAD * 2 + 2 * ELEMS_GAP, y + PROC_RAD * 2 / 2 + cpu
            * PROC_RAD + ELEMS_GAP * cpu - ELEMS_GAP / 2);
    g2d.draw(l);

    //      }
}