/** * Returns the currently visible product node. */ @Override public ProductNode getVisibleProductNode() { if (isRGB()) { return getProduct(); } return getRaster(); }
public void setImageInfo(ImageInfo imageInfo) { final ImageInfo oldImageInfo = getImageInfo(); getSceneImage().setImageInfo(imageInfo); updateImage(); firePropertyChange(PROPERTY_NAME_IMAGE_INFO, oldImageInfo, imageInfo); }
private void setCurrentView(ProductSceneView view) { if (currentView == view) { return; } if (currentView != null) { currentView.removePixelPositionListener(pixelPositionListener); currentView.removePropertyChangeListener(ProductSceneView.PROPERTY_NAME_SELECTED_PIN, pinSelectionChangeListener); Product product = currentView.getProduct(); if (product != null) { product.removeProductNodeListener(pinChangedListener); } } else { pixelInfoView.clearProductNodeRefs(); } currentView = view; if (currentView != null) { currentView.addPixelPositionListener(pixelPositionListener); currentView.addPropertyChangeListener(ProductSceneView.PROPERTY_NAME_SELECTED_PIN, pinSelectionChangeListener); Product product = currentView.getProduct(); if (product != null) { product.addProductNodeListener(pinChangedListener); } } }
/** * @param pins The selected pins. * @since BEAM 4.7 */ public void selectPins(Placemark[] pins) { selectPlacemarks(getProduct().getPinGroup(), pins); }
/** * Gets the number of raster datasets. * * @return the number of raster datasets, always {@code 1} for single banded palette images or {@code 3} * for RGB images */ public int getNumRasters() { return getSceneImage().getRasters().length; }
if (view instanceof ProductSceneView) { ProductSceneView sceneView = (ProductSceneView) view; Viewport viewport = sceneView.getLayerCanvas().getViewport(); viewportDef = new ViewportDef(viewport.isModelYAxisDown(), viewport.getOffsetX(), viewport.getZoomFactor(), viewport.getOrientation()); List<Layer> layers = sceneView.getRootLayer().getChildren(); layerRefs = getLayerRefs(layers, productManager); if (psv.isRGB()) { viewName = psv.getSceneName(); RasterDataNode[] rasters = psv.getRasters(); expressionR = getExpression(rasters[0]); expressionG = getExpression(rasters[1]);
private void setCurrentView(ProductSceneView view) { ProductSceneView oldView = currentView; currentView = view; if (oldView != currentView) { if (oldView != null) { oldView.removePropertyChangeListener(ProductSceneView.PROPERTY_NAME_SELECTED_PIN, pinSelectionChangeListener); } if (currentView != null) { currentView.addPropertyChangeListener(ProductSceneView.PROPERTY_NAME_SELECTED_PIN, pinSelectionChangeListener); setCurrentProduct(currentView.getProduct()); if (!rasterToSpectraMap.containsKey(currentView.getRaster())) { setUpSpectra(); } recreateChart(); } updateUIState(); } }
void update(ProductSceneView view, int pixelX, int pixelY, int level, boolean pixelPosValid) { Guardian.assertNotNull("view", view); boolean clearRasterTableSelection = false; RasterDataNode raster = view.getRaster(); final Product product = raster.getProduct(); if (product == currentProduct && view.isRGB()) { resetBandTableModel(); this.rasterLevel = level; this.pixelPosValidInRaster = pixelPosValid; AffineTransform i2mTransform = currentView.getBaseImageLayer().getImageToModelTransform(level); Point2D modelP = i2mTransform.transform(new Point2D.Double(pixelX + 0.5, pixelY + 0.5), null); try { final Point2D sceneP = currentView.getRaster().getModelToSceneTransform().transform(modelP, new Point2D.Double()); sceneX = sceneP.getX(); sceneY = sceneP.getY(); sceneY = Double.NaN; AffineTransform m2iTransform = view.getBaseImageLayer().getModelToImageTransform(); Point2D levelZeroP = m2iTransform.transform(modelP, null); levelZeroRasterX = floor(levelZeroP.getX());
protected void configureFileChooser(final SnapFileChooser fileChooser, final ProductSceneView view, String imageBaseName) { fileChooser.setDialogTitle(SnapApp.getDefault().getInstanceName() + " - " + "Export Image"); /*I18N*/ if (view.isRGB()) { fileChooser.setCurrentFilename(imageBaseName + "_RGB"); } else { fileChooser.setCurrentFilename(imageBaseName + "_" + view.getRaster().getName());
/** * Called after SNAP preferences have changed. * This behaviour is deprecated since we want to uswe separate style editors for each layers. * * @param configuration the configuration. */ public void appyLayerProperties(PropertyMap configuration) { setScrollBarsShown(configuration.getPropertyBool(PREFERENCE_KEY_IMAGE_SCROLL_BARS_SHOWN, false)); layerCanvas.setAntialiasing(true); layerCanvas.setNavControlShown(configuration.getPropertyBool(PREFERENCE_KEY_IMAGE_NAV_CONTROL_SHOWN, true)); layerCanvas.setBackground( configuration.getPropertyColor("image.background.color", DEFAULT_IMAGE_BACKGROUND_COLOR)); layerCanvasMouseHandler.setInvertZooming(configuration.getPropertyBool(PREFERENCE_KEY_INVERT_ZOOMING, false)); ImageLayer imageLayer = getBaseImageLayer(); if (imageLayer != null) { ProductSceneImage.applyBaseImageLayerStyle(configuration, imageLayer); } Layer noDataLayer = getNoDataLayer(false); if (noDataLayer != null) { ProductSceneImage.applyNoDataLayerStyle(configuration, noDataLayer); } Layer collectionLayer = getVectorDataCollectionLayer(false); if (collectionLayer != null) { ProductSceneImage.applyFigureLayerStyle(configuration, collectionLayer); } GraticuleLayer graticuleLayer = getGraticuleLayer(false); if (graticuleLayer != null) { ProductSceneImage.applyGraticuleLayerStyle(configuration, graticuleLayer); } }
public void testDispose() { final ProductSceneView view = new ProductSceneView(new ProductSceneImage(r, new DefaultPropertyMap(), ProgressMonitor.NULL)); view.dispose(); assertNull(view.getSceneImage()); }
private static String formatKML(ProductSceneView view, String imageName) { final RasterDataNode raster = view.getRaster(); final Product product = raster.getProduct(); final GeoCoding geoCoding = raster.getGeoCoding(); String description; String legendKml = ""; if (view.isRGB()) { name = "RGB"; description = view.getSceneName() + "\n" + product.getName(); } else { name = raster.getName();
/** * Gets the current selection context, if any. * * @return The current selection context, or {@code null} if none exists. * @since BEAM 4.7 */ @Override public SelectionContext getSelectionContext() { return getFigureEditor().getSelectionContext(); }
private void showDetailsDialog(ProductSceneView view) { GeoCoding geoCoding = view.getRaster().getGeoCoding(); if (geoCoding == null) { Dialogs.showInformation(TITLE, String.format("No geo-coding information for %s.", view.getRaster().getName()), null); return; final AffineTransform m2i = view.getBaseImageLayer().getModelToImageTransform();
public void updateNoDataImage() { // change configuration of layer ; not setting MultiLevelSource final String expression = getRaster().getValidMaskExpression(); final ImageLayer noDataLayer = (ImageLayer) getNoDataLayer(false); if (noDataLayer != null) { if (expression != null) { final Color color = noDataLayer.getConfiguration().getValue( NoDataLayerType.PROPERTY_NAME_COLOR); final MultiLevelSource multiLevelSource = ColoredMaskImageMultiLevelSource.create(getRaster().getProduct(), color, expression, true, getBaseImageLayer().getImageToModelTransform()); noDataLayer.setMultiLevelSource(multiLevelSource); } else { noDataLayer.setMultiLevelSource(MultiLevelSource.NULL); } } }
public boolean isContinuous3BandImage() { return isValid() && getProductSceneView().isRGB(); }
public void productSceneViewSelected(@NonNull ProductSceneView selectedSceneView) { selectedSceneView.addPropertyChangeListener(ProductSceneView.PROPERTY_NAME_IMAGE_INFO, this.imageInfoChangeListener); BrightnessContrastData brightnessContrastData = this.visibleProductScenes.get(selectedSceneView); if (brightnessContrastData == null) { RasterDataNode[] rasterDataNodes = selectedSceneView.getSceneImage().getRasters(); ImageInfo initialImageInfo = selectedSceneView.getImageInfo().clone(); brightnessContrastData = new BrightnessContrastData(initialImageInfo); for (int i=0; i<rasterDataNodes.length; i++) { ImageInfo nodeImageInfo = rasterDataNodes[i].getImageInfo().clone(); brightnessContrastData.putImageInfo(rasterDataNodes[i], nodeImageInfo); } this.visibleProductScenes.put(selectedSceneView, brightnessContrastData); } RGBChannelDef initialRGBChannelDef = brightnessContrastData.getInitialImageInfo().getRgbChannelDef(); boolean enableSaturationPanel = (initialRGBChannelDef != null); this.saturationPanel.setEnabled(enableSaturationPanel); refreshSliderValues(brightnessContrastData); }
private void ensureMaskVisible(ProductSceneView view) { Product product = view.getProduct(); ProductNodeGroup<Mask> overlayMaskGroup = view.getRaster().getOverlayMaskGroup(); Mask mask = overlayMaskGroup.getByDisplayName(MagicWandModel.MAGIC_WAND_MASK_NAME); if (mask == null) { mask = product.getMaskGroup().get(MagicWandModel.MAGIC_WAND_MASK_NAME); if (mask != null) { overlayMaskGroup.add(mask); } } }
private void removeViewListener(ProductSceneView view) { if (view != null) { view.getRootLayer().removeListener(pagePanelLL); view.getFigureEditor().removeSelectionChangeListener(pagePanelSCL); } }