jdk/src/share/classes/javax/imageio/plugins/bmp/BMPImageWriteParam.java
changeset 2 90ce3da70b43
child 3448 1ccef37a150f
equal deleted inserted replaced
0:fd16c54261b3 2:90ce3da70b43
       
     1 /*
       
     2  * Copyright 2003 Sun Microsystems, Inc.  All Rights Reserved.
       
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       
     4  *
       
     5  * This code is free software; you can redistribute it and/or modify it
       
     6  * under the terms of the GNU General Public License version 2 only, as
       
     7  * published by the Free Software Foundation.  Sun designates this
       
     8  * particular file as subject to the "Classpath" exception as provided
       
     9  * by Sun in the LICENSE file that accompanied this code.
       
    10  *
       
    11  * This code is distributed in the hope that it will be useful, but WITHOUT
       
    12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
       
    13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
       
    14  * version 2 for more details (a copy is included in the LICENSE file that
       
    15  * accompanied this code).
       
    16  *
       
    17  * You should have received a copy of the GNU General Public License version
       
    18  * 2 along with this work; if not, write to the Free Software Foundation,
       
    19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
       
    20  *
       
    21  * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
       
    22  * CA 95054 USA or visit www.sun.com if you need additional information or
       
    23  * have any questions.
       
    24  */
       
    25 
       
    26 package javax.imageio.plugins.bmp;
       
    27 
       
    28 import java.util.Locale;
       
    29 import javax.imageio.ImageWriteParam;
       
    30 
       
    31 import com.sun.imageio.plugins.bmp.BMPConstants;
       
    32 
       
    33 /**
       
    34  * A subclass of <code>ImageWriteParam</code> for encoding images in
       
    35  * the BMP format.
       
    36  *
       
    37  * <p> This class allows for the specification of various parameters
       
    38  * while writing a BMP format image file.  By default, the data layout
       
    39  * 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 using
       
    43  * the <code>setCompressionType()</code> method with the appropriate type
       
    44  * string.  The compression scheme specified will be honored if and only if it
       
    45  * is compatible with the type of image being written. If the specified
       
    46  * compression scheme is not compatible with the type of image being written
       
    47  * 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 select
       
    50  * a compression type that supports encoding of the given image without loss
       
    51  * of the color resolution.
       
    52  * <p>The compression type strings and the image type(s) each supports are
       
    53  * listed in the following
       
    54  * 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><= 8-bits/sample</td></tr>
       
    60  * <tr><td>BI_RLE8</td> <td>8-bit Run Length Encoding</td> <td><= 8-bits/sample</td></tr>
       
    61  * <tr><td>BI_RLE4</td> <td>4-bit Run Length Encoding</td> <td><= 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  */
       
    65 public class BMPImageWriteParam extends ImageWriteParam {
       
    66 
       
    67     private boolean topDown = false;
       
    68 
       
    69     /**
       
    70      * Constructs a <code>BMPImageWriteParam</code> set to use a given
       
    71      * <code>Locale</code> and with default values for all parameters.
       
    72      *
       
    73      * @param locale a <code>Locale</code> to be used to localize
       
    74      * compression type names and quality descriptions, or
       
    75      * <code>null</code>.
       
    76      */
       
    77     public BMPImageWriteParam(Locale locale) {
       
    78         super(locale);
       
    79 
       
    80         // Set compression types ("BI_RGB" denotes uncompressed).
       
    81         compressionTypes = BMPConstants.compressionTypeNames;
       
    82 
       
    83         // Set compression flag.
       
    84         canWriteCompressed = true;
       
    85         compressionMode = MODE_COPY_FROM_METADATA;
       
    86         compressionType = compressionTypes[BMPConstants.BI_RGB];
       
    87     }
       
    88 
       
    89     /**
       
    90      * Constructs an <code>BMPImageWriteParam</code> object with default
       
    91      * values for all parameters and a <code>null</code> <code>Locale</code>.
       
    92      */
       
    93     public BMPImageWriteParam() {
       
    94         this(null);
       
    95     }
       
    96 
       
    97     /**
       
    98      * If set, the data will be written out in a top-down manner, the first
       
    99      * scanline being written first.
       
   100      *
       
   101      * @param topDown whether the data are written in top-down order.
       
   102      */
       
   103     public void setTopDown(boolean topDown) {
       
   104         this.topDown = topDown;
       
   105     }
       
   106 
       
   107     /**
       
   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      */
       
   113     public boolean isTopDown() {
       
   114         return topDown;
       
   115     }
       
   116 }