/** * creates a new point between the point at the given index * * @param index the index * @param scaling the scaling * * @return true, if a point has been inserted */ public boolean createPointAfter(int index, Scaling scaling) { Point point1 = getPointAt(index); Point point2 = null; if (index < points.indexOf(points.lastElement())) { point2 = getPointAt(index + 1); } final Point newPoint; if (point2 != null) { final double max = Math.max(point1.getSample(), point2.getSample()); final double min = Math.min(point1.getSample(), point2.getSample()); final double middle; middle = scaling.scale(0.5 * (scaling.scaleInverse(min) + scaling.scaleInverse(max))); newPoint = new Point(middle, getCenterColor(point1.getColor(), point2.getColor())); insertPointAfter(index, newPoint); return true; } return false; }
private void setUserDefinedPalette(ColorPaletteDef userPalette) { final String suffix = userPalette.getFirstPoint().getLabel(); final String name; if (suffix != null && suffix.trim().length() > 0) { name = DERIVED_FROM + " " + suffix.trim(); } else { name = UNNAMED; } final ColorPaletteWrapper item = new ColorPaletteWrapper(name, userPalette); insertItemAt(item, 0); setSelectedIndex(0); }
try { final ColorPaletteDef colorPaletteDef = ColorPaletteDef.loadColorPaletteDef(file); colorPaletteDef.getFirstPoint().setLabel(file.getName()); applyColorPaletteDef(colorPaletteDef, getProductSceneView().getRaster(), targetImageInfo); setImageInfoCopy(targetImageInfo);
final ColorPaletteDef.Point[] points = imageInfo.getColorPaletteDef().getPoints(); for (int colorIndex = 0; colorIndex < points.length; colorIndex++) { sampleColorIndexMap.putValue((int) points[colorIndex].getSample(), colorIndex);
new ColorPaletteDef.Point(-1.0, Color.BLUE), new ColorPaletteDef.Point(0.0, Color.WHITE), new ColorPaletteDef.Point(1.0, Color.RED), })); ImageInfo amplGrad = new ImageInfo(new ColorPaletteDef(new ColorPaletteDef.Point[]{ new ColorPaletteDef.Point(0.0, Color.WHITE), new ColorPaletteDef.Point(1.0, Color.RED), })); ImageInfo phaseGrad = new ImageInfo(new ColorPaletteDef(new ColorPaletteDef.Point[]{ new ColorPaletteDef.Point(-Math.PI, Color.WHITE), new ColorPaletteDef.Point(0.0, Color.BLUE), new ColorPaletteDef.Point(+Math.PI, Color.WHITE), }));
for (int i = 0; i < n; i++) { ColorPaletteDef.Point slider = getGradationCurvePointAt(i); labels[i] = String.valueOf(MathUtils.round(slider.getSample(), roundFactor)); labelWidths[i] = fontMetrics.stringWidth(labels[i]);
for (int i = 0; i < numClasses; i++) { Color color = new Color(classRGB[i*3], classRGB[i*3 + 1], classRGB[i*3 + 2]); points[i] = new ColorPaletteDef.Point(i, color, classNames[i]);
Band band3 = product.addBand("b3", "X + Y"); ImageInfo imageInfo = new ImageInfo(new ColorPaletteDef(new ColorPaletteDef.Point[]{ new ColorPaletteDef.Point(1.0, Color.YELLOW), new ColorPaletteDef.Point(2.0, Color.RED), new ColorPaletteDef.Point(3.0, Color.BLUE), }));
Element colorPalettePointElem = new Element(DimapProductConstants.TAG_COLOR_PALETTE_POINT); bandStatisticsElem.addContent(colorPalettePointElem); JDomHelper.addElement(DimapProductConstants.TAG_SAMPLE, point.getSample(), colorPalettePointElem); colorPalettePointElem.addContent(createColorElement(point.getColor()));
final String[] cppTags = createTags(indent + 2, DimapProductConstants.TAG_COLOR_PALETTE_POINT); sXmlW.println(cppTags[0]); sXmlW.printLine(indent + 3, DimapProductConstants.TAG_SAMPLE, point.getSample()); if (StringUtils.isNotNullAndNotEmpty(point.getLabel())) { sXmlW.printLine(indent + 3, DimapProductConstants.TAG_LABEL, point.getLabel()); DimapProductHelpers.printColorTag(indent + 3, DimapProductConstants.TAG_COLOR, point.getColor(), sXmlW); sXmlW.println(cppTags[1]);
return point.getLabel(); } else if (columnIndex == 1) { final Color color = point.getColor(); return color.equals(ImageInfo.NO_COLOR) ? null : color; } else if (columnIndex == 2) { return Double.isNaN(point.getSample()) ? "Uncoded" : (int) point.getSample(); } else if (columnIndex == 3) { final RasterDataNode raster = parentForm.getProductSceneView().getRaster();
final double normalizedSample = normalizeSample(slider.getSample()); double sliderPos = normalizedSample * (palettePos2 - palettePos1); g2d.setPaint(slider.getColor()); g2d.fill(sliderShape); int gray = (slider.getColor().getRed() + slider.getColor().getGreen() + slider.getColor().getBlue()) / 3; g2d.setColor(gray < 128 ? c2 : c1); g2d.draw(sliderShape);
double lastSample = 0; for (int i = 0; i < points.length; i++) { final ColorPaletteDef.Point point = new ColorPaletteDef.Point(); final Color color = propertyMap.getPropertyColor(_PROPERTY_KEY_COLOR + i); double sample = propertyMap.getPropertyDouble(_PROPERTY_KEY_SAMPLE + i); sample = lastSample + 1.0; point.setColor(color); point.setSample(sample); points[i] = point; lastSample = sample;
assertEquals(256, cpd.getNumColors()); assertEquals(3, cpd.getNumPoints()); assertEquals(-1.0, cpd.getPointAt(0).getSample(), 1e-10); assertEquals(+0.0, cpd.getPointAt(1).getSample(), 1e-10); assertEquals(+1.0, cpd.getPointAt(2).getSample(), 1e-10); assertEquals(Color.BLACK, cpd.getPointAt(0).getColor()); assertEquals(Color.GRAY, cpd.getPointAt(1).getColor()); assertEquals(Color.WHITE, cpd.getPointAt(2).getColor()); assertEquals(-1.0, cpd.getPointAt(0).getSample(), 1e-10); assertEquals(+0.5, cpd.getPointAt(1).getSample(), 1e-10); assertEquals(+1.0, cpd.getPointAt(2).getSample(), 1e-10); assertEquals(Color.BLACK, cpd.getPointAt(0).getColor()); assertEquals(Color.GRAY, cpd.getPointAt(1).getColor()); assertEquals(Color.WHITE, cpd.getPointAt(2).getColor()); new Point(100, Color.ORANGE), new Point(200, Color.MAGENTA), new Point(500, Color.BLUE), new Point(600, Color.WHITE) }); assertEquals(4, cpd.getNumPoints()); new Point(100, Color.ORANGE), new Point(200, Color.MAGENTA), new Point(500, Color.BLUE), new Point(600, Color.WHITE) }, 512); assertEquals(4, cpd.getNumPoints());
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; }
public void testImageInfo1Band() { final ColorPaletteDef cpd = new ColorPaletteDef(new ColorPaletteDef.Point[]{ new ColorPaletteDef.Point(100, Color.ORANGE), new ColorPaletteDef.Point(200, Color.MAGENTA), new ColorPaletteDef.Point(500, Color.BLUE), new ColorPaletteDef.Point(600, Color.WHITE) }); ImageInfo imageInfo = new ImageInfo(cpd); assertSame(cpd, imageInfo.getColorPaletteDef()); assertEquals(null, imageInfo.getRgbChannelDef()); assertEquals(4, imageInfo.getColorComponentCount()); assertEquals(ImageInfo.NO_COLOR, imageInfo.getNoDataColor()); assertEquals(ImageInfo.HistogramMatching.None, imageInfo.getHistogramMatching()); assertNotNull(imageInfo.getColors()); assertEquals(4, imageInfo.getColors().length); assertEquals(Color.ORANGE, imageInfo.getColors()[0]); assertEquals(Color.MAGENTA, imageInfo.getColors()[1]); assertEquals(Color.BLUE, imageInfo.getColors()[2]); assertEquals(Color.WHITE, imageInfo.getColors()[3]); imageInfo.setNoDataColor(Color.RED); assertEquals(Color.RED, imageInfo.getNoDataColor()); assertEquals(3, imageInfo.getColorComponentCount()); imageInfo.setHistogramMatching(ImageInfo.HistogramMatching.Equalize); assertEquals(ImageInfo.HistogramMatching.Equalize, imageInfo.getHistogramMatching()); }
@Test public void testCreateLog10ColorPalette_Discrete() { final ColorPaletteDef cpd = new ColorPaletteDef(new ColorPaletteDef.Point[]{ new ColorPaletteDef.Point(1, Color.WHITE), new ColorPaletteDef.Point(10, Color.BLUE), new ColorPaletteDef.Point(100, Color.RED), new ColorPaletteDef.Point(1000, Color.GREEN), }, 7); cpd.setDiscrete(true); final ImageInfo imageInfo = new ImageInfo(cpd); imageInfo.setLogScaled(true); final Color[] palette = ImageManager.createColorPalette(imageInfo); assertNotNull(palette); assertEquals(7, palette.length); assertEquals(new Color(255, 255, 255), palette[0]); assertEquals(new Color(255, 255, 255), palette[1]); assertEquals(new Color(0, 0, 255), palette[2]); assertEquals(new Color(0, 0, 255), palette[3]); assertEquals(new Color(255, 0, 0), palette[4]); assertEquals(new Color(255, 0, 0), palette[5]); assertEquals(new Color(0, 255, 0), palette[6]); } }
@Test public void testCreateLinearColorPalette_Discrete() { final ColorPaletteDef cpd = new ColorPaletteDef(new ColorPaletteDef.Point[]{ new ColorPaletteDef.Point(100, Color.WHITE), new ColorPaletteDef.Point(200, Color.BLUE), new ColorPaletteDef.Point(300, Color.RED), new ColorPaletteDef.Point(400, Color.GREEN), }, 7); cpd.setDiscrete(true); final ImageInfo imageInfo = new ImageInfo(cpd); imageInfo.setLogScaled(false); final Color[] palette = ImageManager.createColorPalette(imageInfo); assertNotNull(palette); assertEquals(7, palette.length); assertEquals(new Color(255, 255, 255), palette[0]); assertEquals(new Color(255, 255, 255), palette[1]); assertEquals(new Color(0, 0, 255), palette[2]); assertEquals(new Color(0, 0, 255), palette[3]); assertEquals(new Color(255, 0, 0), palette[4]); assertEquals(new Color(255, 0, 0), palette[4]); assertEquals(new Color(0, 255, 0), palette[6]); }
@Test public void testCreateLinearColorPalette() { final ColorPaletteDef cpd = new ColorPaletteDef(new ColorPaletteDef.Point[]{ new ColorPaletteDef.Point(100, Color.WHITE), new ColorPaletteDef.Point(200, Color.BLUE), new ColorPaletteDef.Point(300, Color.RED), new ColorPaletteDef.Point(400, Color.GREEN), }, 7); final ImageInfo imageInfo = new ImageInfo(cpd); imageInfo.setLogScaled(false); final Color[] palette = ImageManager.createColorPalette(imageInfo); assertNotNull(palette); assertEquals(7, palette.length); assertEquals(new Color(255, 255, 255), palette[0]); assertEquals(new Color(128, 128, 255), palette[1]); assertEquals(new Color(0, 0, 255), palette[2]); assertEquals(new Color(128, 0, 128), palette[3]); assertEquals(new Color(255, 0, 0), palette[4]); assertEquals(new Color(128, 128, 0), palette[5]); assertEquals(new Color(0, 255, 0), palette[6]); }