public static ModFileWriter createBand( PlotState state, ImagePlot plot, FileReadInfo readInfo, ActiveFitsReadGroup frGroup) throws FitsException, IOException, GeomException { ModFileWriter retval = null; Band band = readInfo.getBand(); plot.setThreeColorBand( state.isBandVisible(readInfo.getBand()) ? readInfo.getFitsRead() : null, readInfo.getBand(), frGroup); HistogramOps histOps = plot.getHistogramOps(band, frGroup); FitsRead tmpFR = histOps.getFitsRead(); if (tmpFR != readInfo.getFitsRead() && readInfo.getWorkingFile() != null) { // testing to see it the fits read got geomed when the band was added state.setImageIdx(0, band); retval = new ModFileWriter.GeomFileWriter( readInfo.getWorkingFile(), 0, tmpFR, readInfo.getBand(), false); FitsCacher.addFitsReadToCache(retval.getTargetFile(), new FitsRead[] {tmpFR}); } RangeValues rv = state.getRangeValues(readInfo.getBand()); if (rv == null) { rv = FitsRead.getDefaultFutureStretch(); state.setRangeValues(rv, readInfo.getBand()); } histOps.recomputeStretch(rv, true); return retval; }
/** * Create the ImagePlot. If this is the first time the plot has been created the compute the * appropriate zoom, otherwise using the zoom level in the PlotState object. Using the FitsRead in * the PlotData object. Record the zoom level in the PlotData object. * * @param state plot state * @param frGroup fits read group * @param plotDesc plot description * @return the image plot object * @throws nom.tam.fits.FitsException if creating plot fails */ static ImagePlot createImagePlot( PlotState state, ActiveFitsReadGroup frGroup, Band band, String plotDesc, ZoomChoice zoomChoice, boolean isMultiImage) throws FitsException { RangeValues rv = state.getPrimaryRangeValues(); if (rv == null) { rv = FitsRead.getDefaultFutureStretch(); state.setRangeValues(rv, state.firstBand()); } float zoomLevel = zoomChoice.getZoomLevel(); ImagePlot plot = PlotServUtils.makeImagePlot( frGroup, zoomLevel, state.isThreeColor(), band, state.getColorTableId(), rv); if (state.isNewPlot()) { // new plot requires computing the zoom level zoomLevel = computeZoomLevel(plot, zoomChoice); plot.getPlotGroup().setZoomTo(zoomLevel); state.setZoomLevel(zoomLevel); } state.setZoomLevel(zoomLevel); initPlotTitle(state, plot, frGroup, plotDesc, isMultiImage); return plot; }