public static Point readPoint(ByteReader reader, boolean hasZ, boolean hasM) {

		double x = reader.readDouble();
		double y = reader.readDouble();

		Point point = new Point(hasZ, hasM, x, y);

		if (hasZ) {
			double z = reader.readDouble();
			point.setZ(z);
		}

		if (hasM) {
			double m = reader.readDouble();
			point.setM(m);
		}

		return point;
	}
public static Point readPoint(ByteReader reader, boolean hasZ, boolean hasM) {

		double x = reader.readDouble();
		double y = reader.readDouble();

		Point point = new Point(hasZ, hasM, x, y);

		if (hasZ) {
			double z = reader.readDouble();
			point.setZ(z);
		}

		if (hasM) {
			double m = reader.readDouble();
			point.setM(m);
		}

		return point;
	}
public static Point readPoint ( ByteReader reader , boolean hasZ , boolean hasM ) { double x = reader . readDouble ( ) ; double y = reader . readDouble ( ) ; Point point = new Point ( hasZ , hasM , x , y ) ; if ( hasZ ) { double z = reader . readDouble ( ) ; point . setZ ( z ) ; } if ( hasM ) { double m = reader . readDouble ( ) ; point . setM ( m ) ; } return point ; }
Read a Point

@param reader
@param hasZ
@param hasM
@return point
Read a Point