static boolean checkApplicability(ColorPaletteDef cpd) { final ColorPaletteDef.Point[] points = cpd.getPoints(); for (ColorPaletteDef.Point point : points) { if (point.getSample() <= 0.0) { return false; } } return true; } }
private TiffShort[] createColorMap(Product product) { final ImageInfo imageInfo = product.getBandAt(0).getImageInfo(null, ProgressMonitor.NULL); final ColorPaletteDef paletteDef = imageInfo.getColorPaletteDef(); final TiffShort[] redColor = new TiffShort[TIFF_COLORMAP_SIZE]; Arrays.fill(redColor, new TiffShort(0)); final TiffShort[] greenColor = new TiffShort[TIFF_COLORMAP_SIZE]; Arrays.fill(greenColor, new TiffShort(0)); final TiffShort[] blueColor = new TiffShort[TIFF_COLORMAP_SIZE]; Arrays.fill(blueColor, new TiffShort(0)); final float factor = 65535.0f / 255.0f; for (ColorPaletteDef.Point point : paletteDef.getPoints()) { final Color color = point.getColor(); final int red = (int) (color.getRed() * factor); final int green = (int) (color.getGreen() * factor); final int blue = (int) (color.getBlue() * factor); int mapIndex = (int) Math.floor(point.getSample()); redColor[mapIndex] = new TiffShort(red); greenColor[mapIndex] = new TiffShort(green); blueColor[mapIndex] = new TiffShort(blue); } final TiffShort[] colorMap = new TiffShort[TIFF_COLORMAP_SIZE * 3]; System.arraycopy(redColor, 0, colorMap, 0, redColor.length); System.arraycopy(greenColor, 0, colorMap, TIFF_COLORMAP_SIZE, greenColor.length); System.arraycopy(blueColor, 0, colorMap, TIFF_COLORMAP_SIZE * 2, blueColor.length); return colorMap; }
private TiffShort[] createColorMap(Product product) { final ImageInfo imageInfo = product.getBandAt(0).getImageInfo(null, ProgressMonitor.NULL); final ColorPaletteDef paletteDef = imageInfo.getColorPaletteDef(); final TiffShort[] redColor = new TiffShort[TIFF_COLORMAP_SIZE]; Arrays.fill(redColor, new TiffShort(0)); final TiffShort[] greenColor = new TiffShort[TIFF_COLORMAP_SIZE]; Arrays.fill(greenColor, new TiffShort(0)); final TiffShort[] blueColor = new TiffShort[TIFF_COLORMAP_SIZE]; Arrays.fill(blueColor, new TiffShort(0)); final float factor = 65535.0f / 255.0f; for (ColorPaletteDef.Point point : paletteDef.getPoints()) { final Color color = point.getColor(); final int red = (int) (color.getRed() * factor); final int green = (int) (color.getGreen() * factor); final int blue = (int) (color.getBlue() * factor); int mapIndex = (int) Math.floor(point.getSample()); redColor[mapIndex] = new TiffShort(red); greenColor[mapIndex] = new TiffShort(green); blueColor[mapIndex] = new TiffShort(blue); } final TiffShort[] colorMap = new TiffShort[TIFF_COLORMAP_SIZE * 3]; System.arraycopy(redColor, 0, colorMap, 0, redColor.length); System.arraycopy(greenColor, 0, colorMap, TIFF_COLORMAP_SIZE, greenColor.length); System.arraycopy(blueColor, 0, colorMap, TIFF_COLORMAP_SIZE *2 , blueColor.length); return colorMap; }
@Override public void preEncode(ProfileWriteContext ctx, Product p) throws IOException { NFileWriteable fileWriteable = ctx.getNetcdfFileWriteable(); for (Band band : p.getBands()) { ImageInfo imageInfo = band.getImageInfo(); if (imageInfo != null) { String variableName = ReaderUtils.getVariableName(band); NVariable variable = fileWriteable.findVariable(variableName); if (variable != null) { writeImageInfo(imageInfo.getColorPaletteDef().getPoints(), variable); } } } }
private void testPalette(ColorPaletteDef palette, Color[] colors) { assertEquals(colors.length, palette.getPoints().length); for (int i = 0; i < colors.length; i++) { assertEquals(colors[i], palette.getPointAt(i).getColor()); } }
/** * Stores this color palette definition in the given file * * @param colorPaletteDef thje color palette definition * @param file the file * * @throws IOException if an I/O error occurs */ public static void storeColorPaletteDef(ColorPaletteDef colorPaletteDef, File file) throws IOException { final ColorPaletteDef.Point[] points = colorPaletteDef.getPoints(); final PropertyMap propertyMap = new PropertyMap(); final int numPoints = points.length; propertyMap.setPropertyInt(_PROPERTY_KEY_NUM_POINTS, numPoints); propertyMap.setPropertyBool(_PROPERTY_KEY_AUTODISTRIBUTE, colorPaletteDef.isAutoDistribute()); for (int i = 0; i < numPoints; i++) { propertyMap.setPropertyColor(_PROPERTY_KEY_COLOR + i, points[i].getColor()); propertyMap.setPropertyDouble(_PROPERTY_KEY_SAMPLE + i, points[i].getSample()); } propertyMap.store(file, "BEAM Colour Palette Definition File"); /*I18N*/ }
private static PlanarImage createByteIndexedImage(RasterDataNode raster, RenderedImage sourceImage, ImageInfo imageInfo) { ColorPaletteDef colorPaletteDef = imageInfo.getColorPaletteDef(); final double minSample = colorPaletteDef.getMinDisplaySample(); final double maxSample = colorPaletteDef.getMaxDisplaySample(); if (isClassificationBand(raster)) { final IntMap sampleColorIndexMap = new IntMap((int) minSample - 1, 4098); final ColorPaletteDef.Point[] points = colorPaletteDef.getPoints(); for (int colorIndex = 0; colorIndex < points.length; colorIndex++) { sampleColorIndexMap.putValue((int) getSample(points[colorIndex]), colorIndex); } final int undefinedIndex = colorPaletteDef.getNumPoints(); return createIndexedImage(sourceImage, sampleColorIndexMap, undefinedIndex); } else { return createByteIndexedImage(raster, sourceImage, minSample, maxSample, 1.0); } }
private static void transferPoints(ColorPaletteDef sourceCPD, double minSample, double maxSample, boolean autoDistribute, ColorPaletteDef targetCPD) { if (autoDistribute || sourceCPD.isAutoDistribute()) { alignNumPoints(sourceCPD, targetCPD); double minDisplaySample = sourceCPD.getMinDisplaySample(); double maxDisplaySample = sourceCPD.getMaxDisplaySample(); double delta1 = (maxSample > minSample) ? maxSample - minSample : 1.0; double delta2 = (maxDisplaySample > minDisplaySample) ? maxDisplaySample - minDisplaySample : 1.0; double b = delta1 / delta2; double a = minSample - minDisplaySample * b; for (int i = 0; i < sourceCPD.getNumPoints(); i++) { targetCPD.getPointAt(i).setSample(a + b * sourceCPD.getPointAt(i).getSample()); targetCPD.getPointAt(i).setColor(sourceCPD.getPointAt(i).getColor()); targetCPD.getPointAt(i).setLabel(sourceCPD.getPointAt(i).getLabel()); } } else { targetCPD.setPoints(sourceCPD.getPoints().clone()); } }
} else { final IntMap sampleColorIndexMap = new IntMap((int) minSample - 1, 4098); final ColorPaletteDef.Point[] points = imageInfo.getColorPaletteDef().getPoints(); for (int colorIndex = 0; colorIndex < points.length; colorIndex++) { sampleColorIndexMap.putValue((int) points[colorIndex].getSample(), colorIndex);