@Override protected void drawFill(Graphics2D g) { Ellipse2D.Double r = (Ellipse2D.Double) ellipse.clone(); double grow = AttributeKeys.getPerpendicularFillGrowth(this); r.x -= grow; r.y -= grow; r.width += grow * 2; r.height += grow * 2; if (r.width > 0 && r.height > 0) { g.fill(r); } }
@Override protected void drawFill(Graphics2D g) { RoundRectangle2D.Double r = (RoundRectangle2D.Double) roundrect.clone(); double grow = AttributeKeys.getPerpendicularFillGrowth(this); r.x -= grow; r.y -= grow; r.width += grow * 2; r.height += grow * 2; r.arcwidth += grow * 2; r.archeight += grow * 2; if (r.width > 0 && r.height > 0) { g.fill(r); } }
@Override protected void drawFill(Graphics2D g) { Rectangle2D.Double r = (Rectangle2D.Double) rectangle.clone(); double grow = AttributeKeys.getPerpendicularFillGrowth(this); Geom.grow(r, grow, grow); g.fill(r); }
@Override protected void drawFill(final Graphics2D g) { final Rectangle2D.Double r = (Rectangle2D.Double) bounds.clone(); final double grow = AttributeKeys.getPerpendicularFillGrowth(this); Geom.grow(r, grow, grow); g.fill(r); }
@Override protected void drawFill(Graphics2D g) { Rectangle2D.Double r = (Rectangle2D.Double) rectangle.clone(); double grow = AttributeKeys.getPerpendicularFillGrowth(this); Geom.grow(r, grow, grow); g.fill(r); }
@Override protected void drawFill(final Graphics2D g) { final Rectangle2D.Double r = (Rectangle2D.Double) bounds.clone(); final double grow = AttributeKeys.getPerpendicularFillGrowth(this); Geom.grow(r, grow, grow); g.fill(r); }
@Override protected void drawFill(Graphics2D g) { if (isClosed() || get(UNCLOSED_PATH_FILLED)) { double grow = AttributeKeys.getPerpendicularFillGrowth(this); if (grow == 0d) { g.fill(path); } else { GrowStroke gs = new GrowStroke(grow, AttributeKeys.getStrokeTotalWidth(this) * get(STROKE_MITER_LIMIT)); g.fill(gs.createStrokedShape(path)); } } }
/** * Returns the distance, that a Rectangle needs to grow (or shrink) to * make hit detections on a shape as specified by the FILL_UNDER_STROKE and STROKE_POSITION * attributes of a figure. * The value returned is the number of units that need to be grown (or shrunk) * perpendicular to a stroke on an outline of the shape. */ public static double getPerpendicularHitGrowth(Figure f) { double grow; if (f.get(STROKE_COLOR) == null) { grow = getPerpendicularFillGrowth(f); } else { double strokeWidth = AttributeKeys.getStrokeTotalWidth(f); grow = getPerpendicularDrawGrowth(f) + strokeWidth / 2d; } return grow; } }
@Override protected void drawFill(Graphics2D g) { Shape triangle = getBezierPath(); double grow = AttributeKeys.getPerpendicularFillGrowth(this); if (grow != 0d) { GrowStroke gs = new GrowStroke((float) grow, (float) (AttributeKeys.getStrokeTotalWidth(this) * get(STROKE_MITER_LIMIT)) ); triangle = gs.createStrokedShape(triangle); } g.fill(triangle); }
@Override protected void drawFill(Graphics2D g) { Rectangle2D.Double r = (Rectangle2D.Double) rectangle.clone(); if (get(IS_QUADRATIC)) { double side = Math.max(r.width, r.height); r.x -= (side - r.width) / 2; r.y -= (side - r.height) / 2; r.width = r.height = side; } double grow = AttributeKeys.getPerpendicularFillGrowth(this); if (grow != 0d) { double w = r.width / 2d; double h = r.height / 2d; double lineLength = Math.sqrt(w * w + h * h); double scale = grow / lineLength; double yb = scale * w; double xa = scale * h; double growx, growy; growx = ((yb * yb) / xa + xa); growy = ((xa * xa) / yb + yb); Geom.grow(r, growx, growy); } Path2D.Double diamond = new Path2D.Double(); diamond.moveTo((r.x + r.width / 2), r.y); diamond.lineTo((r.x + r.width), (r.y + r.height / 2)); diamond.lineTo((r.x + r.width / 2), (r.y + r.height)); diamond.lineTo(r.x, (r.y + r.height / 2)); diamond.closePath(); g.fill(diamond); }
double grow = AttributeKeys.getPerpendicularFillGrowth(this); if (grow != 0d) { double w = r.width / 2d;