List of usage examples for java.awt.geom Area exclusiveOr
public void exclusiveOr(Area rhs)
From source file:BasicShapes.java
public static void main(String[] args) { Area shape = new Area(new Rectangle(1, 1, 1, 1)); shape.add(new Area(new Rectangle(1, 1, 1, 1))); shape.subtract(new Area(new Rectangle(1, 1, 1, 1))); shape.intersect(new Area(new Rectangle(1, 1, 1, 1))); shape.exclusiveOr(new Area(new Rectangle(1, 1, 1, 1))); }
From source file:Main.java
public static void main(String[] args) { Area shape = new Area(new Rectangle(1, 1, 1, 1)); shape.add(new Area(new Rectangle(1, 1, 1, 1))); shape.subtract(new Area(new Rectangle(1, 1, 1, 1))); shape.intersect(new Area(new Rectangle(1, 1, 1, 1))); shape.exclusiveOr(new Area(new Rectangle(1, 1, 1, 1))); System.out.println(shape.intersects(new Rectangle(1, 1, 1, 1))); }
From source file:Main.java
public void paint(Graphics g) { Graphics2D g2 = (Graphics2D) g; Ellipse2D e1 = new Ellipse2D.Double(20.0, 20.0, 80.0, 70.0); Ellipse2D e2 = new Ellipse2D.Double(20.0, 70.0, 40.0, 40.0); Area a1 = new Area(e1); Area a2 = new Area(e2); a1.exclusiveOr(a2); g2.setColor(Color.orange);/*w w w. jav a 2 s . c o m*/ g2.fill(a1); g2.setColor(Color.black); g2.drawString("exclusiveOr", 20, 140); }
From source file:CombiningShapes.java
public void paintComponent(Graphics g) { Graphics2D g2 = (Graphics2D) g; g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); String option = (String) mOptions.getSelectedItem(); if (option.equals("outline")) { // draw the outlines and return. g2.draw(mShapeOne);// w w w . j av a 2 s. com g2.draw(mShapeTwo); return; } // Create Areas from the shapes. Area areaOne = new Area(mShapeOne); Area areaTwo = new Area(mShapeTwo); // Combine the Areas according to the selected option. if (option.equals("add")) areaOne.add(areaTwo); else if (option.equals("intersection")) areaOne.intersect(areaTwo); else if (option.equals("subtract")) areaOne.subtract(areaTwo); else if (option.equals("exclusive or")) areaOne.exclusiveOr(areaTwo); // Fill the resulting Area. g2.setPaint(Color.orange); g2.fill(areaOne); // Draw the outline of the resulting Area. g2.setPaint(Color.black); g2.draw(areaOne); }
From source file:org.eclipse.birt.chart.device.g2d.G2dRendererBase.java
@Override public void fillArc(ArcRenderEvent are) throws ChartException { if (iv != null) { iv.modifyEvent(are);/*from w w w . ja v a2s. c o m*/ } final Fill flBackground = validateMultipleFill(are.getBackground()); if (isFullTransparent(flBackground)) { return; } if (flBackground instanceof ColorDefinition) { final ColorDefinition cl = (ColorDefinition) flBackground; final Color clrPrevious = _g2d.getColor(); final Color currentColor = (Color) _ids.getColor(cl); _g2d.setColor(currentColor); if ((are.getInnerRadius() >= 0 && are.getOuterRadius() > 0 && are.getInnerRadius() < are.getOuterRadius()) || (are.getInnerRadius() > 0 && are.getOuterRadius() <= 0)) { Bounds rctOuter = getOuterRectangle(are); Bounds rctInner = getInnerRectangle(are); Shape outerArc = new Arc2D.Double(rctOuter.getLeft(), rctOuter.getTop(), rctOuter.getWidth(), rctOuter.getHeight(), are.getStartAngle(), are.getAngleExtent(), Arc2D.PIE); Shape innerArc = new Arc2D.Double(rctInner.getLeft(), rctInner.getTop(), rctInner.getWidth(), rctInner.getHeight(), are.getStartAngle(), are.getAngleExtent(), Arc2D.PIE); Area fArea = new Area(outerArc); fArea.exclusiveOr(new Area(innerArc)); Shape prevClip = _g2d.getClip(); Area ar2 = new Area(fArea); if (prevClip != null) { Area ar1 = new Area(prevClip); ar2.intersect(ar1); } _g2d.setClip(ar2); _g2d.fill(fArea); _g2d.setClip(prevClip); } else { _g2d.fill(new Arc2D.Double(are.getTopLeft().getX(), are.getTopLeft().getY(), are.getWidth(), are.getHeight(), are.getStartAngle(), are.getAngleExtent(), toG2dArcType(are.getStyle()))); } _g2d.setColor(clrPrevious); // RESTORE } else if (flBackground instanceof Gradient) { final Gradient g = (Gradient) flBackground; final ColorDefinition cdStart = g.getStartColor(); final ColorDefinition cdEnd = g.getEndColor(); double dAngleInDegrees = g.getDirection(); final double dAngleInRadians = ((-dAngleInDegrees * Math.PI) / 180.0); Bounds bo = are.getBounds(); if (dAngleInDegrees < -90 || dAngleInDegrees > 90) { throw new ChartException(ChartDeviceExtensionPlugin.ID, ChartException.RENDERING, "SwingRendererImpl.exception.gradient.angle", //$NON-NLS-1$ new Object[] { new Double(dAngleInDegrees) }, Messages.getResourceBundle(getULocale())); } Point2D.Double p2dStart, p2dEnd; if (dAngleInDegrees == 90) { p2dStart = new Point2D.Double(bo.getLeft(), bo.getTop() + bo.getHeight()); p2dEnd = new Point2D.Double(bo.getLeft(), bo.getTop()); } else if (dAngleInDegrees == -90) { p2dEnd = new Point2D.Double(bo.getLeft(), bo.getTop() + bo.getHeight()); p2dStart = new Point2D.Double(bo.getLeft(), bo.getTop()); } else if (dAngleInDegrees > 0) { p2dStart = new Point2D.Double(bo.getLeft(), bo.getTop() + bo.getHeight()); p2dEnd = new Point2D.Double(bo.getLeft() + bo.getWidth(), bo.getTop() + bo.getHeight() - bo.getWidth() * Math.abs(Math.tan(dAngleInRadians))); } else if (dAngleInDegrees < 0) { p2dStart = new Point2D.Double(bo.getLeft(), bo.getTop()); p2dEnd = new Point2D.Double(bo.getLeft() + bo.getWidth(), bo.getTop() + bo.getWidth() * Math.abs(Math.tan(dAngleInRadians))); } else { p2dStart = new Point2D.Double(bo.getLeft(), bo.getTop()); p2dEnd = new Point2D.Double(bo.getLeft() + bo.getWidth(), bo.getTop()); } final Paint pPrevious = _g2d.getPaint(); _g2d.setPaint(new GradientPaint(p2dStart, (Color) _ids.getColor(cdStart), p2dEnd, (Color) _ids.getColor(cdEnd))); if ((are.getInnerRadius() >= 0 && are.getOuterRadius() > 0 && are.getInnerRadius() < are.getOuterRadius()) || (are.getInnerRadius() > 0 && are.getOuterRadius() <= 0)) { Bounds rctOuter = getOuterRectangle(are); Bounds rctInner = getInnerRectangle(are); Shape outerArc = new Arc2D.Double(rctOuter.getLeft(), rctOuter.getTop(), rctOuter.getWidth(), rctOuter.getHeight(), are.getStartAngle(), are.getAngleExtent(), Arc2D.PIE); Shape innerArc = new Arc2D.Double(rctInner.getLeft(), rctInner.getTop(), rctInner.getWidth(), rctInner.getHeight(), are.getStartAngle(), are.getAngleExtent(), Arc2D.PIE); Area fArea = new Area(outerArc); fArea.exclusiveOr(new Area(innerArc)); Shape prevClip = _g2d.getClip(); Area ar2 = new Area(fArea); if (prevClip != null) { Area ar1 = new Area(prevClip); ar2.intersect(ar1); } _g2d.setClip(ar2); _g2d.fill(fArea); _g2d.setClip(prevClip); } else { _g2d.fill(new Arc2D.Double(are.getTopLeft().getX(), are.getTopLeft().getY(), are.getWidth(), are.getHeight(), are.getStartAngle(), are.getAngleExtent(), toG2dArcType(are.getStyle()))); } _g2d.setPaint(pPrevious); // RESTORE } else if (flBackground instanceof org.eclipse.birt.chart.model.attribute.Image) { final Bounds bo = are.getBounds(); final Rectangle2D.Double r2d = new Rectangle2D.Double(bo.getLeft(), bo.getTop(), bo.getWidth(), bo.getHeight()); Shape shPreviousClip = _g2d.getClip(); Area ar = null; if ((are.getInnerRadius() >= 0 && are.getOuterRadius() > 0 && are.getInnerRadius() < are.getOuterRadius()) || (are.getInnerRadius() > 0 && are.getOuterRadius() <= 0)) { Bounds rctOuter = getOuterRectangle(are); Bounds rctInner = getInnerRectangle(are); Shape outerArc = new Arc2D.Double(rctOuter.getLeft(), rctOuter.getTop(), rctOuter.getWidth(), rctOuter.getHeight(), are.getStartAngle(), are.getAngleExtent(), Arc2D.PIE); Shape innerArc = new Arc2D.Double(rctInner.getLeft(), rctInner.getTop(), rctInner.getWidth(), rctInner.getHeight(), are.getStartAngle(), are.getAngleExtent(), Arc2D.PIE); Area fArea = new Area(outerArc); fArea.exclusiveOr(new Area(innerArc)); if (shPreviousClip != null) { Area ar1 = new Area(shPreviousClip); fArea.intersect(ar1); } // _g2d.setClip( fArea ); ar = fArea; } else { // SETUP THE CLIPPING AREA final Shape shArc = new Arc2D.Double(are.getTopLeft().getX(), are.getTopLeft().getY(), are.getWidth(), are.getHeight(), are.getStartAngle(), are.getAngleExtent(), toG2dArcType(are.getStyle())); Area ar2 = new Area(shArc); if (shPreviousClip != null) { Area ar1 = new Area(shPreviousClip); ar2.intersect(ar1); } // _g2d.setClip( ar2 ); ar = ar2; } if (flBackground instanceof PatternImage) { fillWithPatternImage(new Area(ar), flBackground); return; } _g2d.setClip(ar); // LOAD THE IMAGE java.awt.Image img = createImageFromModel(flBackground); if (img != null) { // REPLICATE THE IMAGE AS NEEDED final Size szImage = _ids.getSize(img); int iXRepeat = (int) (Math.ceil(r2d.width / szImage.getWidth())); int iYRepeat = (int) (Math.ceil(r2d.height / szImage.getHeight())); ImageObserver io = (ImageObserver) _ids.getObserver(); for (int i = 0; i < iXRepeat; i++) { for (int j = 0; j < iYRepeat; j++) { _g2d.drawImage(img, (int) (r2d.x + i * szImage.getWidth()), (int) (r2d.y + j * szImage.getHeight()), io); } } } _g2d.setClip(shPreviousClip); // RESTORE } }