// // JPEG2000CodecOptions.java // /* OME Bio-Formats package for reading and converting biological file formats. Copyright (C) 2005-@year@ UW-Madison LOCI and Glencoe Software, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package loci.formats.codec; /** * Options for compressing and decompressing JPEG-2000 data. * * <dl><dt><b>Source code:</b></dt> * <dd><a href="http://trac.openmicroscopy.org.uk/ome/browser/bioformats.git/components/bio-formats/src/loci/formats/codec/JPEG2000CodecOptions.java">Trac</a>, * <a href="http://git.openmicroscopy.org/?p=bioformats.git;a=blob;f=components/bio-formats/src/loci/formats/codec/JPEG2000CodecOptions.java;hb=HEAD">Gitweb</a></dd></dl> */ public class JPEG2000CodecOptions extends CodecOptions { // -- Fields -- /** * The maximum code-block size to use per tile-component as it would be * provided to: * {@link com.sun.media.imageio.plugins.jpeg2000.J2KImageWriteParam#setCodeBlockSize(int[])} * (WRITE). */ public int[] codeBlockSize; /** * The number of decomposition levels as would be provided to: * {@link com.sun.media.imageio.plugins.jpeg2000.J2KImageWriteParam#setNumDecompositionLevels(int)} * (WRITE). Leaving this value <code>null</code> signifies that when a JPEG * 2000 parameter set is created for the purposes of compression the number * of decomposition levels will be left as the default. */ public Integer numDecompositionLevels; /** * The resolution level as would be provided to: * {@link com.sun.media.imageio.plugins.jpeg2000.J2KImageWriteParam#setResolution(int)} * (READ). Leaving this value <code>null</code> signifies that when a JPEG * 2000 parameter set is created for the purposes of compression the number * of decomposition levels will be left as the default. */ public Integer resolution; // -- Constructors -- /** Creates a new instance. */ public JPEG2000CodecOptions() { super(); } /** * Creates a new instance with options. * @param options The option to set. */ public JPEG2000CodecOptions(CodecOptions options) { super(options); if (options instanceof JPEG2000CodecOptions) { JPEG2000CodecOptions j2kOptions = (JPEG2000CodecOptions) options; if (j2kOptions.codeBlockSize != null) { codeBlockSize = j2kOptions.codeBlockSize; } numDecompositionLevels = j2kOptions.numDecompositionLevels; resolution = j2kOptions.resolution; } } // -- Static methods -- /** Return JPEG2000CodecOptions with reasonable default values. */ public static JPEG2000CodecOptions getDefaultOptions() { CodecOptions options = CodecOptions.getDefaultOptions(); return getDefaultOptions(options); } /** * Return JPEG2000CodecOptions using the given CodecOptions as the default. * @param options The specified options. */ public static JPEG2000CodecOptions getDefaultOptions(CodecOptions options) { JPEG2000CodecOptions j2kOptions = new JPEG2000CodecOptions(options); j2kOptions.quality = j2kOptions.lossless ? Double.MAX_VALUE : 10; j2kOptions.codeBlockSize = new int[] {64, 64}; return j2kOptions; } }