diff --git a/src/main/java/azgracompress/compression/CompressorDecompressorBase.java b/src/main/java/azgracompress/compression/CompressorDecompressorBase.java index a833677af295be94efd6d56c56d553a5313ca554..0616503e0dd3733b1efade1ec2654586a46ff8b6 100644 --- a/src/main/java/azgracompress/compression/CompressorDecompressorBase.java +++ b/src/main/java/azgracompress/compression/CompressorDecompressorBase.java @@ -1,10 +1,10 @@ package azgracompress.compression; +import azgracompress.compression.exception.ImageCompressionException; import azgracompress.compression.listeners.IProgressListener; import azgracompress.compression.listeners.IStatusListener; -import azgracompress.io.InputData; -import azgracompress.compression.exception.ImageCompressionException; import azgracompress.huffman.Huffman; +import azgracompress.io.InputData; import azgracompress.io.OutBitStream; import java.io.DataOutputStream; @@ -40,6 +40,11 @@ public abstract class CompressorDecompressorBase { this.progressListeners.add(listener); } + public void clearAllListeners() { + this.statusListeners.clear(); + this.progressListeners.clear(); + } + protected void duplicateAllListeners(IListenable other) { if (other == this) return; diff --git a/src/main/java/azgracompress/compression/IListenable.java b/src/main/java/azgracompress/compression/IListenable.java index 5327d257a4fe3f171110998f670945e50caed717..6a1f066c19eabbee53b8304c6f9a78e08032a9fa 100644 --- a/src/main/java/azgracompress/compression/IListenable.java +++ b/src/main/java/azgracompress/compression/IListenable.java @@ -17,4 +17,9 @@ public interface IListenable { * @param listener Progress listener. */ void addProgressListener(IProgressListener listener); + + /** + * Remove all active listeners. + */ + void clearAllListeners(); } diff --git a/src/main/java/azgracompress/compression/ImageCompressor.java b/src/main/java/azgracompress/compression/ImageCompressor.java index 8ef03d2e8ec977a5d50a6ec6d4fa1940c6458975..6951e220bad59e16eb0d28fd203c13d3ec1db0b1 100644 --- a/src/main/java/azgracompress/compression/ImageCompressor.java +++ b/src/main/java/azgracompress/compression/ImageCompressor.java @@ -5,7 +5,6 @@ import azgracompress.compression.exception.ImageCompressionException; import azgracompress.data.Range; import azgracompress.fileformat.QCMPFileHeader; import azgracompress.io.InputData; -import org.scijava.util.ArrayUtils; import java.io.*; import java.util.Arrays; @@ -112,6 +111,7 @@ public class ImageCompressor extends CompressorDecompressorBase { if (imageCompressor == null) { return false; } + duplicateAllListeners(imageCompressor); long[] planeDataSizes = null; diff --git a/src/main/java/azgracompress/compression/VQImageCompressor.java b/src/main/java/azgracompress/compression/VQImageCompressor.java index bdfeb7d99525f639e2a0929d181f919fab202e3a..f690819c5204dde3654d3e8e1822e47281b53f75 100644 --- a/src/main/java/azgracompress/compression/VQImageCompressor.java +++ b/src/main/java/azgracompress/compression/VQImageCompressor.java @@ -91,6 +91,7 @@ public class VQImageCompressor extends CompressorDecompressorBase implements IIm if (!cacheManager.doesVQCacheExists(options.getInputDataInfo().getCacheFileName(), getCodebookSize(), options.getQuantizationVector())) { + reportStatusToListeners("Quantization file doesn't exist"); trainAndSaveCodebook(); } @@ -183,10 +184,11 @@ public class VQImageCompressor extends CompressorDecompressorBase implements IIm for (final int planeIndex : planeIndices) { stopwatch.restart(); - reportStatusToListeners(String.format("Loading plane %d.", planeIndex)); + final int[][] planeVectors = planeLoader.loadVectorsFromPlaneRange(options, Utils.singlePlaneRange(planeIndex)); + if (!hasGeneralQuantizer) { reportStatusToListeners(String.format("Training vector quantizer from plane %d.", planeIndex)); quantizer = trainVectorQuantizerFromPlaneVectors(planeVectors); @@ -206,6 +208,7 @@ public class VQImageCompressor extends CompressorDecompressorBase implements IIm stopwatch.stop(); if (options.isConsoleApplication()) { + System.out.println("Is console app, whyy"); reportStatusToListeners("Finished compression of plane %d in %s.", planeIndex, stopwatch.getElapsedTimeString()); } else { reportProgressToListeners(planeIndex, planeIndices.length,