litesoft
@ 947
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
// This Source Code is in the Public Domain per: http://unlicense.org package org.litesoft.core.simpletypes; import org.litesoft.core.simpletypes.nonpublic.*; public class PointArea extends CompareSupport<PointArea> implements SimpleType { private static final long serialVersionUID = 1L; private /* final */ int mX; private /* final */ int mY; private /* final */ int mXsize; private /* final */ int mYsize; @SuppressWarnings({"deprecation", "UnusedDeclaration"}) @Deprecated /** for Serialization */ protected PointArea() { } public PointArea( int pX, int pY, int pXsize, int pYsize ) { mX = pX; mY = pY; mXsize = pXsize; mYsize = pYsize; } public int getX() { return mX; } public int getY() { return mY; } public int getXsize() { return mXsize; } public int getYsize() { return mYsize; } public boolean contains( PointXY pPoint ) { return (pPoint != null) && (mXsize != 0) && (mYsize != 0) && // LLcontains( pPoint.getX(), pPoint.getY() ); } public boolean hasOverlapWith( PointArea pThem ) { return (pThem != null) && // (this.mXsize != 0) && (this.mYsize != 0) && (pThem.mXsize != 0) && (pThem.mYsize != 0) && // (this.LLhasOverlapWith( pThem ) || pThem.LLhasOverlapWith( this )); } private boolean LLhasOverlapWith( PointArea pPointArea ) { int zXleft = pPointArea.getX(); int zYtop = pPointArea.getY(); int zXright = zXleft + pPointArea.getXsize() - 1; int zYbot = zYtop + pPointArea.getYsize() - 1; return LLcontains( zXleft, zYtop ) || LLcontains( zXright, zYtop ) || // LLcontains( zXleft, zYbot ) || LLcontains( zXright, zYbot ); } private boolean LLcontains( int pX, int pY ) { return isIn( pX, getX(), getXsize() ) && // isIn( pY, getY(), getYsize() ); } private boolean isIn( int pThemPosition, int pThisStart, int pThisSize ) // pThisSize > 0 { return (pThisStart <= pThemPosition) && (pThemPosition < (pThisStart + pThisSize)); } public boolean equals( Object o ) { return (this == o) || // ((o instanceof PointArea) && equals( (PointArea) o )); } public boolean equals( PointArea them ) { return (this == them) || // ((them != null) // && equal( this.mX, them.mX ) // && equal( this.mY, them.mY ) // && equal( this.mXsize, them.mXsize ) // && equal( this.mYsize, them.mYsize ) // ); } public int hashCode() { return hashCodeEm( calcHashCode( mX ), // calcHashCode( mY ), // calcHashCode( mXsize ), // calcHashCode( mYsize ) ); } public int compareTo( PointArea them ) { return compareEm( compare( this.mX, them.mX ), // compare( this.mY, them.mY ), // compare( this.mXsize, them.mXsize ), // compare( this.mYsize, them.mYsize ) ); } public String toString() { return "(" + toString( mX, mXsize ) + "," + toString( mY, mYsize ) + ")"; } private String toString( int pPos, int pSize ) { return pPos + "x" + pSize; } } |