Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/src/share/classes/javax/imageio/plugins/bmp/BMPImageWriteParam.java
38918 views
/*1* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation. Oracle designates this7* particular file as subject to the "Classpath" exception as provided8* by Oracle in the LICENSE file that accompanied this code.9*10* This code is distributed in the hope that it will be useful, but WITHOUT11* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or12* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License13* version 2 for more details (a copy is included in the LICENSE file that14* accompanied this code).15*16* You should have received a copy of the GNU General Public License version17* 2 along with this work; if not, write to the Free Software Foundation,18* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.19*20* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA21* or visit www.oracle.com if you need additional information or have any22* questions.23*/2425package javax.imageio.plugins.bmp;2627import java.util.Locale;28import javax.imageio.ImageWriteParam;2930import com.sun.imageio.plugins.bmp.BMPConstants;31import com.sun.imageio.plugins.bmp.BMPCompressionTypes;3233/**34* A subclass of <code>ImageWriteParam</code> for encoding images in35* the BMP format.36*37* <p> This class allows for the specification of various parameters38* while writing a BMP format image file. By default, the data layout39* is bottom-up, such that the pixels are stored in bottom-up order,40* the first scanline being stored last.41*42* <p>The particular compression scheme to be used can be specified by using43* the <code>setCompressionType()</code> method with the appropriate type44* string. The compression scheme specified will be honored if and only if it45* is compatible with the type of image being written. If the specified46* compression scheme is not compatible with the type of image being written47* then the <code>IOException</code> will be thrown by the BMP image writer.48* If the compression type is not set explicitly then <code>getCompressionType()</code>49* will return <code>null</code>. In this case the BMP image writer will select50* a compression type that supports encoding of the given image without loss51* of the color resolution.52* <p>The compression type strings and the image type(s) each supports are53* listed in the following54* table:55*56* <p><table border=1>57* <caption><b>Compression Types</b></caption>58* <tr><th>Type String</th> <th>Description</th> <th>Image Types</th></tr>59* <tr><td>BI_RGB</td> <td>Uncompressed RLE</td> <td>{@literal <= } 8-bits/sample</td></tr>60* <tr><td>BI_RLE8</td> <td>8-bit Run Length Encoding</td> <td>{@literal <=} 8-bits/sample</td></tr>61* <tr><td>BI_RLE4</td> <td>4-bit Run Length Encoding</td> <td>{@literal <=} 4-bits/sample</td></tr>62* <tr><td>BI_BITFIELDS</td> <td>Packed data</td> <td> 16 or 32 bits/sample</td></tr>63* </table>64*/65public class BMPImageWriteParam extends ImageWriteParam {6667private boolean topDown = false;6869/**70* Constructs a <code>BMPImageWriteParam</code> set to use a given71* <code>Locale</code> and with default values for all parameters.72*73* @param locale a <code>Locale</code> to be used to localize74* compression type names and quality descriptions, or75* <code>null</code>.76*/77public BMPImageWriteParam(Locale locale) {78super(locale);7980// Set compression types ("BI_RGB" denotes uncompressed).81compressionTypes = BMPCompressionTypes.getCompressionTypes();8283// Set compression flag.84canWriteCompressed = true;85compressionMode = MODE_COPY_FROM_METADATA;86compressionType = compressionTypes[BMPConstants.BI_RGB];87}8889/**90* Constructs an <code>BMPImageWriteParam</code> object with default91* values for all parameters and a <code>null</code> <code>Locale</code>.92*/93public BMPImageWriteParam() {94this(null);95}9697/**98* If set, the data will be written out in a top-down manner, the first99* scanline being written first.100*101* @param topDown whether the data are written in top-down order.102*/103public void setTopDown(boolean topDown) {104this.topDown = topDown;105}106107/**108* Returns the value of the <code>topDown</code> parameter.109* The default is <code>false</code>.110*111* @return whether the data are written in top-down order.112*/113public boolean isTopDown() {114return topDown;115}116}117118119