src/share/classes/com/sun/imageio/plugins/jpeg/JPEGMetadata.java

Print this page
rev 9343 : 8033716: Fix raw and unchecked lint warnings in com.sun.imageio
Reviewed-by: darcy, prr, bae

*** 50,59 **** --- 50,60 ---- import java.util.ListIterator; import java.io.IOException; import java.awt.color.ICC_Profile; import java.awt.color.ICC_ColorSpace; import java.awt.color.ColorSpace; + import java.awt.image.BufferedImage; import java.awt.image.ColorModel; import java.awt.Point; /** * Metadata for the JPEG plug-in.
*** 67,77 **** /** * A copy of <code>markerSequence</code>, created the first time the * <code>markerSequence</code> is modified. This is used by reset * to restore the original state. */ ! private List resetSequence = null; /** * Set to <code>true</code> when reading a thumbnail stored as * JPEG. This is used to enforce the prohibition of JFIF thumbnails * containing any JFIF marker segments, and to ensure generation of --- 68,78 ---- /** * A copy of <code>markerSequence</code>, created the first time the * <code>markerSequence</code> is modified. This is used by reset * to restore the original state. */ ! private List<MarkerSegment> resetSequence = null; /** * Set to <code>true</code> when reading a thumbnail stored as * JPEG. This is used to enforce the prohibition of JFIF thumbnails * containing any JFIF marker segments, and to ensure generation of
*** 98,108 **** * of the list if it is present, and any JFXX or APP2ICC marker * segments are subordinate to the JFIF marker segment. This * list is package visible so that the writer can access it. * @see #MarkerSegment */ ! List markerSequence = new ArrayList(); /** * Indicates whether this object represents stream or image * metadata. Package-visible so the writer can see it. */ --- 99,109 ---- * of the list if it is present, and any JFXX or APP2ICC marker * segments are subordinate to the JFIF marker segment. This * list is package visible so that the writer can access it. * @see #MarkerSegment */ ! List<MarkerSegment> markerSequence = new ArrayList<>(); /** * Indicates whether this object represents stream or image * metadata. Package-visible so the writer can see it. */
*** 643,655 **** /** * Returns the first MarkerSegment object in the list * with the given tag, or null if none is found. */ MarkerSegment findMarkerSegment(int tag) { ! Iterator iter = markerSequence.iterator(); while (iter.hasNext()) { ! MarkerSegment seg = (MarkerSegment)iter.next(); if (seg.tag == tag) { return seg; } } return null; --- 644,656 ---- /** * Returns the first MarkerSegment object in the list * with the given tag, or null if none is found. */ MarkerSegment findMarkerSegment(int tag) { ! Iterator<MarkerSegment> iter = markerSequence.iterator(); while (iter.hasNext()) { ! MarkerSegment seg = iter.next(); if (seg.tag == tag) { return seg; } } return null;
*** 657,679 **** /** * Returns the first or last MarkerSegment object in the list * of the given class, or null if none is found. */ ! MarkerSegment findMarkerSegment(Class cls, boolean first) { if (first) { ! Iterator iter = markerSequence.iterator(); while (iter.hasNext()) { ! MarkerSegment seg = (MarkerSegment)iter.next(); if (cls.isInstance(seg)) { return seg; } } } else { ! ListIterator iter = markerSequence.listIterator(markerSequence.size()); while (iter.hasPrevious()) { ! MarkerSegment seg = (MarkerSegment)iter.previous(); if (cls.isInstance(seg)) { return seg; } } } --- 658,681 ---- /** * Returns the first or last MarkerSegment object in the list * of the given class, or null if none is found. */ ! MarkerSegment findMarkerSegment(Class<? extends MarkerSegment> cls, boolean first) { if (first) { ! Iterator<MarkerSegment> iter = markerSequence.iterator(); while (iter.hasNext()) { ! MarkerSegment seg = iter.next(); if (cls.isInstance(seg)) { return seg; } } } else { ! ListIterator<MarkerSegment> iter = ! markerSequence.listIterator(markerSequence.size()); while (iter.hasPrevious()) { ! MarkerSegment seg = iter.previous(); if (cls.isInstance(seg)) { return seg; } } }
*** 682,716 **** /** * Returns the index of the first or last MarkerSegment in the list * of the given class, or -1 if none is found. */ ! private int findMarkerSegmentPosition(Class cls, boolean first) { if (first) { ! ListIterator iter = markerSequence.listIterator(); for (int i = 0; iter.hasNext(); i++) { ! MarkerSegment seg = (MarkerSegment)iter.next(); if (cls.isInstance(seg)) { return i; } } } else { ! ListIterator iter = markerSequence.listIterator(markerSequence.size()); for (int i = markerSequence.size()-1; iter.hasPrevious(); i--) { ! MarkerSegment seg = (MarkerSegment)iter.previous(); if (cls.isInstance(seg)) { return i; } } } return -1; } private int findLastUnknownMarkerSegmentPosition() { ! ListIterator iter = markerSequence.listIterator(markerSequence.size()); for (int i = markerSequence.size()-1; iter.hasPrevious(); i--) { ! MarkerSegment seg = (MarkerSegment)iter.previous(); if (seg.unknown == true) { return i; } } return -1; --- 684,721 ---- /** * Returns the index of the first or last MarkerSegment in the list * of the given class, or -1 if none is found. */ ! private int findMarkerSegmentPosition(Class<? extends MarkerSegment> cls, ! boolean first) { if (first) { ! ListIterator<MarkerSegment> iter = markerSequence.listIterator(); for (int i = 0; iter.hasNext(); i++) { ! MarkerSegment seg = iter.next(); if (cls.isInstance(seg)) { return i; } } } else { ! ListIterator<MarkerSegment> iter = ! markerSequence.listIterator(markerSequence.size()); for (int i = markerSequence.size()-1; iter.hasPrevious(); i--) { ! MarkerSegment seg = iter.previous(); if (cls.isInstance(seg)) { return i; } } } return -1; } private int findLastUnknownMarkerSegmentPosition() { ! ListIterator<MarkerSegment> iter = ! markerSequence.listIterator(markerSequence.size()); for (int i = markerSequence.size()-1; iter.hasPrevious(); i--) { ! MarkerSegment seg = iter.previous(); if (seg.unknown == true) { return i; } } return -1;
*** 731,749 **** } /** * Returns a deep copy of the current marker sequence. */ ! private List cloneSequence() { if (markerSequence == null) { return null; } ! List retval = new ArrayList(markerSequence.size()); ! Iterator iter = markerSequence.iterator(); while(iter.hasNext()) { ! MarkerSegment seg = (MarkerSegment)iter.next(); ! retval.add(seg.clone()); } return retval; } --- 736,754 ---- } /** * Returns a deep copy of the current marker sequence. */ ! private List<MarkerSegment> cloneSequence() { if (markerSequence == null) { return null; } ! List<MarkerSegment> retval = new ArrayList<>(markerSequence.size()); ! Iterator<MarkerSegment> iter = markerSequence.iterator(); while(iter.hasNext()) { ! MarkerSegment seg = iter.next(); ! retval.add((MarkerSegment) seg.clone()); } return retval; }
*** 772,782 **** } IIOMetadataNode getNativeTree() { IIOMetadataNode root; IIOMetadataNode top; ! Iterator iter = markerSequence.iterator(); if (isStream) { root = new IIOMetadataNode(JPEG.nativeStreamMetadataFormatName); top = root; } else { IIOMetadataNode sequence = new IIOMetadataNode("markerSequence"); --- 777,787 ---- } IIOMetadataNode getNativeTree() { IIOMetadataNode root; IIOMetadataNode top; ! Iterator<MarkerSegment> iter = markerSequence.iterator(); if (isStream) { root = new IIOMetadataNode(JPEG.nativeStreamMetadataFormatName); top = root; } else { IIOMetadataNode sequence = new IIOMetadataNode("markerSequence");
*** 795,805 **** root = sequence; } top = sequence; } while(iter.hasNext()) { ! MarkerSegment seg = (MarkerSegment) iter.next(); top.appendChild(seg.getNativeNode()); } return root; } --- 800,810 ---- root = sequence; } top = sequence; } while(iter.hasNext()) { ! MarkerSegment seg = iter.next(); top.appendChild(seg.getNativeNode()); } return root; }
*** 959,971 **** lossless.setAttribute("value", "FALSE"); compression.appendChild(lossless); // NumProgressiveScans - count sos segments int sosCount = 0; ! Iterator iter = markerSequence.iterator(); while (iter.hasNext()) { ! MarkerSegment ms = (MarkerSegment) iter.next(); if (ms.tag == JPEG.SOS) { sosCount++; } } if (sosCount != 0) { --- 964,976 ---- lossless.setAttribute("value", "FALSE"); compression.appendChild(lossless); // NumProgressiveScans - count sos segments int sosCount = 0; ! Iterator<MarkerSegment> iter = markerSequence.iterator(); while (iter.hasNext()) { ! MarkerSegment ms = iter.next(); if (ms.tag == JPEG.SOS) { sosCount++; } } if (sosCount != 0) {
*** 1026,1038 **** protected IIOMetadataNode getStandardTextNode() { IIOMetadataNode text = null; // Add a text entry for each COM Marker Segment if (findMarkerSegment(JPEG.COM) != null) { text = new IIOMetadataNode("Text"); ! Iterator iter = markerSequence.iterator(); while (iter.hasNext()) { ! MarkerSegment seg = (MarkerSegment) iter.next(); if (seg.tag == JPEG.COM) { COMMarkerSegment com = (COMMarkerSegment) seg; IIOMetadataNode entry = new IIOMetadataNode("TextEntry"); entry.setAttribute("keyword", "comment"); entry.setAttribute("value", com.getComment()); --- 1031,1043 ---- protected IIOMetadataNode getStandardTextNode() { IIOMetadataNode text = null; // Add a text entry for each COM Marker Segment if (findMarkerSegment(JPEG.COM) != null) { text = new IIOMetadataNode("Text"); ! Iterator<MarkerSegment> iter = markerSequence.iterator(); while (iter.hasNext()) { ! MarkerSegment seg = iter.next(); if (seg.tag == JPEG.COM) { COMMarkerSegment com = (COMMarkerSegment) seg; IIOMetadataNode entry = new IIOMetadataNode("TextEntry"); entry.setAttribute("keyword", "comment"); entry.setAttribute("value", com.getComment());
*** 1066,1076 **** throw new IllegalArgumentException("null formatName!"); } if (root == null) { throw new IllegalArgumentException("null root!"); } ! List copy = null; if (resetSequence == null) { resetSequence = cloneSequence(); // Deep copy copy = resetSequence; // Avoid cloning twice } else { copy = cloneSequence(); --- 1071,1081 ---- throw new IllegalArgumentException("null formatName!"); } if (root == null) { throw new IllegalArgumentException("null root!"); } ! List<MarkerSegment> copy = null; if (resetSequence == null) { resetSequence = cloneSequence(); // Deep copy copy = resetSequence; // Avoid cloning twice } else { copy = cloneSequence();
*** 1179,1194 **** * If there is no SOS segment, the new DQT segment is added to the end * of the sequence. */ private void mergeDQTNode(Node node) throws IIOInvalidTreeException { // First collect any existing DQT nodes into a local list ! ArrayList oldDQTs = new ArrayList(); ! Iterator iter = markerSequence.iterator(); while (iter.hasNext()) { ! MarkerSegment seg = (MarkerSegment) iter.next(); if (seg instanceof DQTMarkerSegment) { ! oldDQTs.add(seg); } } if (!oldDQTs.isEmpty()) { NodeList children = node.getChildNodes(); for (int i = 0; i < children.getLength(); i++) { --- 1184,1199 ---- * If there is no SOS segment, the new DQT segment is added to the end * of the sequence. */ private void mergeDQTNode(Node node) throws IIOInvalidTreeException { // First collect any existing DQT nodes into a local list ! ArrayList<DQTMarkerSegment> oldDQTs = new ArrayList<>(); ! Iterator<MarkerSegment> iter = markerSequence.iterator(); while (iter.hasNext()) { ! MarkerSegment seg = iter.next(); if (seg instanceof DQTMarkerSegment) { ! oldDQTs.add((DQTMarkerSegment) seg); } } if (!oldDQTs.isEmpty()) { NodeList children = node.getChildNodes(); for (int i = 0; i < children.getLength(); i++) {
*** 1199,1212 **** 0, 3, true); DQTMarkerSegment dqt = null; int tableIndex = -1; for (int j = 0; j < oldDQTs.size(); j++) { ! DQTMarkerSegment testDQT = (DQTMarkerSegment) oldDQTs.get(j); for (int k = 0; k < testDQT.tables.size(); k++) { ! DQTMarkerSegment.Qtable testTable = ! (DQTMarkerSegment.Qtable) testDQT.tables.get(k); if (childID == testTable.tableID) { dqt = testDQT; tableIndex = k; break; } --- 1204,1216 ---- 0, 3, true); DQTMarkerSegment dqt = null; int tableIndex = -1; for (int j = 0; j < oldDQTs.size(); j++) { ! DQTMarkerSegment testDQT = oldDQTs.get(j); for (int k = 0; k < testDQT.tables.size(); k++) { ! DQTMarkerSegment.Qtable testTable = testDQT.tables.get(k); if (childID == testTable.tableID) { dqt = testDQT; tableIndex = k; break; }
*** 1214,1224 **** if (dqt != null) break; } if (dqt != null) { dqt.tables.set(tableIndex, dqt.getQtableFromNode(child)); } else { ! dqt = (DQTMarkerSegment) oldDQTs.get(oldDQTs.size()-1); dqt.tables.add(dqt.getQtableFromNode(child)); } } } else { DQTMarkerSegment newGuy = new DQTMarkerSegment(node); --- 1218,1228 ---- if (dqt != null) break; } if (dqt != null) { dqt.tables.set(tableIndex, dqt.getQtableFromNode(child)); } else { ! dqt = oldDQTs.get(oldDQTs.size()-1); dqt.tables.add(dqt.getQtableFromNode(child)); } } } else { DQTMarkerSegment newGuy = new DQTMarkerSegment(node);
*** 1255,1270 **** * If there is no SOS segment, the new DHT segment is added to the end * of the sequence. */ private void mergeDHTNode(Node node) throws IIOInvalidTreeException { // First collect any existing DQT nodes into a local list ! ArrayList oldDHTs = new ArrayList(); ! Iterator iter = markerSequence.iterator(); while (iter.hasNext()) { ! MarkerSegment seg = (MarkerSegment) iter.next(); if (seg instanceof DHTMarkerSegment) { ! oldDHTs.add(seg); } } if (!oldDHTs.isEmpty()) { NodeList children = node.getChildNodes(); for (int i = 0; i < children.getLength(); i++) { --- 1259,1274 ---- * If there is no SOS segment, the new DHT segment is added to the end * of the sequence. */ private void mergeDHTNode(Node node) throws IIOInvalidTreeException { // First collect any existing DQT nodes into a local list ! ArrayList<DHTMarkerSegment> oldDHTs = new ArrayList<>(); ! Iterator<MarkerSegment> iter = markerSequence.iterator(); while (iter.hasNext()) { ! MarkerSegment seg = iter.next(); if (seg instanceof DHTMarkerSegment) { ! oldDHTs.add((DHTMarkerSegment) seg); } } if (!oldDHTs.isEmpty()) { NodeList children = node.getChildNodes(); for (int i = 0; i < children.getLength(); i++) {
*** 1281,1294 **** 0, 1, true); DHTMarkerSegment dht = null; int tableIndex = -1; for (int j = 0; j < oldDHTs.size(); j++) { ! DHTMarkerSegment testDHT = (DHTMarkerSegment) oldDHTs.get(j); for (int k = 0; k < testDHT.tables.size(); k++) { ! DHTMarkerSegment.Htable testTable = ! (DHTMarkerSegment.Htable) testDHT.tables.get(k); if ((childID == testTable.tableID) && (childClass == testTable.tableClass)) { dht = testDHT; tableIndex = k; break; --- 1285,1297 ---- 0, 1, true); DHTMarkerSegment dht = null; int tableIndex = -1; for (int j = 0; j < oldDHTs.size(); j++) { ! DHTMarkerSegment testDHT = oldDHTs.get(j); for (int k = 0; k < testDHT.tables.size(); k++) { ! DHTMarkerSegment.Htable testTable = testDHT.tables.get(k); if ((childID == testTable.tableID) && (childClass == testTable.tableClass)) { dht = testDHT; tableIndex = k; break;
*** 1297,1307 **** if (dht != null) break; } if (dht != null) { dht.tables.set(tableIndex, dht.getHtableFromNode(child)); } else { ! dht = (DHTMarkerSegment) oldDHTs.get(oldDHTs.size()-1); dht.tables.add(dht.getHtableFromNode(child)); } } } else { DHTMarkerSegment newGuy = new DHTMarkerSegment(node); --- 1300,1310 ---- if (dht != null) break; } if (dht != null) { dht.tables.set(tableIndex, dht.getHtableFromNode(child)); } else { ! dht = oldDHTs.get(oldDHTs.size()-1); dht.tables.add(dht.getHtableFromNode(child)); } } } else { DHTMarkerSegment newGuy = new DHTMarkerSegment(node);
*** 1733,1744 **** idsDiffer = true; } } if (idsDiffer) { // update the ids in each SOS marker segment ! for (Iterator iter = markerSequence.iterator(); iter.hasNext();) { ! MarkerSegment seg = (MarkerSegment) iter.next(); if (seg instanceof SOSMarkerSegment) { SOSMarkerSegment target = (SOSMarkerSegment) seg; for (int i = 0; i < target.componentSpecs.length; i++) { int oldSelector = target.componentSpecs[i].componentSelector; --- 1736,1748 ---- idsDiffer = true; } } if (idsDiffer) { // update the ids in each SOS marker segment ! for (Iterator<MarkerSegment> iter = markerSequence.iterator(); ! iter.hasNext();) { ! MarkerSegment seg = iter.next(); if (seg instanceof SOSMarkerSegment) { SOSMarkerSegment target = (SOSMarkerSegment) seg; for (int i = 0; i < target.componentSpecs.length; i++) { int oldSelector = target.componentSpecs[i].componentSelector;
*** 1786,1800 **** updateHtables = true; } } if (updateQtables) { ! List tableSegments = new ArrayList(); ! for (Iterator iter = markerSequence.iterator(); iter.hasNext();) { ! MarkerSegment seg = (MarkerSegment) iter.next(); if (seg instanceof DQTMarkerSegment) { ! tableSegments.add(seg); } } // If there are no tables, don't add them, as the metadata encodes an // abbreviated stream. // If we are not subsampling, we just need one, so don't do anything --- 1790,1805 ---- updateHtables = true; } } if (updateQtables) { ! List<DQTMarkerSegment> tableSegments = new ArrayList<>(); ! for (Iterator<MarkerSegment> iter = markerSequence.iterator(); ! iter.hasNext();) { ! MarkerSegment seg = iter.next(); if (seg instanceof DQTMarkerSegment) { ! tableSegments.add((DQTMarkerSegment) seg); } } // If there are no tables, don't add them, as the metadata encodes an // abbreviated stream. // If we are not subsampling, we just need one, so don't do anything
*** 1804,1855 **** // luminance table, extract the scaling factor, and generate a // scaled "standard" chrominance table. // Find the table with selector 1. boolean found = false; ! for (Iterator iter = tableSegments.iterator(); iter.hasNext();) { ! DQTMarkerSegment testdqt = (DQTMarkerSegment) iter.next(); ! for (Iterator tabiter = testdqt.tables.iterator(); ! tabiter.hasNext();) { ! DQTMarkerSegment.Qtable tab = ! (DQTMarkerSegment.Qtable) tabiter.next(); if (tab.tableID == 1) { found = true; } } } if (!found) { // find the table with selector 0. There should be one. DQTMarkerSegment.Qtable table0 = null; ! for (Iterator iter = tableSegments.iterator(); iter.hasNext();) { ! DQTMarkerSegment testdqt = (DQTMarkerSegment) iter.next(); ! for (Iterator tabiter = testdqt.tables.iterator(); ! tabiter.hasNext();) { ! DQTMarkerSegment.Qtable tab = ! (DQTMarkerSegment.Qtable) tabiter.next(); if (tab.tableID == 0) { table0 = tab; } } } // Assuming that the table with id 0 is a luminance table, // compute a new chrominance table of the same quality and // add it to the last DQT segment ! DQTMarkerSegment dqt = ! (DQTMarkerSegment) tableSegments.get(tableSegments.size()-1); dqt.tables.add(dqt.getChromaForLuma(table0)); } } } if (updateHtables) { ! List tableSegments = new ArrayList(); ! for (Iterator iter = markerSequence.iterator(); iter.hasNext();) { ! MarkerSegment seg = (MarkerSegment) iter.next(); if (seg instanceof DHTMarkerSegment) { ! tableSegments.add(seg); } } // If there are no tables, don't add them, as the metadata encodes an // abbreviated stream. // If we are not subsampling, we just need one, so don't do anything --- 1809,1860 ---- // luminance table, extract the scaling factor, and generate a // scaled "standard" chrominance table. // Find the table with selector 1. boolean found = false; ! for (Iterator<DQTMarkerSegment> iter = tableSegments.iterator(); ! iter.hasNext();) { ! DQTMarkerSegment testdqt = iter.next(); ! for (Iterator<DQTMarkerSegment.Qtable> tabiter = ! testdqt.tables.iterator(); tabiter.hasNext();) { ! DQTMarkerSegment.Qtable tab = tabiter.next(); if (tab.tableID == 1) { found = true; } } } if (!found) { // find the table with selector 0. There should be one. DQTMarkerSegment.Qtable table0 = null; ! for (Iterator<DQTMarkerSegment> iter = ! tableSegments.iterator(); iter.hasNext();) { ! DQTMarkerSegment testdqt = iter.next(); ! for (Iterator<DQTMarkerSegment.Qtable> tabiter = ! testdqt.tables.iterator(); tabiter.hasNext();) { ! DQTMarkerSegment.Qtable tab = tabiter.next(); if (tab.tableID == 0) { table0 = tab; } } } // Assuming that the table with id 0 is a luminance table, // compute a new chrominance table of the same quality and // add it to the last DQT segment ! DQTMarkerSegment dqt = tableSegments.get(tableSegments.size()-1); dqt.tables.add(dqt.getChromaForLuma(table0)); } } } if (updateHtables) { ! List<DHTMarkerSegment> tableSegments = new ArrayList<>(); ! for (Iterator<MarkerSegment> iter = markerSequence.iterator(); ! iter.hasNext();) { ! MarkerSegment seg = iter.next(); if (seg instanceof DHTMarkerSegment) { ! tableSegments.add((DHTMarkerSegment) seg); } } // If there are no tables, don't add them, as the metadata encodes an // abbreviated stream. // If we are not subsampling, we just need one, so don't do anything
*** 1858,1883 **** // tables. If there is only one, add a // "standard " chrominance table. // find a table with selector 1. AC/DC is irrelevant boolean found = false; ! for (Iterator iter = tableSegments.iterator(); iter.hasNext();) { ! DHTMarkerSegment testdht = (DHTMarkerSegment) iter.next(); ! for (Iterator tabiter = testdht.tables.iterator(); ! tabiter.hasNext();) { ! DHTMarkerSegment.Htable tab = ! (DHTMarkerSegment.Htable) tabiter.next(); if (tab.tableID == 1) { found = true; } } } if (!found) { // Create new standard dc and ac chrominance tables and add them // to the last DHT segment DHTMarkerSegment lastDHT = ! (DHTMarkerSegment) tableSegments.get(tableSegments.size()-1); lastDHT.addHtable(JPEGHuffmanTable.StdDCLuminance, true, 1); lastDHT.addHtable(JPEGHuffmanTable.StdACLuminance, true, 1); } } } --- 1863,1888 ---- // tables. If there is only one, add a // "standard " chrominance table. // find a table with selector 1. AC/DC is irrelevant boolean found = false; ! for (Iterator<DHTMarkerSegment> iter = tableSegments.iterator(); ! iter.hasNext();) { ! DHTMarkerSegment testdht = iter.next(); ! for (Iterator<DHTMarkerSegment.Htable> tabiter = ! testdht.tables.iterator(); tabiter.hasNext();) { ! DHTMarkerSegment.Htable tab = tabiter.next(); if (tab.tableID == 1) { found = true; } } } if (!found) { // Create new standard dc and ac chrominance tables and add them // to the last DHT segment DHTMarkerSegment lastDHT = ! tableSegments.get(tableSegments.size()-1); lastDHT.addHtable(JPEGHuffmanTable.StdDCLuminance, true, 1); lastDHT.addHtable(JPEGHuffmanTable.StdACLuminance, true, 1); } } }
*** 2179,2189 **** private void setFromNativeTree(Node root) throws IIOInvalidTreeException { if (resetSequence == null) { resetSequence = markerSequence; } ! markerSequence = new ArrayList(); // Build a whole new marker sequence from the tree String name = root.getNodeName(); if (name != ((isStream) ? JPEG.nativeStreamMetadataFormatName --- 2184,2194 ---- private void setFromNativeTree(Node root) throws IIOInvalidTreeException { if (resetSequence == null) { resetSequence = markerSequence; } ! markerSequence = new ArrayList<>(); // Build a whole new marker sequence from the tree String name = root.getNodeName(); if (name != ((isStream) ? JPEG.nativeStreamMetadataFormatName
*** 2308,2321 **** /** * Returns the total number of bands referenced in all SOS marker * segments, including 0 if there are no SOS marker segments. */ private int countScanBands() { ! List ids = new ArrayList(); ! Iterator iter = markerSequence.iterator(); while(iter.hasNext()) { ! MarkerSegment seg = (MarkerSegment)iter.next(); if (seg instanceof SOSMarkerSegment) { SOSMarkerSegment sos = (SOSMarkerSegment) seg; SOSMarkerSegment.ScanComponentSpec [] specs = sos.componentSpecs; for (int i = 0; i < specs.length; i++) { Integer id = new Integer(specs[i].componentSelector); --- 2313,2326 ---- /** * Returns the total number of bands referenced in all SOS marker * segments, including 0 if there are no SOS marker segments. */ private int countScanBands() { ! List<Integer> ids = new ArrayList<>(); ! Iterator<MarkerSegment> iter = markerSequence.iterator(); while(iter.hasNext()) { ! MarkerSegment seg = iter.next(); if (seg instanceof SOSMarkerSegment) { SOSMarkerSegment sos = (SOSMarkerSegment) seg; SOSMarkerSegment.ScanComponentSpec [] specs = sos.componentSpecs; for (int i = 0; i < specs.length; i++) { Integer id = new Integer(specs[i].componentSelector);
*** 2332,2342 **** ///// Writer support void writeToStream(ImageOutputStream ios, boolean ignoreJFIF, boolean forceJFIF, ! List thumbnails, ICC_Profile iccProfile, boolean ignoreAdobe, int newAdobeTransform, JPEGImageWriter writer) throws IOException { --- 2337,2347 ---- ///// Writer support void writeToStream(ImageOutputStream ios, boolean ignoreJFIF, boolean forceJFIF, ! List<? extends BufferedImage> thumbnails, ICC_Profile iccProfile, boolean ignoreAdobe, int newAdobeTransform, JPEGImageWriter writer) throws IOException {
*** 2358,2370 **** (JPEGImageWriter.WARNING_METADATA_ADJUSTED_FOR_THUMB); } } } // Iterate over each MarkerSegment ! Iterator iter = markerSequence.iterator(); while(iter.hasNext()) { ! MarkerSegment seg = (MarkerSegment)iter.next(); if (seg instanceof JFIFMarkerSegment) { if (ignoreJFIF == false) { JFIFMarkerSegment jfif = (JFIFMarkerSegment) seg; jfif.writeWithThumbs(ios, thumbnails, writer); if (iccProfile != null) { --- 2363,2375 ---- (JPEGImageWriter.WARNING_METADATA_ADJUSTED_FOR_THUMB); } } } // Iterate over each MarkerSegment ! Iterator<MarkerSegment> iter = markerSequence.iterator(); while(iter.hasNext()) { ! MarkerSegment seg = iter.next(); if (seg instanceof JFIFMarkerSegment) { if (ignoreJFIF == false) { JFIFMarkerSegment jfif = (JFIFMarkerSegment) seg; jfif.writeWithThumbs(ios, thumbnails, writer); if (iccProfile != null) {
*** 2407,2417 **** } } public void print() { for (int i = 0; i < markerSequence.size(); i++) { ! MarkerSegment seg = (MarkerSegment) markerSequence.get(i); seg.print(); } } } --- 2412,2422 ---- } } public void print() { for (int i = 0; i < markerSequence.size(); i++) { ! MarkerSegment seg = markerSequence.get(i); seg.print(); } } }