/** @see IcyColorMap#setTypeFromData() */ public void setTypeFromData(boolean notifyChange) { boolean grayColor = true; boolean noColor = true; boolean hasAlpha = false; IcyColorMapType cmType; for (int i = 0; i < MAX_INDEX; i++) { final short r = red.map[i]; final short g = green.map[i]; final short b = blue.map[i]; final short a = alpha.map[i]; grayColor &= (r == g) && (r == b); noColor &= (r == 0) && (g == 0) && (b == 0); hasAlpha |= (a != MAX_LEVEL); } if (noColor && hasAlpha) cmType = IcyColorMapType.ALPHA; else if (grayColor && !noColor) { // set gray map gray.copyFrom(red.map, 0); cmType = IcyColorMapType.GRAY; } else cmType = IcyColorMapType.RGB; if (notifyChange) setType(cmType); else type = cmType; }
/** * Copy data from specified source colormap. * * @param copyAlpha Also copy the alpha information. */ public void copyFrom(IcyColorMap srcColorMap, boolean copyAlpha) { beginUpdate(); try { // copy colormap band red.copyFrom(srcColorMap.red); green.copyFrom(srcColorMap.green); blue.copyFrom(srcColorMap.blue); gray.copyFrom(srcColorMap.gray); if (copyAlpha) alpha.copyFrom(srcColorMap.alpha); // copy type setType(srcColorMap.type); } finally { endUpdate(); } }
@Override public boolean loadFromXML(Node node) { if (node == null) return false; beginUpdate(); try { setName(XMLUtil.getElementValue(node, ID_NAME, "")); setEnabled(XMLUtil.getElementBooleanValue(node, ID_ENABLED, true)); setType(IcyColorMapType.valueOf(XMLUtil.getElementValue(node, ID_TYPE, ""))); boolean result = true; result = result && red.loadFromXML(XMLUtil.getElement(node, ID_RED)); result = result && green.loadFromXML(XMLUtil.getElement(node, ID_GREEN)); result = result && blue.loadFromXML(XMLUtil.getElement(node, ID_BLUE)); result = result && gray.loadFromXML(XMLUtil.getElement(node, ID_GRAY)); result = result && alpha.loadFromXML(XMLUtil.getElement(node, ID_ALPHA)); return result; } finally { endUpdate(); } }