public static MultiRectArea getResult(MultiRectArea src1, MultiRectArea src2) { if (src1 == null || src2 == null || src1.isEmpty() || src2.isEmpty()) { return(new MultiRectArea()); } MultiRectArea.RectCash dst = new MultiRectArea.RectCash(); if (!src1.sorted || !src2.sorted || src1.getRectCount() <= MAX_SIMPLE || src2.getRectCount() <= MAX_SIMPLE) { dst.setRect(simpleIntersect(src1, src2), false); } else { java.awt.Rectangle bounds1 = src1.getBounds(); java.awt.Rectangle bounds2 = src2.getBounds(); java.awt.Rectangle bounds3 = bounds1.intersection(bounds2); if (bounds3.width > 0 && bounds3.height > 0) { intersectRegions(src1.rect, src2.rect, dst, bounds1.height + 2, bounds2.height + 2); } } return(dst); }
public OrdinaryWritableRaster(java.awt.image.SampleModel sampleModel, java.awt.image.DataBuffer dataBuffer, java.awt.Rectangle aRegion, java.awt.Point sampleModelTranslate, java.awt.image.WritableRaster parent) : base(sampleModel, dataBuffer, aRegion, sampleModelTranslate, parent) { }
internal MultiRectArea getResult(MultiRectArea src1, MultiRectArea src2) { if (src1 == null || src1.isEmpty()) { return(new MultiRectArea(src2)); } if (src2 == null || src2.isEmpty()) { return(new MultiRectArea(src1)); } dst = new MultiRectArea.RectCash(); if (!src1.sorted || !src2.sorted || src1.getRectCount() <= MAX_SIMPLE || src2.getRectCount() <= MAX_SIMPLE) { simpleUnion(src1, src2, dst); } else { java.awt.Rectangle bounds1 = src1.getBounds(); java.awt.Rectangle bounds2 = src2.getBounds(); java.awt.Rectangle bounds3 = bounds1.intersection(bounds2); if (bounds3.width < 0 || bounds3.height < 0) { if (bounds1.y + bounds1.height < bounds2.y) { dst.setRect(addVerRegion(src1.rect, src2.rect), false); } else if (bounds2.y + bounds2.height < bounds1.y) { dst.setRect(addVerRegion(src2.rect, src1.rect), false); } else if (bounds1.x < bounds2.x) { dst.setRect(addHorRegion(src1.rect, src2.rect), false); } else { dst.setRect(addHorRegion(src2.rect, src1.rect), false); } } else { unionRegions(src1.rect, src2.rect, bounds1.height + 2, bounds2.height + 2); } } return(dst); }
/** * Constructs a new MultiRectArea consists of single rectangle */ public MultiRectArea(java.awt.Rectangle r) { rect = MultiRectAreaOp.createBuf(0); if (r != null && !r.isEmpty()) { rect[0] = 5; rect[1] = r.x; rect[2] = r.y; rect[3] = r.x + r.width - 1; rect[4] = r.y + r.height - 1; } check(this, "MultiRectArea(Rectangle)"); //$NON-NLS-1$ }
/** * Returns bounds of MultiRectArea object */ public java.awt.Rectangle getBounds() { if (bounds != null) { return(bounds); } if (isEmpty()) { return(bounds = new java.awt.Rectangle()); } int x1 = rect[1]; int y1 = rect[2]; int x2 = rect[3]; int y2 = rect[4]; for (int i = 5; i < rect[0]; i += 4) { int rx1 = rect[i + 0]; int ry1 = rect[i + 1]; int rx2 = rect[i + 2]; int ry2 = rect[i + 3]; if (rx1 < x1) { x1 = rx1; } if (rx2 > x2) { x2 = rx2; } if (ry1 < y1) { y1 = ry1; } if (ry2 > y2) { y2 = ry2; } } return(bounds = new java.awt.Rectangle(x1, y1, x2 - x1 + 1, y2 - y1 + 1)); }
/** * Returns Rectangle array */ public java.awt.Rectangle[] getRectangles() { if (rectangles != null) { return(rectangles); } rectangles = new java.awt.Rectangle[(rect[0] - 1) / 4]; int j = 0; for (int i = 1; i < rect[0]; i += 4) { rectangles[j++] = new java.awt.Rectangle( rect[i], rect[i + 1], rect[i + 2] - rect[i] + 1, rect[i + 3] - rect[i + 1] + 1); } return(rectangles); }
void invalidate() { bounds = null; rectangles = null; }
/** * Tests does rectangle intersect MultiRectArea object */ public bool intersects(double x, double y, double w, double h) { java.awt.Rectangle r = new java.awt.Rectangle(); r.setRect(x, y, w, h); return intersects(r); }
/** * Returns Rectangle array */ public java.awt.Rectangle[] getRectangles() { if (rectangles != null) { return rectangles; } rectangles = new java.awt.Rectangle[(rect[0] - 1) / 4]; int j = 0; for (int i = 1; i < rect[0]; i += 4) { rectangles[j++] = new java.awt.Rectangle( rect[i], rect[i + 1], rect[i + 2] - rect[i] + 1, rect[i + 3] - rect[i + 1] + 1); } return rectangles; }
/** * Returns bounds of MultiRectArea object */ public java.awt.Rectangle getBounds() { if (bounds != null) { return bounds; } if (isEmpty()) { return bounds = new java.awt.Rectangle(); } int x1 = rect[1]; int y1 = rect[2]; int x2 = rect[3]; int y2 = rect[4]; for (int i = 5; i < rect[0]; i += 4) { int rx1 = rect[i + 0]; int ry1 = rect[i + 1]; int rx2 = rect[i + 2]; int ry2 = rect[i + 3]; if (rx1 < x1) { x1 = rx1; } if (rx2 > x2) { x2 = rx2; } if (ry1 < y1) { y1 = ry1; } if (ry2 > y2) { y2 = ry2; } } return bounds = new java.awt.Rectangle(x1, y1, x2 - x1 + 1, y2 - y1 + 1); }
/** * Tests does rectangle intersect MultiRectArea object */ public bool intersects(double x, double y, double w, double h) { java.awt.Rectangle r = new java.awt.Rectangle(); r.setRect(x, y, w, h); return(intersects(r)); }
void invalidate() { bounds = null; rectangles = null; }
/** * Subtract rectangle object */ public void substract(java.awt.Rectangle rect) { setRect(subtract(this, new MultiRectArea(rect)).rect, false); }
/** * Intersect with Rectangle object */ public void intersect(java.awt.Rectangle rect) { setRect(intersect(this, new MultiRectArea(rect)).rect, false); invalidate(); }
/** * Union with Rectangle object */ public void add(java.awt.Rectangle rect) { setRect(union(this, new MultiRectArea(rect)).rect, false); invalidate(); }