package mil.nga.giat.geowave.adapter.raster.adapter.merge.nodata;
import java.nio.ByteBuffer;
import java.util.HashSet;
import java.util.Set;
public class NoDataBySampleIndex implements
NoDataMetadata
{
private Set<SampleIndex> noDataIndexSet;
protected NoDataBySampleIndex() {
super();
}
public NoDataBySampleIndex(
final Set<SampleIndex> noDataIndexSet ) {
this.noDataIndexSet = noDataIndexSet;
}
@Override
public byte[] toBinary() {
final ByteBuffer buf = ByteBuffer.allocate(noDataIndexSet.size() * 12);
for (final SampleIndex i : noDataIndexSet) {
buf.putInt(i.getX());
buf.putInt(i.getY());
buf.putInt(i.getBand());
}
return buf.array();
}
@Override
public void fromBinary(
final byte[] bytes ) {
final ByteBuffer buf = ByteBuffer.wrap(bytes);
final int size = bytes.length / 12;
noDataIndexSet = new HashSet<SampleIndex>(
size);
for (int i = 0; i < size; i++) {
final int x = buf.getInt();
final int y = buf.getInt();
final int b = buf.getInt();
noDataIndexSet.add(new SampleIndex(
x,
y,
b));
}
}
@Override
public boolean isNoData(
final SampleIndex index,
final double sampleValue ) {
return noDataIndexSet.contains(index);
}
@Override
public Set<SampleIndex> getNoDataIndices() {
return noDataIndexSet;
}
}