示例#1
0
 @Override
 public void roiDragged(ROIEvent evt) {
   if (roiViewer == null) return;
   roiViewer.cancelEditing();
   IRegion region = (IRegion) evt.getSource();
   if (region == null) return;
   IROI roi = evt.getROI();
   if (roi != null) {
     roiViewer.setTableValues(roi);
     if (nameText != null && !nameText.isDisposed()) nameText.setText(region.getName());
     regionName = region.getName();
   }
   roiChanged = true;
   this.region = region;
 }
示例#2
0
  /** Update the widget with the correct roi information */
  public void update() {
    this.plottingSystem = PlottingFactory.getPlottingSystem(viewName);
    if (plottingSystem != null) {
      Collection<IRegion> regions = plottingSystem.getRegions();
      if (regions.size() > 0) {
        IRegion region = (IRegion) regions.toArray()[0];
        if (roiViewer == null) createRegionComposite(regionComposite, region.getRegionType());
        roiViewer.setTableValues(region.getROI());

        if (nameText != null) nameText.setText(region.getName());
        regionName = region.getName();
        this.region = region;
        region.addROIListener(ROIWidget.this);
      }
    }
  }
示例#3
0
  @Override
  public DataReductionInfo export(DataReductionSlice drslice) throws Exception {

    final Collection<IRegion> regions = getPlottingSystem().getRegions();

    for (IRegion region : regions) {
      if (!isRegionTypeSupported(region.getRegionType())) continue;

      final RectangularROI bounds = (RectangularROI) region.getROI();
      if (bounds == null) continue;
      if (!region.isVisible()) continue;

      final int yInc = bounds.getPoint()[1] < bounds.getEndPoint()[1] ? 1 : -1;
      final int xInc = bounds.getPoint()[0] < bounds.getEndPoint()[0] ? 1 : -1;

      final Dataset slice =
          DatasetUtils.convertToDataset(
              drslice
                  .getData()
                  .getSlice(
                      new int[] {(int) bounds.getPoint()[1], (int) bounds.getPoint()[0]},
                      new int[] {(int) bounds.getEndPoint()[1], (int) bounds.getEndPoint()[0]},
                      new int[] {yInc, xInc}));
      slice.setName(region.getName().replace(' ', '_'));

      drslice.appendData(slice);
    }
    return new DataReductionInfo(Status.OK_STATUS);
  }
示例#4
0
  protected Dataset createZoom(
      final IImageTrace image,
      IRegion region,
      IROI rbs,
      boolean tryUpdate,
      boolean isDrag,
      IProgressMonitor monitor) {

    if (!(region.getROI() instanceof RectangularROI)) return null;
    final RectangularROI bounds = (RectangularROI) (rbs == null ? region.getROI() : rbs);
    if (bounds == null) return null;
    if (!region.isVisible()) return null;

    if (monitor.isCanceled()) return null;

    final int yInc = bounds.getPoint()[1] < bounds.getEndPoint()[1] ? 1 : -1;
    final int xInc = bounds.getPoint()[0] < bounds.getEndPoint()[0] ? 1 : -1;

    Dataset im = DatasetUtils.convertToDataset(image.getData());
    Dataset slice = DatasetUtils.convertToDataset(ToolUtils.getClippedSlice(im, bounds));
    slice.setName(region.getName());
    // Calculate axes to have real values not size
    Dataset yLabels = null;
    Dataset xLabels = null;
    if (image.getAxes() != null && image.getAxes().size() > 0) {
      Dataset xl = DatasetUtils.convertToDataset(image.getAxes().get(0));
      if (xl != null) xLabels = ZoomTool.getLabelsFromLabels(xl, bounds, 0);
      Dataset yl = DatasetUtils.convertToDataset(image.getAxes().get(1));
      if (yl != null) yLabels = ZoomTool.getLabelsFromLabels(yl, bounds, 1);
    }

    if (yLabels == null)
      yLabels =
          DatasetFactory.createRange(
              IntegerDataset.class, bounds.getPoint()[1], bounds.getEndPoint()[1], yInc);
    if (xLabels == null)
      xLabels =
          DatasetFactory.createRange(
              IntegerDataset.class, bounds.getPoint()[0], bounds.getEndPoint()[0], xInc);

    final IImageTrace zoom_trace =
        (IImageTrace)
            profilePlottingSystem.updatePlot2D(
                slice, Arrays.asList(new IDataset[] {xLabels, yLabels}), monitor);
    registerTraces(region, Arrays.asList(new ITrace[] {zoom_trace}));
    Display.getDefault()
        .syncExec(
            new Runnable() {
              public void run() {
                zoom_trace.setPaletteData(image.getPaletteData());
              }
            });

    return slice;
  }
示例#5
0
 /**
  * Method to set the input of this widget given an IRegion
  *
  * @param region
  */
 public void setEditingRegion(IRegion region) {
   if (region == null || roiViewer == null) return;
   if (region.getROI() != null) roiViewer.setTableValues(region.getROI());
   if (nameText != null && !nameText.isDisposed()) nameText.setText(region.getName());
   regionName = region.getName();
 }