Point.java revision 44bc17c6b517aef35a390c81b5aa79c4f284f744
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.graphics; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1944bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackbornimport android.os.Parcel; 2044bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackbornimport android.os.Parcelable; 2144bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Point holds two integer coordinates 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2644bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackbornpublic class Point implements Parcelable { 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int x; 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int y; 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Point() {} 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Point(int x, int y) { 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.x = x; 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.y = y; 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Point(Point src) { 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.x = src.x; 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.y = src.y; 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set the point's x and y coordinates 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void set(int x, int y) { 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.x = x; 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.y = y; 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Negate the point's coordinates 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void negate() { 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project x = -x; 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project y = -y; 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Offset the point's coordinates by dx, dy 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void offset(int dx, int dy) { 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project x += dx; 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project y += dy; 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns true if the point's coordinates equal (x,y) 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final boolean equals(int x, int y) { 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this.x == x && this.y == y; 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override public boolean equals(Object o) { 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (o instanceof Point) { 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Point p = (Point) o; 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this.x == p.x && this.y == p.y; 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override public int hashCode() { 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return x * 32713 + y; 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override public String toString() { 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return "Point(" + x + ", " + y+ ")"; 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8844bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn 8944bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn /** 9044bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn * Parcelable interface methods 9144bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn */ 9244bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn @Override 9344bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn public int describeContents() { 9444bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn return 0; 9544bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn } 9644bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn 9744bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn /** 9844bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn * Write this point to the specified parcel. To restore a point from 9944bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn * a parcel, use readFromParcel() 10044bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn * @param out The parcel to write the point's coordinates into 10144bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn */ 10244bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn @Override 10344bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn public void writeToParcel(Parcel out, int flags) { 10444bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn out.writeInt(x); 10544bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn out.writeInt(y); 10644bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn } 10744bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn 10844bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn public static final Parcelable.Creator<Point> CREATOR = new Parcelable.Creator<Point>() { 10944bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn /** 11044bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn * Return a new point from the data in the specified parcel. 11144bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn */ 11244bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn public Point createFromParcel(Parcel in) { 11344bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn Point r = new Point(); 11444bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn r.readFromParcel(in); 11544bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn return r; 11644bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn } 11744bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn 11844bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn /** 11944bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn * Return an array of rectangles of the specified size. 12044bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn */ 12144bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn public Point[] newArray(int size) { 12244bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn return new Point[size]; 12344bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn } 12444bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn }; 12544bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn 12644bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn /** 12744bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn * Set the point's coordinates from the data stored in the specified 12844bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn * parcel. To write a point to a parcel, call writeToParcel(). 12944bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn * 13044bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn * @param in The parcel to read the point's coordinates from 13144bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn */ 13244bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn public void readFromParcel(Parcel in) { 13344bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn x = in.readInt(); 13444bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn y = in.readInt(); 13544bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn } 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 137