You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by da...@apache.org on 2013/10/23 19:38:06 UTC

svn commit: r1535081 - in /commons/proper/imaging/trunk/src: changes/changes.xml main/java/org/apache/commons/imaging/formats/jpeg/decoder/JpegDecoder.java main/java/org/apache/commons/imaging/formats/jpeg/segments/DhtSegment.java

Author: damjan
Date: Wed Oct 23 17:38:06 2013
New Revision: 1535081

URL: http://svn.apache.org/r1535081
Log:
Encapsulate DhtSegment's public mutable arrays.

Jira issue key: IMAGING-115


Modified:
    commons/proper/imaging/trunk/src/changes/changes.xml
    commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/jpeg/decoder/JpegDecoder.java
    commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/DhtSegment.java

Modified: commons/proper/imaging/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/imaging/trunk/src/changes/changes.xml?rev=1535081&r1=1535080&r2=1535081&view=diff
==============================================================================
--- commons/proper/imaging/trunk/src/changes/changes.xml (original)
+++ commons/proper/imaging/trunk/src/changes/changes.xml Wed Oct 23 17:38:06 2013
@@ -46,6 +46,9 @@ The <action> type attribute can be add,u
   <body>
 
     <release version="1.0" date="TBA" description="TBA">
+      <action issue="IMAGING-115" dev="damjan" type="fix">
+        DhtSegment class contains mutable public arrays.
+      </action>
       <action issue="IMAGING-117" dev="damjan" type="fix">
         SofnSegment.components - public mutable array.
       </action>

Modified: commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/jpeg/decoder/JpegDecoder.java
URL: http://svn.apache.org/viewvc/commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/jpeg/decoder/JpegDecoder.java?rev=1535081&r1=1535080&r2=1535081&view=diff
==============================================================================
--- commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/jpeg/decoder/JpegDecoder.java (original)
+++ commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/jpeg/decoder/JpegDecoder.java Wed Oct 23 17:38:06 2013
@@ -411,13 +411,13 @@ public class JpegDecoder extends BinaryF
         // "DECODE", section F.2.2.3, figure F.16, page 109 of T.81
         int i = 1;
         int code = is.nextBit();
-        while (code > huffmanTable.maxCode[i]) {
+        while (code > huffmanTable.getMaxCode()[i]) {
             i++;
             code = (code << 1) | is.nextBit();
         }
-        int j = huffmanTable.valPtr[i];
-        j += code - huffmanTable.minCode[i];
-        final int value = huffmanTable.huffVal[j];
+        int j = huffmanTable.getValPtr()[i];
+        j += code - huffmanTable.getMinCode()[i];
+        final int value = huffmanTable.getHuffVal()[j];
         return value;
     }
 

Modified: commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/DhtSegment.java
URL: http://svn.apache.org/viewvc/commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/DhtSegment.java?rev=1535081&r1=1535080&r2=1535081&view=diff
==============================================================================
--- commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/DhtSegment.java (original)
+++ commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/DhtSegment.java Wed Oct 23 17:38:06 2013
@@ -19,25 +19,26 @@ import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 public class DhtSegment extends Segment {
-    public final List<HuffmanTable> huffmanTables = new ArrayList<HuffmanTable>();
+    public final List<HuffmanTable> huffmanTables;
 
     public static class HuffmanTable {
         // some arrays are better off one-based
         // to avoid subtractions by one later when indexing them
         public final int tableClass;
         public final int destinationIdentifier;
-        public final int[] bits; // 1-based
-        public final int[] huffVal; // 0-based
+        private final int[] bits; // 1-based
+        private final int[] huffVal; // 0-based
 
         // derived properties:
-        public final int[] huffSize = new int[16 * 256]; // 0-based
-        public final int[] huffCode; // 0-based
-        public final int[] minCode = new int[1 + 16]; // 1-based
-        public final int[] maxCode = new int[1 + 16]; // 1-based
-        public final int[] valPtr = new int[1 + 16]; // 1-based
+        private final int[] huffSize = new int[16 * 256]; // 0-based
+        private final int[] huffCode; // 0-based
+        private final int[] minCode = new int[1 + 16]; // 1-based
+        private final int[] maxCode = new int[1 + 16]; // 1-based
+        private final int[] valPtr = new int[1 + 16]; // 1-based
 
         public HuffmanTable(final int tableClass, final int destinationIdentifier,
                 final int[] bits, final int[] huffVal) {
@@ -111,6 +112,34 @@ public class DhtSegment extends Segment 
             }
 
         }
+
+        public int[] getBits() {
+            return bits;
+        }
+
+        public int[] getHuffVal() {
+            return huffVal;
+        }
+
+        public int[] getHuffSize() {
+            return huffSize;
+        }
+
+        public int[] getHuffCode() {
+            return huffCode;
+        }
+
+        public int[] getMinCode() {
+            return minCode;
+        }
+
+        public int[] getMaxCode() {
+            return maxCode;
+        }
+
+        public int[] getValPtr() {
+            return valPtr;
+        }
     }
 
     public DhtSegment(final int marker, final byte[] segmentData) throws IOException {
@@ -121,6 +150,7 @@ public class DhtSegment extends Segment 
             throws IOException {
         super(marker, length);
 
+        final ArrayList<HuffmanTable> huffmanTables = new ArrayList<DhtSegment.HuffmanTable>();
         while (length > 0) {
             final int tableClassAndDestinationId = 0xff & readByte(
                     "TableClassAndDestinationId", is, "Not a Valid JPEG File");
@@ -143,6 +173,7 @@ public class DhtSegment extends Segment 
             huffmanTables.add(new HuffmanTable(tableClass,
                     destinationIdentifier, bits, huffVal));
         }
+        this.huffmanTables = Collections.unmodifiableList(huffmanTables);
     }
 
     @Override