/** * */ package org.geotools.arcsde.raster.io; public final class TileInfo { private long bandId; private byte[] bitmaskData; private int numPixelsRead; private int columnIndex; private int rowIndex; private byte[] tileDataBytes; private short[] tileDataShorts; private int[] tileDataInts; private float[] tileDataFloats; private double[] tileDataDoubles; private final int numPixels; private Number noData; public TileInfo(int pixelsPerTile) { this.numPixels = pixelsPerTile; } public Long getBandId() { return bandId; } public byte[] getBitmaskData() { return bitmaskData; } /** * @return number of pixels in the tile data */ public int getNumPixels() { return numPixels; } /** * @return number of pixels actually read. It shall be either {@code 0} or equal to * {@link #getNumPixels()} */ public int getNumPixelsRead() { return numPixelsRead; } public int getColumnIndex() { return columnIndex; } public int getRowIndex() { return rowIndex; } public void setTileData(final byte[] pixelData) { this.tileDataBytes = pixelData; } public void setTileData(short[] pixelData) { this.tileDataShorts = pixelData; } public void setTileData(int[] pixelData) { this.tileDataInts = pixelData; } public void setTileData(float[] pixelData) { this.tileDataFloats = pixelData; } public void setTileData(double[] pixelData) { this.tileDataDoubles = pixelData; } public byte[] getTileDataAsBytes() { if (tileDataBytes == null) { tileDataBytes = new byte[numPixels]; } return tileDataBytes; } public short[] getTileDataAsUnsignedShorts() { if (tileDataShorts == null) { tileDataShorts = new short[numPixels]; } return tileDataShorts; } public short[] getTileDataAsShorts() { if (tileDataShorts == null) { tileDataShorts = new short[numPixels]; } return tileDataShorts; } public int[] getTileDataAsIntegers() { if (tileDataInts == null) { tileDataInts = new int[numPixels]; } return tileDataInts; } public float[] getTileDataAsFloats() { if (tileDataFloats == null) { tileDataFloats = new float[numPixels]; } return tileDataFloats; } public double[] getTileDataAsDoubles() { if (tileDataDoubles == null) { tileDataDoubles = new double[numPixels]; } return tileDataDoubles; } public void setBandId(final long bandId) { this.bandId = bandId; } public void setColumnIndex(final int colIndex) { this.columnIndex = colIndex; } public void setRowIndex(final int rowIndex) { this.rowIndex = rowIndex; } public void setNumPixelsRead(final int numPixelsRead) { this.numPixelsRead = numPixelsRead; } public void setBitmaskData(final byte[] bitMaskData) { this.bitmaskData = bitMaskData; } public void setNoDataValue(final Number noData) { this.noData = noData; } public Number getNoDataValue() { return this.noData; } public boolean hasNoDataPixels() { return bitmaskData.length > 0; } }