Пример #1
0
            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);
            }
Пример #2
0
 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)
 {
 }
Пример #3
0
            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);
            }
Пример #4
0
 /**
  * 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$
 }
Пример #5
0
        /**
         * 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));
        }
Пример #6
0
        /**
         * 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);
        }
Пример #7
0
 void invalidate()
 {
     bounds = null;
     rectangles = null;
 }
Пример #8
0
 /**
  * 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);
 }
Пример #9
0
        /**
         * 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;
        }
Пример #10
0
        /**
         * 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);
        }
Пример #11
0
 /**
  * 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));
 }
Пример #12
0
 void invalidate()
 {
     bounds     = null;
     rectangles = null;
 }
Пример #13
0
 /**
  * Subtract rectangle object
  */
 public void substract(java.awt.Rectangle rect)
 {
     setRect(subtract(this, new MultiRectArea(rect)).rect, false);
 }
Пример #14
0
 /**
  * Intersect with Rectangle object
  */
 public void intersect(java.awt.Rectangle rect)
 {
     setRect(intersect(this, new MultiRectArea(rect)).rect, false);
     invalidate();
 }
Пример #15
0
 /**
  * Union with Rectangle object
  */
 public void add(java.awt.Rectangle rect)
 {
     setRect(union(this, new MultiRectArea(rect)).rect, false);
     invalidate();
 }