/*
 * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */
package javax.imageio.plugins.bmp;
import java.util.Locale;
import javax.imageio.ImageWriteParam;
import com.sun.imageio.plugins.bmp.BMPConstants;
/**
 * A subclass of ImageWriteParam for encoding images in
 * the BMP format.
 *
 * 
This class allows for the specification of various parameters * while writing a BMP format image file. By default, the data layout * is bottom-up, such that the pixels are stored in bottom-up order, * the first scanline being stored last. * *
The particular compression scheme to be used can be specified by using
 * the setCompressionType() method with the appropriate type
 * string.  The compression scheme specified will be honored if and only if it
 * is compatible with the type of image being written. If the specified
 * compression scheme is not compatible with the type of image being written
 * then the IOException will be thrown by the BMP image writer.
 * If the compression type is not set explicitly then getCompressionType()
 * will return null. In this case the BMP image writer will select
 * a compression type that supports encoding of the given image without loss
 * of the color resolution.
 * 
The compression type strings and the image type(s) each supports are * listed in the following * table: * *
| Type String | Description | Image Types | 
|---|---|---|
| BI_RGB | Uncompressed RLE | <= 8-bits/sample | 
| BI_RLE8 | 8-bit Run Length Encoding | <= 8-bits/sample | 
| BI_RLE4 | 4-bit Run Length Encoding | <= 4-bits/sample | 
| BI_BITFIELDS | Packed data | 16 or 32 bits/sample | 
BMPImageWriteParam set to use a given
     * Locale and with default values for all parameters.
     *
     * @param locale a Locale to be used to localize
     * compression type names and quality descriptions, or
     * null.
     */
    public BMPImageWriteParam(Locale locale) {
        super(locale);
        // Set compression types ("BI_RGB" denotes uncompressed).
        compressionTypes = BMPConstants.compressionTypeNames.clone();
        // Set compression flag.
        canWriteCompressed = true;
        compressionMode = MODE_COPY_FROM_METADATA;
        compressionType = compressionTypes[BMPConstants.BI_RGB];
    }
    /**
     * Constructs an BMPImageWriteParam object with default
     * values for all parameters and a null Locale.
     */
    public BMPImageWriteParam() {
        this(null);
    }
    /**
     * If set, the data will be written out in a top-down manner, the first
     * scanline being written first.
     *
     * @param topDown whether the data are written in top-down order.
     */
    public void setTopDown(boolean topDown) {
        this.topDown = topDown;
    }
    /**
     * Returns the value of the topDown parameter.
     * The default is false.
     *
     * @return whether the data are written in top-down order.
     */
    public boolean isTopDown() {
        return topDown;
    }
}