905 * to the bounds of this {@code Rectangle}.
906 * <p>
907 * If this {@code Rectangle} has any dimension less than zero,
908 * the rules for <a href=#NonExistent>non-existent</a>
909 * rectangles apply.
910 * In that case, the new bounds of this {@code Rectangle} will
911 * have a location equal to the specified coordinates and
912 * width and height equal to zero.
913 * <p>
914 * After adding a point, a call to {@code contains} with the
915 * added point as an argument does not necessarily return
916 * {@code true}. The {@code contains} method does not
917 * return {@code true} for points on the right or bottom
918 * edges of a {@code Rectangle}. Therefore, if the added point
919 * falls on the right or bottom edge of the enlarged
920 * {@code Rectangle}, {@code contains} returns
921 * {@code false} for that point.
922 * If the specified point must be contained within the new
923 * {@code Rectangle}, a 1x1 rectangle should be added instead:
924 * <pre>
925 * r.add(newx, newy, 1, 1);
926 * </pre>
927 * @param newx the X coordinate of the new point
928 * @param newy the Y coordinate of the new point
929 */
930 public void add(int newx, int newy) {
931 if ((width | height) < 0) {
932 this.x = newx;
933 this.y = newy;
934 this.width = this.height = 0;
935 return;
936 }
937 int x1 = this.x;
938 int y1 = this.y;
939 long x2 = this.width;
940 long y2 = this.height;
941 x2 += x1;
942 y2 += y1;
943 if (x1 > newx) x1 = newx;
944 if (y1 > newy) y1 = newy;
945 if (x2 < newx) x2 = newx;
956 * {@code Rectangle}.
957 * <p>
958 * If this {@code Rectangle} has any dimension less than zero,
959 * the rules for <a href=#NonExistent>non-existent</a>
960 * rectangles apply.
961 * In that case, the new bounds of this {@code Rectangle} will
962 * have a location equal to the coordinates of the specified
963 * {@code Point} and width and height equal to zero.
964 * <p>
965 * After adding a {@code Point}, a call to {@code contains}
966 * with the added {@code Point} as an argument does not
967 * necessarily return {@code true}. The {@code contains}
968 * method does not return {@code true} for points on the right
969 * or bottom edges of a {@code Rectangle}. Therefore if the added
970 * {@code Point} falls on the right or bottom edge of the
971 * enlarged {@code Rectangle}, {@code contains} returns
972 * {@code false} for that {@code Point}.
973 * If the specified point must be contained within the new
974 * {@code Rectangle}, a 1x1 rectangle should be added instead:
975 * <pre>
976 * r.add(pt.x, pt.y, 1, 1);
977 * </pre>
978 * @param pt the new {@code Point} to add to this
979 * {@code Rectangle}
980 */
981 public void add(Point pt) {
982 add(pt.x, pt.y);
983 }
984
985 /**
986 * Adds a {@code Rectangle} to this {@code Rectangle}.
987 * The resulting {@code Rectangle} is the union of the two
988 * rectangles.
989 * <p>
990 * If either {@code Rectangle} has any dimension less than 0, the
991 * result will have the dimensions of the other {@code Rectangle}.
992 * If both {@code Rectangle}s have at least one dimension less
993 * than 0, the result will have at least one dimension less than 0.
994 * <p>
995 * If either {@code Rectangle} has one or both dimensions equal
996 * to 0, the result along those axes with 0 dimensions will be
|
905 * to the bounds of this {@code Rectangle}.
906 * <p>
907 * If this {@code Rectangle} has any dimension less than zero,
908 * the rules for <a href=#NonExistent>non-existent</a>
909 * rectangles apply.
910 * In that case, the new bounds of this {@code Rectangle} will
911 * have a location equal to the specified coordinates and
912 * width and height equal to zero.
913 * <p>
914 * After adding a point, a call to {@code contains} with the
915 * added point as an argument does not necessarily return
916 * {@code true}. The {@code contains} method does not
917 * return {@code true} for points on the right or bottom
918 * edges of a {@code Rectangle}. Therefore, if the added point
919 * falls on the right or bottom edge of the enlarged
920 * {@code Rectangle}, {@code contains} returns
921 * {@code false} for that point.
922 * If the specified point must be contained within the new
923 * {@code Rectangle}, a 1x1 rectangle should be added instead:
924 * <pre>
925 * r.add(new Rectangle(newx, newy, 1, 1));
926 * </pre>
927 * @param newx the X coordinate of the new point
928 * @param newy the Y coordinate of the new point
929 */
930 public void add(int newx, int newy) {
931 if ((width | height) < 0) {
932 this.x = newx;
933 this.y = newy;
934 this.width = this.height = 0;
935 return;
936 }
937 int x1 = this.x;
938 int y1 = this.y;
939 long x2 = this.width;
940 long y2 = this.height;
941 x2 += x1;
942 y2 += y1;
943 if (x1 > newx) x1 = newx;
944 if (y1 > newy) y1 = newy;
945 if (x2 < newx) x2 = newx;
956 * {@code Rectangle}.
957 * <p>
958 * If this {@code Rectangle} has any dimension less than zero,
959 * the rules for <a href=#NonExistent>non-existent</a>
960 * rectangles apply.
961 * In that case, the new bounds of this {@code Rectangle} will
962 * have a location equal to the coordinates of the specified
963 * {@code Point} and width and height equal to zero.
964 * <p>
965 * After adding a {@code Point}, a call to {@code contains}
966 * with the added {@code Point} as an argument does not
967 * necessarily return {@code true}. The {@code contains}
968 * method does not return {@code true} for points on the right
969 * or bottom edges of a {@code Rectangle}. Therefore if the added
970 * {@code Point} falls on the right or bottom edge of the
971 * enlarged {@code Rectangle}, {@code contains} returns
972 * {@code false} for that {@code Point}.
973 * If the specified point must be contained within the new
974 * {@code Rectangle}, a 1x1 rectangle should be added instead:
975 * <pre>
976 * r.add(new Rectangle(pt.x, pt.y, 1, 1));
977 * </pre>
978 * @param pt the new {@code Point} to add to this
979 * {@code Rectangle}
980 */
981 public void add(Point pt) {
982 add(pt.x, pt.y);
983 }
984
985 /**
986 * Adds a {@code Rectangle} to this {@code Rectangle}.
987 * The resulting {@code Rectangle} is the union of the two
988 * rectangles.
989 * <p>
990 * If either {@code Rectangle} has any dimension less than 0, the
991 * result will have the dimensions of the other {@code Rectangle}.
992 * If both {@code Rectangle}s have at least one dimension less
993 * than 0, the result will have at least one dimension less than 0.
994 * <p>
995 * If either {@code Rectangle} has one or both dimensions equal
996 * to 0, the result along those axes with 0 dimensions will be
|