Changeset 3252


Ignore:
Timestamp:
10/10/07 11:19:24 (12 years ago)
Author:
melissa
Message:

Fixed bug in fake rows per strip calculation.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/loci/formats/TiffTools.java

    r3204 r3252  
    887887      for (int i=0; i<bitsPerSample.length; i++) bitsPerSample[i] = (int) temp; 
    888888      temp = stripOffsets[0]; 
     889      /* 
    889890      stripOffsets = new long[bitsPerSample.length]; 
    890891      for (int i=0; i<bitsPerSample.length; i++) { 
     
    892893          stripOffsets[i - 1] + stripByteCounts[i]; 
    893894      } 
     895      */ 
    894896 
    895897      // we have two files that reverse the endianness for BitsPerSample, 
     
    10051007      } 
    10061008 
    1007       samplesPerPixel = stripOffsets.length; 
     1009      //samplesPerPixel = stripOffsets.length; 
    10081010    } 
    10091011 
    10101012    if (lastBitsZero) { 
    10111013      bitsPerSample[bitsPerSample.length - 1] = 0; 
    1012       samplesPerPixel--; 
     1014      //samplesPerPixel--; 
    10131015    } 
    10141016 
     
    11451147    long numStrips = (imageLength + rowsPerStrip - 1) / rowsPerStrip; 
    11461148 
    1147     if (isTiled) numStrips = stripOffsets.length; 
     1149    if (isTiled || fakeRPS) numStrips = stripOffsets.length; 
    11481150    if (planarConfig == 2) numStrips *= samplesPerPixel; 
    11491151 
    1150     if (stripOffsets.length < numStrips) { 
     1152    if (stripOffsets.length < numStrips && !fakeRPS) { 
    11511153      throw new FormatException("StripOffsets length (" + 
    11521154        stripOffsets.length + ") does not match expected " + 
    11531155        "number of strips (" + numStrips + ")"); 
    11541156    } 
     1157    else if (fakeRPS) numStrips = stripOffsets.length; 
    11551158 
    11561159    if (stripByteCounts.length < numStrips) { 
     
    11861189      tempMap[tempMap.length - 1] = (int) imageLength; 
    11871190      colorMap = tempMap; 
     1191    } 
     1192 
     1193    if (stripOffsets.length > 1 && (stripOffsets[stripOffsets.length - 1] == 
     1194      stripOffsets[stripOffsets.length - 2])) 
     1195    { 
     1196      long[] tmp = stripOffsets; 
     1197      stripOffsets = new long[tmp.length - 1]; 
     1198      System.arraycopy(tmp, 0, stripOffsets, 0, stripOffsets.length); 
     1199      numStrips--; 
    11881200    } 
    11891201 
     
    14981510 
    14991511        int ndx = startIndex + j; 
    1500         samples[channelNum][ndx] = (short) (b < 0 ? 256 + b : b); 
    1501  
    1502         if (photoInterp == WHITE_IS_ZERO) { // invert color value 
    1503           samples[channelNum][ndx] = 
    1504             (short) ((65535 - samples[channelNum][ndx]) & 0xffff); 
    1505         } 
    1506         else if (photoInterp == CMYK) { 
    1507           samples[channelNum][ndx] = 
    1508             (short) (Integer.MAX_VALUE - samples[channelNum][ndx]); 
     1512        if (ndx < samples[channelNum].length) { 
     1513          samples[channelNum][ndx] = (short) (b < 0 ? 256 + b : b); 
     1514 
     1515          if (photoInterp == WHITE_IS_ZERO) { // invert color value 
     1516            samples[channelNum][ndx] = 
     1517              (short) ((65535 - samples[channelNum][ndx]) & 0xffff); 
     1518          } 
     1519          else if (photoInterp == CMYK) { 
     1520            samples[channelNum][ndx] = 
     1521              (short) (Integer.MAX_VALUE - samples[channelNum][ndx]); 
     1522          } 
    15091523        } 
    15101524      } 
Note: See TracChangeset for help on using the changeset viewer.