/*
* Copyright (C) 2010 Brockmann Consult GmbH (info@brockmann-consult.de)
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 3 of the License, or (at your option)
* any later version.
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, see http://www.gnu.org/licenses/
*/
package com.bc.ceres.jai;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.image.DataBuffer;
import java.awt.image.Raster;
import java.awt.image.SampleModel;
import java.awt.image.WritableRaster;
/**
* A {@link Raster} representing a tile with no interpretable data. Note
* that the sole purpose of this class is to mark tiles, which are known
* to contain no interpretable data.
*
* @author Ralf Quast
* @version $Revision: $ $Date: $
* @since Ceres 0.10
*/
public final class NoDataRaster extends Raster {
private final Raster delegate;
/**
* Constructs a NoDataRaster with the SampleModel, DataBuffer and origin
* of the given Raster
*
* @param raster The Raster representing a tile with no interpretable
* data.
*/
public NoDataRaster(Raster raster) {
super(raster.getSampleModel(), raster.getDataBuffer(),
new Point(raster.getSampleModelTranslateX(), raster.getSampleModelTranslateY()));
this.delegate = raster;
}
@Override
public final Raster getParent() {
return delegate.getParent();
}
@Override
public final WritableRaster createCompatibleWritableRaster() {
return delegate.createCompatibleWritableRaster();
}
@Override
public final WritableRaster createCompatibleWritableRaster(int w, int h) {
return delegate.createCompatibleWritableRaster(w, h);
}
@Override
public final WritableRaster createCompatibleWritableRaster(Rectangle rect) {
return delegate.createCompatibleWritableRaster(rect);
}
@Override
public final WritableRaster createCompatibleWritableRaster(int x, int y, int w, int h) {
return delegate.createCompatibleWritableRaster(x, y, w, h);
}
@Override
public final Raster createChild(int parentX, int parentY, int width, int height, int childMinX, int childMinY,
int[] bandList) {
return delegate.createChild(parentX, parentY, width, height, childMinX, childMinY, bandList);
}
@Override
public final NoDataRaster createTranslatedChild(int childMinX, int childMinY) {
final Raster child = delegate.createTranslatedChild(childMinX, childMinY);
if (child instanceof NoDataRaster) {
return (NoDataRaster) child;
}
return new NoDataRaster(child);
}
@Override
public final Rectangle getBounds() {
return delegate.getBounds();
}
@Override
public final DataBuffer getDataBuffer() {
return delegate.getDataBuffer();
}
@Override
public final SampleModel getSampleModel() {
return delegate.getSampleModel();
}
@Override
public final Object getDataElements(int x, int y, Object outData) {
return delegate.getDataElements(x, y, outData);
}
@Override
public final Object getDataElements(int x, int y, int w, int h, Object outData) {
return delegate.getDataElements(x, y, w, h, outData);
}
@Override
public final int[] getPixel(int x, int y, int[] iArray) {
return delegate.getPixel(x, y, iArray);
}
@Override
public final float[] getPixel(int x, int y, float[] fArray) {
return delegate.getPixel(x, y, fArray);
}
@Override
public final double[] getPixel(int x, int y, double[] dArray) {
return delegate.getPixel(x, y, dArray);
}
@Override
public final int[] getPixels(int x, int y, int w, int h, int[] iArray) {
return delegate.getPixels(x, y, w, h, iArray);
}
@Override
public final float[] getPixels(int x, int y, int w, int h, float[] fArray) {
return delegate.getPixels(x, y, w, h, fArray);
}
@Override
public final double[] getPixels(int x, int y, int w, int h, double[] dArray) {
return delegate.getPixels(x, y, w, h, dArray);
}
@Override
public final int getSample(int x, int y, int b) {
return delegate.getSample(x, y, b);
}
@Override
public final float getSampleFloat(int x, int y, int b) {
return delegate.getSampleFloat(x, y, b);
}
@Override
public final double getSampleDouble(int x, int y, int b) {
return delegate.getSampleDouble(x, y, b);
}
@Override
public final int[] getSamples(int x, int y, int w, int h, int b, int[] iArray) {
return delegate.getSamples(x, y, w, h, b, iArray);
}
@Override
public final float[] getSamples(int x, int y, int w, int h, int b, float[] fArray) {
return delegate.getSamples(x, y, w, h, b, fArray);
}
@Override
public final double[] getSamples(int x, int y, int w, int h, int b, double[] dArray) {
return delegate.getSamples(x, y, w, h, b, dArray);
}
}