Changeset 6437


Ignore:
Timestamp:
06/01/10 17:22:55 (10 years ago)
Author:
curtis
Message:

Add scaleFactor option to FakeReader for scaling gradient pixel values.

File:
1 edited

Legend:

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

    r6419 r6437  
    6464  // -- Fields -- 
    6565 
     66  /** Scale factor for gradient, if any. */ 
     67  private double scaleFactor = 1; 
     68 
    6669  /** 8-bit lookup table, if indexed color. */ 
    6770  private byte[][] lut8 = null; 
     
    123126        for (int col=0; col<w; col++) { 
    124127          int xx = x + col; 
    125    
     128          long pixel = min + xx; 
     129 
    126130          // encode various information into the image plane 
    127           long pixel = min + xx; 
     131          boolean specialPixel = false; 
    128132          if (yy < BOX_SIZE) { 
    129133            int grid = xx / BOX_SIZE; 
     134            specialPixel = true; 
    130135            switch (grid) { 
    131136              case 0: 
     
    144149                pixel = tIndex; 
    145150                break; 
     151              default: 
     152                // just a normal pixel in the gradient 
     153                specialPixel = false; 
    146154            } 
    147155          } 
    148    
     156 
    149157          // if indexed color with non-null LUT, convert value to index 
    150158          if (indexed) { 
     
    152160            if (lut16 != null) pixel = valueToIndex[(int) (pixel % 65536)]; 
    153161          } 
    154    
     162 
     163          // scale pixel value by the scale factor 
    155164          // if floating point, convert value to raw IEEE floating point bits 
    156165          switch (pixelType) { 
    157166            case FormatTools.FLOAT: 
    158               pixel = Float.floatToIntBits(pixel); 
     167              float floatPixel; 
     168              if (specialPixel) floatPixel = pixel; 
     169              else floatPixel = (float) (scaleFactor * pixel); 
     170              pixel = Float.floatToIntBits(floatPixel); 
    159171              break; 
    160172            case FormatTools.DOUBLE: 
    161               pixel = Double.doubleToLongBits(pixel); 
     173              double doublePixel; 
     174              if (specialPixel) doublePixel = pixel; 
     175              else doublePixel = scaleFactor * pixel; 
     176              pixel = Double.doubleToLongBits(doublePixel); 
    162177              break; 
     178            default: 
     179              if (!specialPixel) pixel = (long) (scaleFactor * pixel); 
    163180          } 
    164181 
     
    223240      String value = token.substring(equals + 1); 
    224241 
    225       boolean bool = value.equals("true"); 
    226       int num = -1; 
    227       try { num = Integer.parseInt(value); } 
     242      boolean boolValue = value.equals("true"); 
     243      double doubleValue = Double.NaN; 
     244      try { 
     245        doubleValue = Double.parseDouble(value); 
     246      } 
    228247      catch (NumberFormatException exc) { } 
    229  
    230       if (key.equals("sizeX")) sizeX = num; 
    231       else if (key.equals("sizeY")) sizeY = num; 
    232       else if (key.equals("sizeZ")) sizeZ = num; 
    233       else if (key.equals("sizeC")) sizeC = num; 
    234       else if (key.equals("sizeT")) sizeT = num; 
    235       else if (key.equals("thumbSizeX")) thumbSizeX = num; 
    236       else if (key.equals("thumbSizeY")) thumbSizeY = num; 
     248      int intValue = Double.isNaN(doubleValue) ? -1 : (int) doubleValue; 
     249 
     250      if (key.equals("sizeX")) sizeX = intValue; 
     251      else if (key.equals("sizeY")) sizeY = intValue; 
     252      else if (key.equals("sizeZ")) sizeZ = intValue; 
     253      else if (key.equals("sizeC")) sizeC = intValue; 
     254      else if (key.equals("sizeT")) sizeT = intValue; 
     255      else if (key.equals("thumbSizeX")) thumbSizeX = intValue; 
     256      else if (key.equals("thumbSizeY")) thumbSizeY = intValue; 
    237257      else if (key.equals("pixelType")) { 
    238258        pixelType = FormatTools.pixelTypeFromString(value); 
    239259      } 
    240       else if (key.equals("rgb")) rgb = num; 
     260      else if (key.equals("rgb")) rgb = intValue; 
    241261      else if (key.equals("dimOrder")) dimOrder = value.toUpperCase(); 
    242       else if (key.equals("orderCertain")) orderCertain = bool; 
    243       else if (key.equals("little")) little = bool; 
    244       else if (key.equals("interleaved")) interleaved = bool; 
    245       else if (key.equals("indexed")) indexed = bool; 
    246       else if (key.equals("falseColor")) falseColor = bool; 
    247       else if (key.equals("metadataComplete")) metadataComplete = bool; 
    248       else if (key.equals("thumbnail")) thumbnail = bool; 
    249       else if (key.equals("series")) seriesCount = num; 
    250       else if (key.equals("lutLength")) lutLength = num; 
     262      else if (key.equals("orderCertain")) orderCertain = boolValue; 
     263      else if (key.equals("little")) little = boolValue; 
     264      else if (key.equals("interleaved")) interleaved = boolValue; 
     265      else if (key.equals("indexed")) indexed = boolValue; 
     266      else if (key.equals("falseColor")) falseColor = boolValue; 
     267      else if (key.equals("metadataComplete")) metadataComplete = boolValue; 
     268      else if (key.equals("thumbnail")) thumbnail = boolValue; 
     269      else if (key.equals("series")) seriesCount = intValue; 
     270      else if (key.equals("lutLength")) lutLength = intValue; 
     271      else if (key.equals("scaleFactor")) scaleFactor = doubleValue; 
    251272    } 
    252273 
Note: See TracChangeset for help on using the changeset viewer.