ExpectedMask(Mask mask) { this(mask.getName(), mask.getImageType().getClass(), mask.getImageColor(), mask.getDescription()); }
public static Mask create(String name, String description, int width, int height, String expression, Color color, double transparency) { final Mask mask = new Mask(name, width, height, BandMathsType.INSTANCE); if (description != null) { mask.setDescription(description); } mask.setImageColor(color); mask.setImageTransparency(transparency); BandMathsType.setExpression(mask, expression); return mask; }
@Override public void actionPerformed(ActionEvent e) { Mask selectedMask = getMaskForm().getSelectedMask(); final Mask mask = createNewMask(selectedMask.getImageType()); mask.setName("Copy_of_" + selectedMask.getName()); mask.setDescription(selectedMask.getDescription()); PropertyContainer selectedConfig = selectedMask.getImageConfig(); Property[] models = selectedConfig.getProperties(); for (Property model : models) { mask.getImageConfig().setValue(model.getDescriptor().getName(), model.getValue()); } getMaskForm().addMask(mask); }
@Override public void propertyChange(PropertyChangeEvent evt) { if (evt.getOldValue().equals(mask.getDescription())) { mask.setDescription((String) evt.getNewValue()); } else { // description my have been set by user, ignore change } } });
private void copyMasks(Product sourceProduct, boolean rename, String pattern) { ProductNodeGroup<Mask> maskGroup = sourceProduct.getMaskGroup(); final Mask[] masks = maskGroup.toArray(new Mask[maskGroup.getNodeCount()]); for (Mask mask : masks) { Mask.ImageType imageType = mask.getImageType(); final Mask newmask = new Mask(mask.getName(), targetProduct.getSceneRasterWidth(), targetProduct.getSceneRasterHeight(), imageType); newmask.setDescription(mask.getDescription()); for (Property property : mask.getImageConfig().getProperties()) { newmask.getImageConfig().setValue(property.getDescriptor().getName(), property.getValue()); } if (rename) { newmask.setName(pattern.replace(SOURCE_NAME_REFERENCE, mask.getName())); for (final Band targetBand : targetProduct.getBands()) { RasterDataNode srcRDN = sourceRasterMap.get(targetBand); if (srcRDN != null) { newmask.updateExpression( BandArithmetic.createExternalName(srcRDN.getName()), BandArithmetic.createExternalName(targetBand.getName())); } } } targetProduct.getMaskGroup().add(newmask); } }
@Override public Mask transferMask(Mask mask, Product product) { if (canTransferMask(mask, product)) { final String originalMaskName = mask.getName(); final String maskName = getAvailableMaskName(originalMaskName, product.getMaskGroup()); final int w = product.getSceneRasterWidth(); final int h = product.getSceneRasterHeight(); final Mask newMask = new Mask(maskName, w, h, this); newMask.setDescription(mask.getDescription()); setImageStyle(newMask.getImageConfig(), mask.getImageColor(), mask.getImageTransparency()); setRasterName(newMask, getRasterName(mask)); setMinimum(newMask, getMinimum(mask)); setMaximum(newMask, getMaximum(mask)); product.getMaskGroup().add(newMask); return newMask; } return null; }
@Test public void testMask() { Mask.ImageType imageType = new BufferedImageType(); Mask mask = new Mask("WATER", 256, 128, imageType); assertEquals("WATER", mask.getName()); assertEquals(256, mask.getRasterWidth()); assertEquals(128, mask.getRasterHeight()); assertSame(imageType, mask.getImageType()); PropertyContainer imageConfig = mask.getImageConfig(); assertNotNull(imageConfig); assertEquals(Color.RED, mask.getImageConfig().getValue("color")); assertEquals(0.5, (double)mask.getImageConfig().getValue("transparency"), 1.0e-6); MultiLevelImage image = mask.getSourceImage(); assertNotNull(image); assertSame(image, mask.getGeophysicalImage()); assertSame(null, mask.getValidMaskImage()); }
@Test public void testMaskCreation() throws IOException, JDOMException { final DimapPersistable persistable = new TestMaskPersistable(); final InputStream resourceStream = getClass().getResourceAsStream("TestMask.xml"); final Document document = new SAXBuilder().build(resourceStream); final Product product = new Product("P", "T", 10, 10); final Mask maskFromXml = (Mask) persistable.createObjectFromXml(document.getRootElement(), product); assertNotNull(maskFromXml); assertEquals(TestImageType.class, maskFromXml.getImageType().getClass()); assertEquals(10, maskFromXml.getSceneRasterWidth()); assertEquals(10, maskFromXml.getSceneRasterHeight()); assertEquals("Bibo", maskFromXml.getName()); assertEquals("A big yellow bird is in the pixel.", maskFromXml.getDescription()); assertEquals(0.7, maskFromXml.getImageTransparency(), 0.0); assertEquals(new Color(17, 11, 67), maskFromXml.getImageColor()); }
private static Band createBandCopy(Product targetProduct, Mask mask) { String bandName = getAvaliableBandName("mask_" + mask.getName(), targetProduct); String maskName = getAvailableMaskName(mask.getName(), targetProduct.getMaskGroup()); int dataType = mask.getDataType(); Band band = targetProduct.addBand(bandName, dataType); String description = mask.getDescription() + " (from " + mask.getProduct().getDisplayName() + ")"; targetProduct.addMask(maskName, bandName, description, mask.getImageColor(), mask.getImageTransparency()); return band; }
@Override public final Element createXmlFromObject(Object object) { final Mask mask = (Mask) object; final Element root = new Element(TAG_MASK); root.setAttribute(ATTRIB_TYPE, mask.getImageType().getName()); final PropertyContainer config = mask.getImageConfig(); root.addContent(createElement(TAG_NAME, mask.getName())); root.addContent(createElement(TAG_DESCRIPTION, mask.getDescription())); final Element colorElement = new Element(TAG_COLOR); final Color color = (Color) config.getValue(Mask.ImageType.PROPERTY_NAME_COLOR); colorElement.setAttribute(ATTRIB_RED, String.valueOf(color.getRed())); colorElement.setAttribute(ATTRIB_GREEN, String.valueOf(color.getGreen())); colorElement.setAttribute(ATTRIB_BLUE, String.valueOf(color.getBlue())); colorElement.setAttribute(ATTRIB_ALPHA, String.valueOf(color.getAlpha())); root.addContent(colorElement); Object transparencyValue = config.getValue(Mask.ImageType.PROPERTY_NAME_TRANSPARENCY); final String transparency = String.valueOf(transparencyValue); root.addContent(createElement(TAG_TRANSPARENCY, transparency)); configureElement(root, mask); return root; }
static Mask createSubset(Mask sourceMask, Scene targetScene, ProductSubsetDef subsetDef) { final Mask targetMask = Mask.BandMathsType.create(sourceMask.getName(), sourceMask.getDescription(), targetScene.getRasterWidth(), targetScene.getRasterHeight(), Mask.BandMathsType.getExpression(sourceMask), sourceMask.getImageColor(), sourceMask.getImageTransparency()); targetMask.setSourceImage(getSourceImage(subsetDef, sourceMask)); return targetMask; }
@Override public boolean canPersist(Object object) { if (object instanceof Mask) { Mask mask = (Mask) object; if(mask.getImageType() == Mask.BandMathsType.INSTANCE) { return true; } } return false; }
private void handleMaskAdded(ProductNodeEvent event) { // TODO - move code to where masks are created final Mask mask = (Mask) event.getSourceNode(); if (StringUtils.isNullOrEmpty(mask.getDescription()) && mask.getImageType() == Mask.BandMathsType.INSTANCE) { String expression = Mask.BandMathsType.getExpression(mask); mask.setDescription(getSuitableBitmaskDefDescription(expression)); } }
private static String translateExpression(Map<Mask, Mask> translationMap, String expression) { for (Map.Entry<Mask, Mask> entry : translationMap.entrySet()) { String srcName = entry.getKey().getName(); String targetName = entry.getValue().getName(); expression = StringUtils.replaceWord(expression, srcName, targetName); } return expression; }
public static void setVectorData(Mask mask, VectorDataNode vectorDataNode) { mask.getImageConfig().setValue(PROPERTY_NAME_VECTOR_DATA, vectorDataNode); } }
private void addMaskToProductIfPossible(Mask mask, Product product) throws Exception { if (mask.getImageType().canTransferMask(mask, product)) { product.getMaskGroup().add(mask); } else { throw new Exception(String.format("Cannot add mask '%s' to selected product.", mask.getName())); } } }
@Override protected RenderedImage createImage(int level) { return ImageManager.createColoredMaskImage(mask.getSourceImage().getImage(level), mask.getImageColor(), 1.0 - mask.getImageTransparency()); }
Window window = getWindow(e); Mask selectedMask = getMaskForm().getSelectedMask(); PropertyContainer selectedMaskConfig = selectedMask.getImageConfig(); Mask.ImageType type = selectedMask.getImageType(); if (type == Mask.BandMathsType.INSTANCE) { Product product = getMaskForm().getProduct(); String code = expressionPane.getCode(); selectedMaskConfig.setValue("expression", code); selectedMask.setDescription(code); model.getMinValue(), model.getRasterName(), model.getMaxValue()); selectedMask.setDescription(description); selectedMaskConfig.setValue(Mask.RangeType.PROPERTY_NAME_MINIMUM, model.getMinValue()); selectedMaskConfig.setValue(Mask.RangeType.PROPERTY_NAME_MAXIMUM, model.getMaxValue());
fireTableCellUpdated(rowIndex, columnIndex); } else if (column == IDX_NAME) { mask.setName((String) aValue); fireTableCellUpdated(rowIndex, columnIndex); } else if (column == IDX_TYPE) { mask.setImageColor((Color) aValue); fireTableCellUpdated(rowIndex, columnIndex); } else if (column == IDX_TRANSPARENCY) { mask.setImageTransparency((Double) aValue); fireTableCellUpdated(rowIndex, columnIndex); } else if (column == IDX_DESCRIPTION) { mask.setDescription((String) aValue); fireTableCellUpdated(rowIndex, columnIndex);
protected Mask createNewMask(Mask.ImageType type) { final Product product = maskForm.getProduct(); final ProductNodeGroup<Mask> productNodeGroup = product.getMaskGroup(); String maskName = getNewMaskName(productNodeGroup); final Mask mask = new Mask(maskName, product.getSceneRasterWidth(), product.getSceneRasterHeight(), type); final VisatApp visatApp = VisatApp.getApp(); if(visatApp != null) { final PropertyMap preferences = visatApp.getPreferences(); mask.setImageColor(preferences.getPropertyColor("mask.color", Mask.ImageType.DEFAULT_COLOR)); mask.setImageTransparency(preferences.getPropertyDouble("mask.transparency", Mask.ImageType.DEFAULT_TRANSPARENCY)); } return mask; }