Changeset 2969


Ignore:
Timestamp:
07/12/07 16:03:40 (13 years ago)
Author:
curtis
Message:

A bit of cleanup.

Location:
trunk/loci/formats/cache
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/loci/formats/cache/Cache.java

    r2968 r2969  
    3131 
    3232  /** Constructs an object cache with the given cache strategy and source. */ 
    33   public Cache(ICacheStrategy strategy, ICacheSource source)  
     33  public Cache(ICacheStrategy strategy, ICacheSource source) 
    3434    throws CacheException 
    3535  { 
     
    3838    this.strategy = strategy; 
    3939    this.source = source; 
    40     reset();  
     40    reset(); 
    4141  } 
    4242 
     
    5151 
    5252    int ndx = FormatTools.positionToRaster(strategy.getLengths(), pos); 
    53     load(pos); 
    5453    return cache[ndx]; 
    5554  } 
     
    7675    if (strategy == null) throw new CacheException("strategy is null"); 
    7776    this.strategy = strategy; 
    78     reset();  
     77    reset(); 
    7978    load(currentPos); 
    8079  } 
     
    8483    if (source == null) throw new CacheException("source is null"); 
    8584    this.source = source; 
    86     reset();  
     85    reset(); 
    8786    load(currentPos); 
    8887  } 
     
    109108 
    110109  private void load(int[] pos) throws CacheException { 
    111     int[][] indices = strategy.getLoadList(pos);  
     110    int[][] indices = strategy.getLoadList(pos); 
    112111    int[] len = strategy.getLengths(); 
    113112 
     
    116115      int ndx = FormatTools.positionToRaster(len, indices[i]); 
    117116      if (ndx >= 0) inCache[ndx] = true; 
    118     }  
     117    } 
    119118 
    120119    for (int i=0; i<cache.length; i++) { 
    121120      if (!inCache[i]) cache[i] = null; 
    122     }     
     121    } 
    123122 
    124123    for (int i=0; i<indices.length; i++) { 
     
    126125      if (ndx >= 0 && cache[ndx] == null) { 
    127126        cache[ndx] = source.getObject(len, indices[i]); 
    128       }  
     127      } 
    129128    } 
    130129  } 
     
    142141  } 
    143142 
    144   // -- Main method --  
     143  // -- Main method -- 
    145144 
    146145  /** Interactive interpreter for testing Bio-Formats caching implementation. */ 
    147   public static void main(String[] args) throws Exception { 
     146  public static void main(String[] args) throws FormatException, IOException { 
    148147    if (args.length < 1) { 
    149148      System.out.println("Please specify a filename containing image data."); 
     
    158157      new CrosshairStrategy(getLengths(reader)), 
    159158      new BufferedImageSource(reader)); 
    160     String cmd = ""; 
    161159    BufferedReader r = new BufferedReader(new InputStreamReader(System.in)); 
    162160    System.out.println("Entering Bio-Formats caching test console"); 
    163161    while (true) { 
    164162      System.out.print("> "); 
    165       cmd = r.readLine().trim(); 
    166  
    167       if (cmd.equals("exit")) break; 
    168       else if (cmd.equals("help")) { 
     163      String cmd = r.readLine().trim(); 
     164      if (cmd.equals("")) continue; 
     165      else if (cmd.startsWith("e") || cmd.startsWith("q")) break; // exit/quit 
     166      else if (cmd.startsWith("h")) { // help 
    169167        System.out.println("Available commands:"); 
    170         System.out.println("  info"); 
    171         System.out.println("  strategy"); 
    172         System.out.println("  source"); 
    173         System.out.println("  position"); 
    174         System.out.println("  range"); 
    175         System.out.println("  priority"); 
    176         System.out.println("  read"); 
    177         System.out.println("  exit"); 
    178       } 
    179       else if (cmd.equals("read")) { 
     168        System.out.println("  info     -- displays the cache state"); 
     169        System.out.println("  strategy -- changes the cache strategy"); 
     170        System.out.println("  source   -- changes the cache source"); 
     171        System.out.println("  position -- changes the current position"); 
     172        System.out.println("  range    -- changes the cache ranges"); 
     173        System.out.println("  priority -- changes the cache priorities"); 
     174        System.out.println("  read     -- gets a plane from the cache"); 
     175        System.out.println("  exit     -- quits the interpreter"); 
     176      } 
     177      else if (cmd.startsWith("re")) { // read 
    180178        System.out.print("Z: "); 
    181179        int z = Integer.parseInt(r.readLine().trim()); 
     
    186184        System.out.println("Retrieving Z" + z + "-C" + c + "-T" + t); 
    187185        Object o = cache.getObject(new int[] {z, c, t}); 
    188       } 
    189       else if (cmd.equals("info")) { 
     186        System.out.println(o); 
     187      } 
     188      else if (cmd.startsWith("i")) { // info 
     189        // output dimensional position 
     190        printArray("pos", cache.getCurrentPos()); 
     191        // output source information 
     192        ICacheSource source = cache.getSource(); 
     193        System.out.print("source = "); 
     194        Class sourceClass = source.getClass(); 
     195        if (sourceClass == BufferedImageSource.class) { 
     196          System.out.println("BufferedImage"); 
     197        } 
     198        else if (sourceClass == ByteArraySource.class) { 
     199          System.out.println("byte array"); 
     200        } 
     201        else if (sourceClass == ImageProcessorSource.class) { 
     202          System.out.println("ImageProcessor"); 
     203        } 
     204        else System.out.println("unknown"); 
     205        System.out.println("object count = " + source.getObjectCount()); 
    190206        // output strategy information 
    191207        ICacheStrategy strategy = cache.getStrategy(); 
    192         System.out.println("strategy = " + strategy.getClass().getName()); 
    193         printArray("\tpriorities", strategy.getPriorities()); 
     208        System.out.print("strategy = "); 
     209        Class strategyClass = strategy.getClass(); 
     210        if (strategyClass == CrosshairStrategy.class) { 
     211          System.out.println("crosshair"); 
     212        } 
     213        else if (strategyClass == RectangleStrategy.class) { 
     214          System.out.println("crosshair"); 
     215        } 
     216        else System.out.println("unknown"); 
     217        printArray("priorities", strategy.getPriorities()); 
    194218        int[] order = strategy.getOrder(); 
    195         System.out.print("\torder ="); 
     219        System.out.print("order ="); 
    196220        for (int i=0; i<order.length; i++) { 
    197221          switch (order[i]) { 
     
    210234        } 
    211235        System.out.println(); 
    212         printArray("\trange", strategy.getRange()); 
    213         printArray("\tlengths", strategy.getLengths()); 
    214         // output source information 
    215         ICacheSource source = cache.getSource(); 
    216         System.out.println("source = " + source.getClass().getName()); 
    217         System.out.println("\tobject count = " + source.getObjectCount()); 
    218         // output dimensional position 
    219         printArray("pos", cache.getCurrentPos()); 
    220       } 
    221       else if (cmd.equals("strategy")) { 
     236        printArray("range", strategy.getRange()); 
     237        printArray("lengths", strategy.getLengths()); 
     238      } 
     239      else if (cmd.startsWith("st")) { // strategy 
    222240        System.out.println("0: crosshair"); 
    223241        System.out.println("1: rectangle"); 
     
    238256        } 
    239257      } 
    240       else if (cmd.equals("source")) { 
     258      else if (cmd.startsWith("so")) { // source 
    241259        System.out.println("0: BufferedImage"); 
    242260        System.out.println("1: byte array"); 
     
    248266            cache.setSource(new BufferedImageSource(reader)); 
    249267            System.out.println("Source set to BufferedImage"); 
    250             break;  
     268            break; 
    251269          case 1: 
    252270            cache.setSource(new ByteArraySource(reader)); 
     
    261279        } 
    262280      } 
    263       else if (cmd.equals("position")) { 
     281      else if (cmd.startsWith("po")) { // position 
    264282        System.out.print("Z: "); 
    265283        int z = Integer.parseInt(r.readLine().trim()); 
     
    270288        cache.setCurrentPos(new int[] {z, c, t}); 
    271289      } 
    272       else if (cmd.equals("range")) { 
     290      else if (cmd.startsWith("ra")) { // range 
    273291        System.out.print("Z: "); 
    274292        int z = Integer.parseInt(r.readLine().trim()); 
     
    278296        int t = Integer.parseInt(r.readLine().trim()); 
    279297        cache.getStrategy().setRange(z, 0); 
    280       } 
    281       else if (cmd.equals("priority")) { 
     298        cache.getStrategy().setRange(c, 1); 
     299        cache.getStrategy().setRange(t, 2); 
     300      } 
     301      else if (cmd.startsWith("pr")) { // priority 
    282302        System.out.println(ICacheStrategy.MIN_PRIORITY + " => min priority"); 
    283303        System.out.println(ICacheStrategy.LOW_PRIORITY + " => low priority"); 
     
    292312        System.out.print("T: "); 
    293313        int t = Integer.parseInt(r.readLine().trim()); 
    294         cache.getStrategy().setPriority(z, 0); 
    295         cache.getStrategy().setPriority(c, 1); 
    296         cache.getStrategy().setPriority(t, 2); 
    297       } 
    298       else if (cmd.equals("exit")) break; 
     314        ICacheStrategy strategy = cache.getStrategy(); 
     315        strategy.setPriority(z, 0); 
     316        strategy.setPriority(c, 1); 
     317        strategy.setPriority(t, 2); 
     318      } 
    299319      else System.out.println("Unknown command: " + cmd); 
    300320    } 
    301     reader.close();  
     321    reader.close(); 
    302322  } 
    303323 
  • trunk/loci/formats/cache/CacheSource.java

    r2866 r2969  
    99  // -- Constructors -- 
    1010 
    11   public CacheSource(Object o) { }  
     11  public CacheSource(Object o) { } 
    1212 
    1313  // -- ICacheSource API methods -- 
     
    2424    for (int i=0; i<o.length; i++) { 
    2525      o[i] = getObject(len, pos[i]); 
    26     }  
    27     return o;  
     26    } 
     27    return o; 
    2828  } 
    2929 
  • trunk/loci/formats/cache/ICacheStrategy.java

    r2968 r2969  
    2121  // -- ICacheStrategy API methods -- 
    2222 
    23   /**  
    24    * Gets the indices of the objects to cache,  
     23  /** 
     24   * Gets the indices of the objects to cache, 
    2525   * surrounding the object with the given index. 
    2626   */ 
  • trunk/loci/formats/cache/ImageProcessorSource.java

    r2961 r2969  
    1212public class ImageProcessorSource extends CacheSource { 
    1313 
    14   // -- Constants --  
    15   
     14  // -- Constants -- 
     15 
    1616  private static final String NO_IJ_MSG = 
    1717    "ImageJ is required to use ImageProcessorSource. Please obtain ij.jar" + 
     
    3434    } 
    3535    catch (Throwable t) { 
    36       noIJ = true;  
    37       LogTools.trace(t);  
     36      noIJ = true; 
     37      LogTools.trace(t); 
    3838    } 
    3939    return r; 
    4040  } 
    41  
    4241 
    4342  // -- Fields -- 
     
    7473   * (one per channel). 
    7574   * 
    76    * @see loci.formats.cache.ICacheSource#getObject(int[], int[])  
     75   * @see loci.formats.cache.ICacheSource#getObject(int[], int[]) 
    7776   */ 
    7877  public Object getObject(int[] len, int[] pos) throws CacheException { 
     
    8079 
    8180    int ndx = FormatTools.positionToRaster(len, pos); 
    82    
     81 
    8382    try { 
    8483      int w = reader.getSizeX(); 
     
    9594        // so open this plane as a BufferedImage to find out 
    9695        BufferedImage bi = reader.openImage(ndx); 
    97         b = ImageTools.padImage(b, reader.isInterleaved(), c,  
     96        b = ImageTools.padImage(b, reader.isInterleaved(), c, 
    9897          bi.getWidth() * bpp, w, h); 
    9998      } 
     
    104103        reader.isLittleEndian()); 
    105104 
    106       // construct image processor  
     105      // construct image processor 
    107106      r.setVar("ip", null); 
    108107      r.setVar("n", null); 
    109       r.setVar("w", w);  
    110       r.setVar("h", h);  
    111     
     108      r.setVar("w", w); 
     109      r.setVar("h", h); 
     110 
    112111      if (pixels instanceof byte[]) { 
    113112        byte[] q = (byte[]) pixels; 
     
    118117        } 
    119118        r.setVar("q", q); 
    120         if (c == 1) r.exec("ip = new ByteProcessor(w, h, q, n)");  
     119        if (c == 1) r.exec("ip = new ByteProcessor(w, h, q, n)"); 
    121120        else { 
    122121          r.exec("ip = new ColorProcessor(w, h)"); 
    123122          byte[][] pix = new byte[3][w * h]; 
    124123          for (int i=0; i<c; i++) { 
    125             System.arraycopy(q, i * w * h, pix[i], 0, w * h);  
    126           } 
    127           r.setVar("red", pix[0]);  
    128           r.setVar("green", pix[1]);  
    129           r.setVar("blue", pix[2]);  
    130           r.exec("ip.setRGB(red, green, blue)");  
    131         }        
     124            System.arraycopy(q, i * w * h, pix[i], 0, w * h); 
     125          } 
     126          r.setVar("red", pix[0]); 
     127          r.setVar("green", pix[1]); 
     128          r.setVar("blue", pix[2]); 
     129          r.exec("ip.setRGB(red, green, blue)"); 
     130        } 
    132131      } 
    133132      else if (pixels instanceof short[]) { 
     
    138137          System.arraycopy(tmp, 0, q, 0, q.length); 
    139138        } 
    140         r.setVar("q", q);  
    141         if (c == 1) r.exec("ip = new ShortProcessor(w, h, q, n)");  
    142         else {  
     139        r.setVar("q", q); 
     140        if (c == 1) r.exec("ip = new ShortProcessor(w, h, q, n)"); 
     141        else { 
    143142          short[][] pix = new short[3][w * h]; 
    144143          for (int i=0; i<c; i++) { 
    145             System.arraycopy(q, i * w * h, pix[i], 0, w * h);  
    146           } 
    147           r.setVar("redS", pix[0]);  
    148           r.setVar("greenS", pix[1]);  
    149           r.setVar("blueS", pix[2]);  
     144            System.arraycopy(q, i * w * h, pix[i], 0, w * h); 
     145          } 
     146          r.setVar("redS", pix[0]); 
     147          r.setVar("greenS", pix[1]); 
     148          r.setVar("blueS", pix[2]); 
    150149          r.setVar("nnull", null); 
    151150          r.exec("redProc = new ShortProcessor(w, h, redS, nnull)"); 
     
    154153          return new Object[] {r.getVar("redProc"), r.getVar("greenProc"), 
    155154            r.getVar("blueProc")}; 
    156         }  
     155        } 
    157156      } 
    158157      else if (pixels instanceof int[]) { 
     
    163162          System.arraycopy(tmp, 0, q, 0, q.length); 
    164163        } 
    165         r.setVar("q", q);  
    166         if (c == 1) r.exec("ip = new FloatProcessor(w, h, q)");  
    167         else {  
     164        r.setVar("q", q); 
     165        if (c == 1) r.exec("ip = new FloatProcessor(w, h, q)"); 
     166        else { 
    168167          int[][] pix = new int[3][w * h]; 
    169168          for (int i=0; i<c; i++) { 
    170             System.arraycopy(q, i * w * h, pix[i], 0, w * h);  
    171           } 
    172           r.setVar("redS", pix[0]);  
    173           r.setVar("greenS", pix[1]);  
    174           r.setVar("blueS", pix[2]);  
     169            System.arraycopy(q, i * w * h, pix[i], 0, w * h); 
     170          } 
     171          r.setVar("redS", pix[0]); 
     172          r.setVar("greenS", pix[1]); 
     173          r.setVar("blueS", pix[2]); 
    175174          r.setVar("nnull", null); 
    176175          r.exec("redProc = new FloatProcessor(w, h, redS)"); 
     
    179178          return new Object[] {r.getVar("redProc"), r.getVar("greenProc"), 
    180179            r.getVar("blueProc")}; 
    181         }  
     180        } 
    182181      } 
    183182      else if (pixels instanceof float[]) { 
     
    190189        if (c == 1) { 
    191190          // single channel -- use normal float processor 
    192           r.setVar("q", q);  
    193           r.exec("ip = new FloatProcessor(w, h, q, n)");  
     191          r.setVar("q", q); 
     192          r.exec("ip = new FloatProcessor(w, h, q, n)"); 
    194193        } 
    195194        else { 
     
    216215          } 
    217216          r.exec("ip = new ColorProcessor(w, h)"); 
    218           r.setVar("red", bytes[0]);  
    219           r.setVar("green", bytes[1]);  
    220           r.setVar("blue", pix.length >= 3 ? bytes[2] : new byte[w * h]);  
    221           r.exec("ip.setRGB(red, green, blue)");  
     217          r.setVar("red", bytes[0]); 
     218          r.setVar("green", bytes[1]); 
     219          r.setVar("blue", pix.length >= 3 ? bytes[2] : new byte[w * h]); 
     220          r.exec("ip.setRGB(red, green, blue)"); 
    222221        } 
    223222      } 
     
    229228          System.arraycopy(tmp, 0, q, 0, q.length); 
    230229        } 
    231         r.setVar("q", q);  
    232         r.exec("ip = new FloatProcessor(w, h, q)");  
    233       } 
    234       return r.getVar("ip");  
     230        r.setVar("q", q); 
     231        r.exec("ip = new FloatProcessor(w, h, q)"); 
     232      } 
     233      return r.getVar("ip"); 
    235234    } 
    236235    catch (Exception e) { throw new CacheException(e); } 
Note: See TracChangeset for help on using the changeset viewer.