Skip to content

Commit

Permalink
Share method back in ImageWorker
Browse files Browse the repository at this point in the history
  • Loading branch information
aaime committed Nov 2, 2018
1 parent 86e575c commit f044995
Showing 1 changed file with 3 additions and 62 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@
import it.geosolutions.imageio.maskband.DatasetLayout;
import it.geosolutions.imageio.utilities.ImageIOUtilities;
import it.geosolutions.jaiext.JAIExt;
import it.geosolutions.jaiext.lookup.LookupTable;
import it.geosolutions.jaiext.lookup.LookupTableFactory;
import it.geosolutions.jaiext.utilities.ImageLayout2;
import java.awt.*;
import java.awt.color.ColorSpace;
Expand Down Expand Up @@ -53,8 +51,6 @@
import org.geotools.geometry.GeneralEnvelope;
import org.geotools.geometry.jts.ReferencedEnvelope;
import org.geotools.image.ImageWorker;
import org.geotools.metadata.i18n.ErrorKeys;
import org.geotools.metadata.i18n.Errors;
import org.geotools.parameter.DefaultParameterDescriptorGroup;
import org.geotools.parameter.ParameterGroup;
import org.geotools.referencing.CRS;
Expand Down Expand Up @@ -85,26 +81,6 @@
*/
public class CoverageViewReader implements GridCoverage2DReader {

static final byte[][] IDENTITY_BYTE;
static final short[][] IDENTITY_SHORT;

static {
final byte[][] data = new byte[1][256];
for (int i = 0; i < 256; i++) {
data[0][i] = (byte) (0xFF & i);
}

IDENTITY_BYTE = data;
}

static {
final short[][] data = new short[1][65535];
for (int i = 0; i < 65535; i++) {
data[0][i] = (short) (0xFFFF & i);
}
IDENTITY_SHORT = data;
}

private static final int HETEROGENEOUS_RASTER_GUTTER = 10;

public static final FilterFactory2 FF = CommonFactoryFinder.getFilterFactory2();
Expand Down Expand Up @@ -520,44 +496,9 @@ private GridCoverage2D prepareForBandMerge(GridCoverage2D coverage) {
RenderedImage ri = coverage.getRenderedImage();
SampleModel sampleModel = ri.getSampleModel();
if (sampleModel.getNumBands() == 1 && ri.getColorModel() instanceof IndexColorModel) {
LookupTable lut = null;
int dataType = sampleModel.getDataType();
switch (dataType) {
case DataBuffer.TYPE_BYTE:
lut = LookupTableFactory.create(IDENTITY_BYTE);
break;

case DataBuffer.TYPE_USHORT:
lut =
LookupTableFactory.create(
IDENTITY_SHORT, dataType == DataBuffer.TYPE_SHORT);
break;

default:
throw new IllegalArgumentException(
Errors.format(ErrorKeys.ILLEGAL_ARGUMENT_$2, "datatype", dataType));
}

// prepare color model and sample model
final ComponentColorModel destinationColorModel =
new ComponentColorModel(
ColorSpace.getInstance(ColorSpace.CS_GRAY),
false,
false,
Transparency.OPAQUE,
dataType);
final SampleModel destinationSampleModel =
destinationColorModel.createCompatibleSampleModel(
sampleModel.getWidth(), sampleModel.getHeight());
ImageLayout layout = new ImageLayout(ri);
layout.setColorModel(destinationColorModel);
layout.setSampleModel(destinationSampleModel);

// perform the lookup
ImageWorker iw = new ImageWorker(ri);
iw.setRenderingHint(JAI.KEY_IMAGE_LAYOUT, layout);
iw.lookup(lut);
RenderedImage formatted = iw.getRenderedImage();
ImageWorker worker = new ImageWorker(ri);
worker.removeIndexColorModel();
RenderedImage formatted = worker.getRenderedImage();

return new GridCoverageFactory()
.create(
Expand Down

0 comments on commit f044995

Please sign in to comment.