Skip to content
Snippets Groups Projects
CompressionOptions.java 3.75 KiB
Newer Older
  • Learn to ignore specific revisions
  • package azgracompress.compression;
    
    import azgracompress.data.V2i;
    import azgracompress.data.V3i;
    import azgracompress.fileformat.QuantizationType;
    
    /**
     * Options for the compressor/decompressor.
     */
    public class CompressionOptions {
    
        /**
         * Input image or compressed file.
         */
        private String inputFilePath;
    
        /**
         * Output image or compressed file.
         */
        private String outputFilePath;
    
    
        /**
         * Type of quantization.
         */
        private QuantizationType quantizationType;
    
        /**
         * Directory which contains codebook caches.
         */
        private String codebookCacheFolder = null;
    
        /**
         * Number of bits, which are used to encode single codebook index.
         */
        private int bitsPerCodebookIndex = 8;
    
        /**
         * Dimensions of the quantization vector.
         * TODO: Once we support 3D quantization, this should be V3i.
         */
        private V2i vectorDimension = new V2i(0);
    
        /**
         * Dimensions of the input image data.
         */
        private V3i imageDimension = new V3i(0);
    
        /**
         * Flag, whether to use middle plane as reference plane for codebook creation.
         */
        private boolean useMiddlePlane = false;
    
        /**
         * Index of the plane to compress.
         */
        private Integer planeIndex = null;
    
        /**
         * Range of the planes to compress.
         */
        Interval<Integer> planeRange = null;
    
        /**
         * Number of workers to be used for different operations.
         */
        private int workerCount = 1;
    
        // NOTE(Moravec): Getters and setters for the private fields.
    
    
    
        public String getInputFilePath() {
            return inputFilePath;
        }
    
        public void setInputFilePath(String inputFilePath) {
            this.inputFilePath = inputFilePath;
        }
    
        public String getOutputFilePath() {
            return outputFilePath;
        }
    
        public void setOutputFilePath(String outputFilePath) {
            this.outputFilePath = outputFilePath;
        }
    
    
        public QuantizationType getQuantizationType() {
            return quantizationType;
        }
    
        public void setQuantizationType(QuantizationType quantizationType) {
            this.quantizationType = quantizationType;
        }
    
        public String getCodebookCacheFolder() {
            return codebookCacheFolder;
        }
    
        public void setCodebookCacheFolder(String codebookCacheFolder) {
            this.codebookCacheFolder = codebookCacheFolder;
        }
    
        public int getBitsPerCodebookIndex() {
            return bitsPerCodebookIndex;
        }
    
        public void setBitsPerCodebookIndex(int bitsPerCodebookIndex) {
            this.bitsPerCodebookIndex = bitsPerCodebookIndex;
        }
    
        public V2i getVectorDimension() {
            return vectorDimension;
        }
    
        public void setVectorDimension(V2i vectorDimension) {
            this.vectorDimension = vectorDimension;
        }
    
        public V3i getImageDimension() {
            return imageDimension;
        }
    
        public void setImageDimension(V3i imageDimension) {
            this.imageDimension = imageDimension;
        }
    
    
        public boolean shouldUseMiddlePlane() {
    
            return useMiddlePlane;
        }
    
        public void setUseMiddlePlane(boolean useMiddlePlane) {
            this.useMiddlePlane = useMiddlePlane;
        }
    
        public Integer getPlaneIndex() {
            return planeIndex;
        }
    
    
        public boolean isPlaneIndexSet() {
            return (planeIndex != null);
        }
    
        public boolean isPlaneRangeSet() {
            return (planeRange != null);
        }
    
    
        public void setPlaneIndex(Integer planeIndex) {
            this.planeIndex = planeIndex;
        }
    
        public Interval<Integer> getPlaneRange() {
            return planeRange;
        }
    
        public void setPlaneRange(Interval<Integer> planeRange) {
            this.planeRange = planeRange;
        }
    
        public int getWorkerCount() {
            return workerCount;
        }
    
        public void setWorkerCount(int workerCount) {
            this.workerCount = workerCount;
        }
    }