Author: damjan
Date: Wed Sep 7 01:59:29 2016
New Revision: 1759533
URL: http://svn.apache.org/viewvc?rev=1759533&view=rev
Log:
Some TiffImageWriterLossless cleanups.
Modified:
commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/write/TiffImageWriterLossless.java
Modified:
commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/write/TiffImageWriterLossless.java
URL:
http://svn.apache.org/viewvc/commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/write/TiffImageWriterLossless.java?rev=1759533&r1=1759532&r2=1759533&view=diff
==============================================================================
---
commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/write/TiffImageWriterLossless.java
(original)
+++
commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/write/TiffImageWriterLossless.java
Wed Sep 7 01:59:29 2016
@@ -20,6 +20,7 @@ import java.io.IOException;
import java.io.OutputStream;
import java.nio.ByteOrder;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
@@ -78,14 +79,12 @@ public class TiffImageWriterLossless ext
byteSource, params, formatCompliance);
final List<TiffElement> elements = new ArrayList<>();
- // result.add(contents.header); // ?
final List<TiffDirectory> directories = contents.directories;
- for (TiffDirectory directory : directories) {
+ for (final TiffDirectory directory : directories) {
elements.add(directory);
- final List<TiffField> fields = directory.getDirectoryEntries();
- for (TiffField field : fields) {
+ for (TiffField field : directory.getDirectoryEntries()) {
final TiffElement oversizeValue =
field.getOversizeValueElement();
if (oversizeValue != null) {
final TiffOutputField frozenField =
frozenFields.get(field.getTag());
@@ -113,35 +112,28 @@ public class TiffImageWriterLossless ext
Collections.sort(elements, TiffElement.COMPARATOR);
- // dumpElements(byteSource, elements);
-
final List<TiffElement> rewritableElements = new ArrayList<>();
- {
- final int TOLERANCE = 3;
- // int last = TIFF_HEADER_SIZE;
- TiffElement start = null;
- long index = -1;
- for (TiffElement element : elements) {
- final long lastElementByte = element.offset +
element.length;
- if (start == null) {
- start = element;
- index = lastElementByte;
- } else if (element.offset - index > TOLERANCE) {
- rewritableElements.add(new
TiffElement.Stub(start.offset,
- (int) (index - start.offset)));
- start = element;
- index = lastElementByte;
- } else {
- index = lastElementByte;
- }
- }
- if (null != start) {
+ final int TOLERANCE = 3;
+ TiffElement start = null;
+ long index = -1;
+ for (final TiffElement element : elements) {
+ final long lastElementByte = element.offset + element.length;
+ if (start == null) {
+ start = element;
+ index = lastElementByte;
+ } else if (element.offset - index > TOLERANCE) {
rewritableElements.add(new TiffElement.Stub(start.offset,
(int) (index - start.offset)));
+ start = element;
+ index = lastElementByte;
+ } else {
+ index = lastElementByte;
}
}
-
- // dumpElements(byteSource, result);
+ if (null != start) {
+ rewritableElements.add(new TiffElement.Stub(start.offset,
+ (int) (index - start.offset)));
+ }
return rewritableElements;
} catch (final ImageReadException e) {
@@ -183,8 +175,7 @@ public class TiffImageWriterLossless ext
final TiffOutputSummary outputSummary = validateDirectories(outputSet);
- final List<TiffOutputItem> allOutputItems = outputSet
- .getOutputItems(outputSummary);
+ final List<TiffOutputItem> allOutputItems =
outputSet.getOutputItems(outputSummary);
final List<TiffOutputItem> outputItems = new ArrayList<>();
for (final TiffOutputItem outputItem : allOutputItems) {
if (!frozenFieldOffsets.containsKey(outputItem.getOffset())) {
@@ -311,24 +302,15 @@ public class TiffImageWriterLossless ext
System.arraycopy(exifBytes, 0, output, 0,
Math.min(exifBytes.length, output.length));
- // bos.write(exifBytes, TIFF_HEADER_SIZE, exifBytes.length
- // - TIFF_HEADER_SIZE);
-
- {
- final BufferOutputStream tos = new BufferOutputStream(output, 0);
- final BinaryOutputStream bos = new BinaryOutputStream(tos,
byteOrder);
- writeImageFileHeader(bos, rootDirectory.getOffset());
- }
+ final BufferOutputStream headerStream = new BufferOutputStream(output,
0);
+ final BinaryOutputStream headerBinaryStream = new
BinaryOutputStream(headerStream, byteOrder);
+ writeImageFileHeader(headerBinaryStream, rootDirectory.getOffset());
// zero out the parsed pieces of old exif segment, in case we don't
// overwrite them.
- for (TiffElement element : analysis) {
- for (int j = 0; j < element.length; j++) {
- final int index = (int) (element.offset + j);
- if (index < output.length) {
- output[index] = 0;
- }
- }
+ for (final TiffElement element : analysis) {
+ Arrays.fill(output, (int)element.offset,
+ (int)Math.min(element.offset + element.length,
output.length), (byte)0);
}
// write in the new items