
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __javax_imageio_plugins_bmp_BMPImageWriteParam__
#define __javax_imageio_plugins_bmp_BMPImageWriteParam__

#pragma interface

#include <javax/imageio/ImageWriteParam.h>
extern "Java"
{
  namespace javax
  {
    namespace imageio
    {
      namespace plugins
      {
        namespace bmp
        {
            class BMPImageWriteParam;
        }
      }
    }
  }
}

class javax::imageio::plugins::bmp::BMPImageWriteParam : public ::javax::imageio::ImageWriteParam
{

public:
  BMPImageWriteParam();
  BMPImageWriteParam(::java::util::Locale *);
  virtual void setTopDown(jboolean);
  virtual jboolean isTopDown();
private:
  jboolean __attribute__((aligned(__alignof__( ::javax::imageio::ImageWriteParam)))) topDown;
public: // actually package-private
  ::java::lang::String * rgb;
  ::java::lang::String * rle8;
  ::java::lang::String * rle4;
  ::java::lang::String * bitfields;
  static const jint BI_RGB = 0;
  static const jint BI_RLE8 = 1;
  static const jint BI_RLE4 = 2;
  static const jint BI_BITFIELDS = 3;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_imageio_plugins_bmp_BMPImageWriteParam__
