Changeset 2105


Ignore:
Timestamp:
01/16/07 11:40:27 (13 years ago)
Author:
melissa
Message:

Parse pixel sizes from Gatan files.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/loci/formats/in/GatanReader.java

    r2010 r2105  
    2727import java.awt.image.BufferedImage; 
    2828import java.io.IOException; 
     29import java.util.Vector; 
    2930import loci.formats.*; 
    3031 
     
    5152  protected byte[] pixelData; 
    5253 
     54  /** List of pixel sizes. */ 
     55  private Vector pixelSizes; 
     56   
    5357  /** Dimensions -- width, height, bytes per pixel. */ 
    5458  protected int[] dims = new int[3]; 
     
    160164 
    161165    littleEndian = false; 
     166    pixelSizes = new Vector(); 
    162167 
    163168    byte[] temp = new byte[4]; 
     
    178183    parseTags(DataTools.bytesToInt(temp, !littleEndian), "initFile"); 
    179184 
    180     int datatype = ((Integer) metadata.get("DataType")).intValue(); 
     185    int datatype = Integer.parseInt((String) metadata.get("DataType")); 
    181186 
    182187    pixelType[0] = FormatReader.INT8; 
     
    247252      "XYZTC", // DimensionOrder 
    248253      null); // Use index 0 
     254   
     255    Float pixX = null; 
     256    Float pixY = null; 
     257    Float pixZ = null; 
     258 
     259    if (pixelSizes.size() > 0) { 
     260      pixX = new Float((String) pixelSizes.get(0)); 
     261    } 
     262    if (pixelSizes.size() > 1) { 
     263      pixY = new Float((String) pixelSizes.get(1)); 
     264    } 
     265    if (pixelSizes.size() > 2) { 
     266      pixZ = new Float((String) pixelSizes.get(2)); 
     267    } 
     268 
     269    store.setDimensions(pixX, pixY, pixZ, null, null, null); 
     270   
    249271  } 
    250272 
     
    280302          in.read(temp); 
    281303          dataType = DataTools.bytesToInt(temp, !littleEndian); 
    282           int data; 
     304          String data; 
    283305          switch (dataType) { 
    284306            case 2: 
    285               data = DataTools.read2SignedBytes(in, littleEndian); 
     307              data = "" + DataTools.read2SignedBytes(in, littleEndian); 
    286308              break; 
    287309            case 3: 
    288               data = DataTools.read4SignedBytes(in, littleEndian); 
     310              data = "" + DataTools.read4SignedBytes(in, littleEndian); 
    289311              break; 
    290312            case 4: 
    291               data = DataTools.read2UnsignedBytes(in, littleEndian); 
     313              data = "" + DataTools.read2UnsignedBytes(in, littleEndian); 
    292314              break; 
    293315            case 5: 
    294               data = (int) DataTools.read4UnsignedBytes(in, littleEndian); 
     316              data = "" + DataTools.read4UnsignedBytes(in, littleEndian); 
    295317              break; 
    296318            case 6: 
    297               data = (int) DataTools.readFloat(in, littleEndian); 
     319              data = "" + DataTools.readFloat(in, littleEndian); 
    298320              break; 
    299321            case 7: 
    300               data = (int) DataTools.readFloat(in, littleEndian); 
     322              data = "" + DataTools.readFloat(in, littleEndian); 
    301323              in.skipBytes(4); 
    302324              break; 
    303325            case 8: 
    304               data = DataTools.readSignedByte(in); 
     326              data = "" + DataTools.readSignedByte(in); 
    305327              break; 
    306328            case 9: 
    307               data = DataTools.readSignedByte(in); 
     329              data = "" + DataTools.readSignedByte(in); 
    308330              break; 
    309331            case 10: 
    310               data = DataTools.readSignedByte(in); 
     332              data = "" + DataTools.readSignedByte(in); 
    311333              break; 
    312334            default: 
    313               data = 0; 
     335              data = "0"; 
    314336          } 
    315337          if (parent.equals("Dimensions")) { 
    316             if (i == 0) dims[0] = data; 
    317             else if (i == 1) dims[1] = data; 
    318           } 
    319           if ("PixelDepth".equals(labelString)) dims[2] = data; 
    320           metadata.put(labelString, new Integer(data)); 
     338            if (i == 0) dims[0] = Integer.parseInt(data); 
     339            else if (i == 1) dims[1] = Integer.parseInt(data); 
     340          } 
     341          if (labelString.equals("PixelDepth")) { 
     342            dims[2] = Integer.parseInt(data); 
     343          } 
     344          else if (labelString.equals("Scale")) { 
     345            pixelSizes.add(data); 
     346          } 
     347          metadata.put(labelString, data); 
    321348        } 
    322349        else if (n == 2) { 
Note: See TracChangeset for help on using the changeset viewer.