+ protected int[] slurpTileHeigths(ZipInputStream inStream, int tileSize)
+ throws IOException
+ {
+ int[] heights = new int[tileSize];
+ int dataSize = 2 * tileSize;
+ byte[] buffer = new byte[dataSize];
+ // Read entire file contents into one byte array
+ int alreadyRead = 0;
+ while (alreadyRead < dataSize)
+ {
+ alreadyRead += inStream.read(buffer, alreadyRead, dataSize - alreadyRead);
+ }
+ for (int i = 0; i < tileSize; i++)
+ {
+ // Bytes are signed. Cast high-order to int with sign
+ // extension, and clamp low-order to its unsigned range
+ heights[i] = buffer[2 * i] * 256 + (0xff & buffer[2 * i + 1]);
+ }
+ // Close stream
+ inStream.close();
+ return heights;
+ }
+