Changeset 5708


Ignore:
Timestamp:
11/19/09 16:02:35 (10 years ago)
Author:
curtis
Message:

Miscellaneous bugfixes (especially with the preview pane).

Location:
trunk/components/bio-formats/src/loci/formats
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/components/bio-formats/src/loci/formats/FormatReader.java

    r5590 r5708  
    471471  public int getEffectiveSizeC() { 
    472472    // NB: by definition, imageCount == effectiveSizeC * sizeZ * sizeT 
    473     return getImageCount() / (getSizeZ() * getSizeT()); 
     473    int sizeZT = getSizeZ() * getSizeT(); 
     474    if (sizeZT == 0) return 0; 
     475    return getImageCount() / sizeZT; 
    474476  } 
    475477 
    476478  /* @see IFormatReader#getRGBChannelCount() */ 
    477479  public int getRGBChannelCount() { 
    478     return getSizeC() / getEffectiveSizeC(); 
     480    int effSizeC = getEffectiveSizeC(); 
     481    if (effSizeC == 0) return 0; 
     482    return getSizeC() / effSizeC; 
    479483  } 
    480484 
     
    521525      int sx = getSizeX(); 
    522526      int sy = getSizeY(); 
    523       int thumbSizeX = 
    524         sx > sy ? THUMBNAIL_DIMENSION : sx * THUMBNAIL_DIMENSION / sy; 
     527      int thumbSizeX = 0; 
     528      if (sx > sy) thumbSizeX = THUMBNAIL_DIMENSION; 
     529      else if (sy > 0) thumbSizeX = sx * THUMBNAIL_DIMENSION / sy; 
    525530      if (thumbSizeX == 0) thumbSizeX = 1; 
    526531      return thumbSizeX; 
     
    535540      int sx = getSizeX(); 
    536541      int sy = getSizeY(); 
    537       int thumbSizeY = 
    538         sy > sx ? THUMBNAIL_DIMENSION : sy * THUMBNAIL_DIMENSION / sx; 
     542      int thumbSizeY = 1; 
     543      if (sy > sx) thumbSizeY = THUMBNAIL_DIMENSION; 
     544      else if (sx > 0) thumbSizeY = sy * THUMBNAIL_DIMENSION / sx; 
    539545      if (thumbSizeY == 0) thumbSizeY = 1; 
    540546      return thumbSizeY; 
  • trunk/components/bio-formats/src/loci/formats/ReaderWrapper.java

    r5590 r5708  
    189189 
    190190  public int getEffectiveSizeC() { 
    191     return getImageCount() / (getSizeZ() * getSizeT()); 
     191    return reader.getEffectiveSizeC(); 
     192    //int sizeZT = getSizeZ() * getSizeT(); 
     193    //if (sizeZT == 0) return 0; 
     194    //return getImageCount() / sizeZT; 
    192195  } 
    193196 
    194197  public int getRGBChannelCount() { 
    195     return getSizeC() / getEffectiveSizeC(); 
     198    return reader.getRGBChannelCount(); 
     199    //int effSizeC = getEffectiveSizeC(); 
     200    //if (effSizeC == 0) return 0; 
     201    //return getSizeC() / effSizeC; 
    196202  } 
    197203 
  • trunk/components/bio-formats/src/loci/formats/gui/AWTImageTools.java

    r5614 r5708  
    10941094   */ 
    10951095  public static BufferedImage makeUnsigned(BufferedImage img) { 
     1096    if (img == null) return null; 
    10961097    int pixelType = getPixelType(img); 
    10971098    boolean signed = FormatTools.isSigned(pixelType); 
     
    16481649  /** Gets a color model for the given number of color components. */ 
    16491650  public static ColorModel makeColorModel(int c, int dataType) { 
    1650     return new ComponentColorModel(makeColorSpace(c), 
     1651    ColorSpace cs = makeColorSpace(c); 
     1652    return cs == null ? null : new ComponentColorModel(cs, 
    16511653      c == 4, false, ColorModel.TRANSLUCENT, dataType); 
    16521654  } 
  • trunk/components/bio-formats/src/loci/formats/gui/PreviewPane.java

    r5272 r5708  
    201201      catch (InterruptedException exc) { LogTools.trace(exc); } 
    202202 
    203       final String id = loadId; 
    204       if (id == lastId) continue; 
    205       if (id != null && lastId != null) { 
    206         String[] files = reader.getUsedFiles(); 
    207         boolean found = false; 
    208         for (int i=0; i<files.length; i++) { 
    209           if (id.equals(files[i])) { 
    210             found = true; 
    211             lastId = id; 
    212             break; 
     203      try { // catch-all for unanticipated exceptions 
     204        final String id = loadId; 
     205        if (id == lastId) continue; 
     206        if (id != null && lastId != null) { 
     207          String[] files = reader.getUsedFiles(); 
     208          boolean found = false; 
     209          for (int i=0; i<files.length; i++) { 
     210            if (id.equals(files[i])) { 
     211              found = true; 
     212              lastId = id; 
     213              break; 
     214            } 
    213215          } 
    214         } 
    215         if (found) continue; 
     216          if (found) continue; 
     217        } 
     218        lastId = id; 
     219 
     220        icon = null; 
     221        iconText = id == null ? "" : "Reading..."; 
     222        formatText = resText = zctText = typeText = ""; 
     223        iconTip = id; 
     224        formatTip = resTip = zctTip = typeTip = ""; 
     225 
     226        if (id == null) { 
     227          SwingUtilities.invokeLater(refresher); 
     228          continue; 
     229        } 
     230 
     231        try { reader.setId(id); } 
     232        catch (FormatException exc) { 
     233          LogTools.traceDebug(exc); 
     234          boolean badFormat = exc.getMessage().startsWith("Unknown file format"); 
     235          iconText = "Unsupported " + (badFormat ? "format" : "file"); 
     236          formatText = resText = ""; 
     237          SwingUtilities.invokeLater(refresher); 
     238          lastId = null; 
     239          continue; 
     240        } 
     241        catch (IOException exc) { 
     242          LogTools.traceDebug(exc); 
     243          iconText = "Unsupported file"; 
     244          formatText = resText = ""; 
     245          SwingUtilities.invokeLater(refresher); 
     246          lastId = null; 
     247          continue; 
     248        } 
     249        if (id != loadId) { 
     250          SwingUtilities.invokeLater(refresher); 
     251          continue; 
     252        } 
     253 
     254        icon = id == null ? null : new ImageIcon(makeImage("Loading...")); 
     255        iconText = ""; 
     256        String format = reader.getFormat(); 
     257        formatText = format; 
     258        formatTip = format; 
     259        resText = reader.getSizeX() + " x " + reader.getSizeY(); 
     260        zctText = reader.getSizeZ() + "Z x " + 
     261          reader.getSizeT() + "T x " + reader.getSizeC() + "C"; 
     262        typeText = reader.getRGBChannelCount() + " x " + 
     263          FormatTools.getPixelTypeString(reader.getPixelType()); 
     264        SwingUtilities.invokeLater(refresher); 
     265 
     266        // open middle image thumbnail 
     267        int z = reader.getSizeZ() / 2; 
     268        int t = reader.getSizeT() / 2; 
     269        int ndx = reader.getIndex(z, 0, t); 
     270        BufferedImage thumb = null; 
     271        try { thumb = reader.openThumbImage(ndx); } 
     272        catch (FormatException exc) { 
     273          LogTools.traceDebug(exc); 
     274        } 
     275        catch (IOException exc) { 
     276          LogTools.traceDebug(exc); 
     277        } 
     278        icon = new ImageIcon(thumb == null ? makeImage("Failed") : thumb); 
     279        iconText = ""; 
     280 
     281        SwingUtilities.invokeLater(refresher); 
    216282      } 
    217       lastId = id; 
    218  
    219       icon = null; 
    220       iconText = id == null ? "" : "Reading..."; 
    221       formatText = resText = zctText = typeText = ""; 
    222       iconTip = id; 
    223       formatTip = resTip = zctTip = typeTip = ""; 
    224  
    225       if (id == null) { 
     283      catch (Exception exc) { 
     284        LogTools.trace(exc); 
     285        icon = null; 
     286        iconText = "Thumbnail failure"; 
     287        formatText = resText = zctText = typeText = ""; 
     288        iconTip = loadId; 
     289        formatTip = resTip = zctTip = typeTip = ""; 
    226290        SwingUtilities.invokeLater(refresher); 
    227         continue; 
    228291      } 
    229  
    230       try { reader.setId(id); } 
    231       catch (FormatException exc) { 
    232         LogTools.traceDebug(exc); 
    233         boolean badFormat = exc.getMessage().startsWith("Unknown file format"); 
    234         iconText = "Unsupported " + (badFormat ? "format" : "file"); 
    235         formatText = resText = ""; 
    236         SwingUtilities.invokeLater(refresher); 
    237         lastId = null; 
    238         continue; 
    239       } 
    240       catch (IOException exc) { 
    241         LogTools.traceDebug(exc); 
    242         iconText = "Unsupported file"; 
    243         formatText = resText = ""; 
    244         SwingUtilities.invokeLater(refresher); 
    245         lastId = null; 
    246         continue; 
    247       } 
    248       if (id != loadId) { 
    249         SwingUtilities.invokeLater(refresher); 
    250         continue; 
    251       } 
    252  
    253       icon = id == null ? null : new ImageIcon(makeImage("Loading...")); 
    254       iconText = ""; 
    255       String format = reader.getFormat(); 
    256       formatText = format; 
    257       formatTip = format; 
    258       resText = reader.getSizeX() + " x " + reader.getSizeY(); 
    259       zctText = reader.getSizeZ() + "Z x " + 
    260         reader.getSizeT() + "T x " + reader.getSizeC() + "C"; 
    261       typeText = reader.getRGBChannelCount() + " x " + 
    262         FormatTools.getPixelTypeString(reader.getPixelType()); 
    263       SwingUtilities.invokeLater(refresher); 
    264  
    265       // open middle image thumbnail 
    266       int z = reader.getSizeZ() / 2; 
    267       int t = reader.getSizeT() / 2; 
    268       int ndx = reader.getIndex(z, 0, t); 
    269       BufferedImage thumb = null; 
    270       try { thumb = reader.openThumbImage(ndx); } 
    271       catch (FormatException exc) { 
    272         LogTools.traceDebug(exc); 
    273       } 
    274       catch (IOException exc) { 
    275         LogTools.traceDebug(exc); 
    276       } 
    277       icon = new ImageIcon(thumb == null ? makeImage("Failed") : thumb); 
    278       iconText = ""; 
    279  
    280       SwingUtilities.invokeLater(refresher); 
    281292    } 
    282293  } 
Note: See TracChangeset for help on using the changeset viewer.