Changeset 5125


Ignore:
Timestamp:
05/27/09 12:41:11 (11 years ago)
Author:
melissa
Message:

Reverted type preservation changes from r5037. These changes caused major problems with other TIFF decoders (ImageMagick, Windows Photo Viewer, and Preview).

File:
1 edited

Legend:

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

    r5117 r5125  
    14881488    // write directory entry to output buffers 
    14891489    DataTools.writeShort(ifdOut, tag, littleEndian); // tag 
    1490     if (value instanceof byte[]) { 
    1491       byte[] q = (byte[]) value; 
     1490    if (value instanceof short[]) { 
     1491      short[] q = (short[]) value; 
    14921492      DataTools.writeShort(ifdOut, BYTE, littleEndian); 
    14931493      if (bigTiff) DataTools.writeLong(ifdOut, q.length, littleEndian); 
     
    15061506        } 
    15071507        for (int i=0; i<q.length; i++) extraOut.writeByte(q[i]); 
    1508       } 
    1509     } 
    1510     else if (value instanceof short[]) { // SHORT 
    1511       short[] q = (short[]) value; 
    1512       DataTools.writeShort(ifdOut, SHORT, littleEndian); // type 
    1513       if (bigTiff) DataTools.writeLong(ifdOut, q.length, littleEndian); 
    1514       else DataTools.writeInt(ifdOut, q.length, littleEndian); 
    1515       if (q.length <= dataLength / 2) { 
    1516         for (int i=0; i<q.length; i++) { 
    1517           DataTools.writeShort(ifdOut, q[i], littleEndian); 
    1518         } 
    1519         for (int i=q.length; i<dataLength / 2; i++) { 
    1520           DataTools.writeShort(ifdOut, 0, littleEndian); 
    1521         } 
    1522       } 
    1523       else { 
    1524         if (bigTiff) { 
    1525           DataTools.writeLong(ifdOut, offset + extraBuf.size(), littleEndian); 
    1526         } 
    1527         else { 
    1528           // offset 
    1529           DataTools.writeInt(ifdOut, (int) (offset + extraBuf.size()), 
    1530             littleEndian); 
    1531         } 
    1532         for (int i=0; i<q.length; i++) { 
    1533           DataTools.writeShort(extraOut, q[i], littleEndian); 
    1534         } 
    15351508      } 
    15361509    } 
     
    15571530      } 
    15581531    } 
    1559     else if (value instanceof int[]) { // LONG 
     1532    else if (value instanceof int[]) { // SHORT 
    15601533      int[] q = (int[]) value; 
    1561       DataTools.writeShort(ifdOut, LONG, littleEndian); // type 
     1534      DataTools.writeShort(ifdOut, SHORT, littleEndian); // type 
    15621535      if (bigTiff) DataTools.writeLong(ifdOut, q.length, littleEndian); 
    15631536      else DataTools.writeInt(ifdOut, q.length, littleEndian); 
    1564       if (q.length <= dataLength / 4) { 
     1537      if (q.length <= dataLength / 2) { 
    15651538        for (int i=0; i<q.length; i++) { 
    1566           DataTools.writeInt(ifdOut, q[i], littleEndian); // value(s) 
    1567         } 
    1568         for (int i=q.length; i<dataLength / 4; i++) { 
    1569           DataTools.writeInt(ifdOut, 0, littleEndian); // padding 
     1539          DataTools.writeShort(ifdOut, q[i], littleEndian); // value(s) 
     1540        } 
     1541        for (int i=q.length; i<dataLength / 2; i++) { 
     1542          DataTools.writeShort(ifdOut, 0, littleEndian); // padding 
    15701543        } 
    15711544      } 
     
    15801553        } 
    15811554        for (int i=0; i<q.length; i++) { 
    1582           DataTools.writeInt(extraOut, q[i], littleEndian); // values 
     1555          DataTools.writeShort(extraOut, q[i], littleEndian); // values 
    15831556        } 
    15841557      } 
Note: See TracChangeset for help on using the changeset viewer.