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; }
@Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); if (value != null) { this.setText(((Mask) value).getName()); } return this; } });
String createCodeFromSelection(String op, Mask[] selectedMasks, int selectionOffset) { StringBuilder code = new StringBuilder(); for (int i = selectionOffset; i < selectedMasks.length; i++) { Mask mask = selectedMasks[i]; if (code.length() > 0) { code.append(" "); code.append(op); code.append(" "); } code.append(BandArithmetic.createExternalName(mask.getName())); } return code.toString(); }
@Override String getCode(ActionEvent e) { Mask[] selectedMasks = getMaskForm().getSelectedMasks(); StringBuilder code = new StringBuilder(); code.append(BandArithmetic.createExternalName(selectedMasks[0].getName())); if (selectedMasks.length > 1) { code.append(" && !("); code.append(createCodeFromSelection("||", selectedMasks, 1)); code.append(")"); } return code.toString(); }
@Override public void visit(Mask mask) { visitedList.add(mask.getName()); }
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())); } } }
ExpectedMask(Mask mask) { this(mask.getName(), mask.getImageType().getClass(), mask.getImageColor(), mask.getDescription()); }
private String getSubPanelTitle(Mask mask) { final String title; if (mask != null) { title = String.format("<html><b>%s</b> with ROI-mask <b>%s</b></html>", getRaster().getName(), mask.getName()); } else { title = String.format("<html><b>%s</b></html>", getRaster().getName()); } return title; }
private static void addMaskNameRefs(Product product, String namePrefix, List<String> list) { for (int j = 0; j < product.getMaskGroup().getNodeCount(); j++) { Mask mask = product.getMaskGroup().get(j); list.add(namePrefix + mask.getName()); } }
private static void reprojectBandData(Mask[] selectedMasks, Product sourceProduct, Product targetProduct) { final Map<String, Object> projParameters = Collections.EMPTY_MAP; Map<String, Product> projProducts = new HashMap<String, Product>(); projProducts.put("source", sourceProduct); projProducts.put("collocateWith", targetProduct); Product reprojectedProduct = GPF.createProduct("Reproject", projParameters, projProducts); for (Mask mask : selectedMasks) { Band band = createBandCopy(targetProduct, mask); MultiLevelImage image = reprojectedProduct.getMaskGroup().get(mask.getName()).getSourceImage(); band.setSourceImage(image); } }
@Override public synchronized void nodeChanged(ProductNodeEvent event) { final ProductNode sourceNode = event.getSourceNode(); if (sourceNode instanceof Mask) { final Mask mask = (Mask) sourceNode; final ImageLayer maskLayer = getMaskLayer(mask); if (maskLayer != null) { if (event.getPropertyName().equals("name")) { maskLayer.setName(mask.getName()); } else { maskLayer.regenerate(); } } } }
private HistogramPanelModel.HistogramConfig createHistogramConfig() { if (getRaster() == null || isRasterChanged()) { return null; } return new HistogramPanelModel.HistogramConfig(getRaster(), histogramPlotConfig.useRoiMask ? histogramPlotConfig.roiMask.getName() : null, histogramPlotConfig.numBins, histogramPlotConfig.histogramLogScaled); }
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; }
private static void registerMaskSymbols(WritableNamespace namespace, Product product, String namePrefix) { for (int i = 0; i < product.getMaskGroup().getNodeCount(); i++) { final Mask mask = product.getMaskGroup().get(i); final String symbolName = namePrefix + mask.getName(); namespace.registerSymbol(new RasterDataSymbol(symbolName, mask)); } }
void addMask(Mask mask) { getModel().addMask(mask); int rowIndex = getModel().getMaskIndex(mask.getName()); getSelectionModel().addSelectionInterval(rowIndex, rowIndex); scrollRectToVisible(getCellRect(rowIndex, 0, true)); }
@Override public Layer createLayer(LayerContext ctx, PropertySet configuration) { MultiLevelSource multiLevelSource = (MultiLevelSource) configuration.getValue( ImageLayer.PROPERTY_NAME_MULTI_LEVEL_SOURCE); if (multiLevelSource == null) { multiLevelSource = createMultiLevelSource(configuration); } configuration.setValue(ImageLayer.PROPERTY_NAME_MULTI_LEVEL_SOURCE, multiLevelSource); configuration.setValue(ImageLayer.PROPERTY_NAME_BORDER_SHOWN, false); configuration.setValue(ImageLayer.PROPERTY_NAME_PIXEL_BORDER_SHOWN, false); final ImageLayer layer = new ImageLayer(this, multiLevelSource, configuration); final Mask mask = (Mask) configuration.getValue(PROPERTY_NAME_MASK); layer.setName(mask.getName()); return layer; }
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 Mask transferMask(Mask mask, Product product) { if (canTransferMask(mask, product)) { String expression = getExpression(mask); final Map<Mask, Mask> translationMap = transferReferredMasks(expression, mask.getProduct(), product); expression = translateExpression(translationMap, expression); final String originalMaskName = mask.getName(); final String maskName = getAvailableMaskName(originalMaskName, product.getMaskGroup()); return product.addMask(maskName, expression, mask.getDescription(), mask.getImageColor(), mask.getImageTransparency()); } return null; }
@Test public void testMaskCreation() throws IOException, JDOMException { final DimapPersistable persistable = new BandMathsMaskPersistable(); final InputStream resourceStream = getClass().getResourceAsStream("BandMathMask.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(Mask.BandMathsType.class, maskFromXml.getImageType().getClass()); 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()); assertEquals("false", maskFromXml.getImageConfig().getValue(Mask.BandMathsType.PROPERTY_NAME_EXPRESSION)); }
@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); }