package ini.trakem2.display.paint; import java.awt.Paint; import java.awt.PaintContext; import java.awt.Rectangle; import java.awt.RenderingHints; import java.awt.Transparency; import java.awt.color.ColorSpace; import java.awt.geom.AffineTransform; import java.awt.geom.Rectangle2D; import java.awt.image.ColorModel; import java.awt.image.ComponentColorModel; import java.awt.image.DataBuffer; public final class USHORTPaint implements Paint { private final short[] value; private final ComponentColorModel ccm = new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_GRAY), new int[]{16}, false, false, Transparency.OPAQUE, DataBuffer.TYPE_USHORT); public USHORTPaint(final short value) { this.value = new short[]{value}; } /** Will alter the value for this instance and for all {@link USHORTPaintContext} instances * returned from {@link USHORTPaint#createContext(ColorModel, Rectangle, Rectangle2D, AffineTransform, RenderingHints)}. */ public void setValue(final short value) { this.value[0] = value; } @Override public int getTransparency() { return Transparency.OPAQUE; } /** Return a new {@link USHORTPaintContext} that shares the value and ccm fields with this instance. */ @Override public PaintContext createContext( ColorModel cm, Rectangle deviceBounds, Rectangle2D userBounds, AffineTransform xform, RenderingHints hints) { return new USHORTPaintContext(this.ccm, this.value); } public ComponentColorModel getComponentColorModel() { return this.ccm; } }