From cfbedd677f55ded13f26be522f790e73e9233863 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Vojt=C4=9Bch=20Moravec?= <theazgra@gmail.com>
Date: Mon, 27 Jul 2020 19:14:15 +0200
Subject: [PATCH] Remove offset from both 2D and 3D chunk.

Remove V2l and V3l offsets from chunks. These offsets weren't used and
were only taking place in memory.
---
 .../azgracompress/benchmark/VQBenchmark.java  |  2 +-
 .../compression/VQImageCompressor.java        |  2 +-
 .../compression/VQImageDecompressor.java      |  3 +--
 src/main/java/azgracompress/data/Chunk2D.java | 22 +++++--------------
 .../java/azgracompress/data/ImageU16.java     |  2 +-
 5 files changed, 10 insertions(+), 21 deletions(-)

diff --git a/src/main/java/azgracompress/benchmark/VQBenchmark.java b/src/main/java/azgracompress/benchmark/VQBenchmark.java
index d484749..1be7eb4 100644
--- a/src/main/java/azgracompress/benchmark/VQBenchmark.java
+++ b/src/main/java/azgracompress/benchmark/VQBenchmark.java
@@ -32,7 +32,7 @@ public class VQBenchmark extends BenchmarkBase {
     private ImageU16 reconstructImageFromQuantizedVectors(final ImageU16 plane,
                                                           final int[][] vectors,
                                                           final V2i qVector) {
-        Chunk2D reconstructedChunk = new Chunk2D(new V2i(rawImageDims.getX(), rawImageDims.getY()), new V2l(0, 0));
+        Chunk2D reconstructedChunk = new Chunk2D(new V2i(rawImageDims.getX(), rawImageDims.getY()));
         if (qVector.getY() > 1) {
             reconstructedChunk.reconstructFrom2DVectors(vectors, qVector);
         } else {
diff --git a/src/main/java/azgracompress/compression/VQImageCompressor.java b/src/main/java/azgracompress/compression/VQImageCompressor.java
index 4543ed9..1bb960b 100644
--- a/src/main/java/azgracompress/compression/VQImageCompressor.java
+++ b/src/main/java/azgracompress/compression/VQImageCompressor.java
@@ -215,7 +215,7 @@ public class VQImageCompressor extends CompressorDecompressorBase implements IIm
             reportStatusToListeners(inputDataInfo.isPlaneRangeSet() ? "VQ: Loading plane range data." : "VQ: Loading all planes data.");
             final int[] planeIndices = getPlaneIndicesForCompression();
 
-            final int chunkCountPerPlane = Chunk2D.calculateRequiredChunkCountPerPlane(
+            final int chunkCountPerPlane = Chunk2D.calculateRequiredChunkCount(
                     inputDataInfo.getDimensions().toV2i(),
                     options.getVectorDimension());
             final int totalChunkCount = chunkCountPerPlane * planeIndices.length;
diff --git a/src/main/java/azgracompress/compression/VQImageDecompressor.java b/src/main/java/azgracompress/compression/VQImageDecompressor.java
index 0643722..dafcb05 100644
--- a/src/main/java/azgracompress/compression/VQImageDecompressor.java
+++ b/src/main/java/azgracompress/compression/VQImageDecompressor.java
@@ -64,7 +64,7 @@ public class VQImageDecompressor extends CompressorDecompressorBase implements I
                                                           final V2i qVector,
                                                           final V3i imageDims) {
 
-        Chunk2D reconstructedChunk = new Chunk2D(new V2i(imageDims.getX(), imageDims.getY()), new V2l(0, 0));
+        Chunk2D reconstructedChunk = new Chunk2D(new V2i(imageDims.getX(), imageDims.getY()));
         if (qVector.getY() > 1) {
             reconstructedChunk.reconstructFrom2DVectors(vectors, qVector);
         } else {
@@ -205,7 +205,6 @@ public class VQImageDecompressor extends CompressorDecompressorBase implements I
             assert (codebook != null && huffman != null);
 
 
-
             final int planeDataSize = (int) header.getPlaneDataSizes()[planeIndex];
             try (InBitStream inBitStream = new InBitStream(compressedStream,
                     header.getBitsPerCodebookIndex(),
diff --git a/src/main/java/azgracompress/data/Chunk2D.java b/src/main/java/azgracompress/data/Chunk2D.java
index 6242ad3..e562d43 100644
--- a/src/main/java/azgracompress/data/Chunk2D.java
+++ b/src/main/java/azgracompress/data/Chunk2D.java
@@ -5,30 +5,26 @@ public class Chunk2D {
     private int[] data;
 
     private final V2i dims;
-    private final V2l offset;
 
     /**
      * Create the Chunk2D of given dimensions, offset and initialize it with data.
      *
-     * @param dims   Dimensions of the chunk.
-     * @param offset Offset of the chunk.
-     * @param data   Chunk data.
+     * @param dims Dimensions of the chunk.
+     * @param data Chunk data.
      */
-    public Chunk2D(final V2i dims, final V2l offset, final int[] data) {
+    public Chunk2D(final V2i dims, final int[] data) {
         this.dims = dims;
         this.data = data;
-        this.offset = offset;
         assert (data.length == (dims.getX() * dims.getY())) : "Wrong box data.";
     }
 
     /**
      * Create Chunk2D of given dimensions and offset. Allocates the data.
      *
-     * @param dims   Dimensions of the chunk.
-     * @param offset Offset of the chunk.
+     * @param dims Dimensions of the chunk.
      */
-    public Chunk2D(final V2i dims, final V2l offset) {
-        this(dims, offset, new int[dims.getX() * dims.getY()]);
+    public Chunk2D(final V2i dims) {
+        this(dims, new int[dims.getX() * dims.getY()]);
     }
 
     /**
@@ -69,10 +65,6 @@ public class Chunk2D {
         return dims;
     }
 
-    public V2l getOffset() {
-        return offset;
-    }
-
     @Override
     public String toString() {
         return String.format("2D shape %s %d values", dims.toString(), data.length);
@@ -273,8 +265,6 @@ public class Chunk2D {
             final Chunk2D otherChunk = (Chunk2D) obj;
             if (data.length != otherChunk.data.length) {
                 return false;
-            } else if (!(offset.equals(otherChunk.offset))) {
-                return false;
             } else {
                 for (int i = 0; i < data.length; i++) {
                     if (data[i] != otherChunk.data[i]) {
diff --git a/src/main/java/azgracompress/data/ImageU16.java b/src/main/java/azgracompress/data/ImageU16.java
index 8c5f7a5..65e9afb 100644
--- a/src/main/java/azgracompress/data/ImageU16.java
+++ b/src/main/java/azgracompress/data/ImageU16.java
@@ -25,7 +25,7 @@ public class ImageU16 {
     }
 
     public Chunk2D as2dChunk() {
-        return new Chunk2D(new V2i(width, height), new V2l(0, 0), data);
+        return new Chunk2D(new V2i(width, height), data);
     }
 
     public ImageU16 difference(final ImageU16 other) {
-- 
GitLab