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

#ifndef __gnu_java_awt_peer_gtk_GdkPixbufDecoder$GdkPixbufWriter__
#define __gnu_java_awt_peer_gtk_GdkPixbufDecoder$GdkPixbufWriter__

#pragma interface

#include <javax/imageio/ImageWriter.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace awt
      {
        namespace peer
        {
          namespace gtk
          {
              class GdkPixbufDecoder$GdkPixbufWriter;
              class GdkPixbufDecoder$GdkPixbufWriterSpi;
          }
        }
      }
    }
  }
  namespace javax
  {
    namespace imageio
    {
        class IIOImage;
        class ImageTypeSpecifier;
        class ImageWriteParam;
      namespace metadata
      {
          class IIOMetadata;
      }
    }
  }
}

class gnu::java::awt::peer::gtk::GdkPixbufDecoder$GdkPixbufWriter : public ::javax::imageio::ImageWriter
{

public:
  GdkPixbufDecoder$GdkPixbufWriter(::gnu::java::awt::peer::gtk::GdkPixbufDecoder$GdkPixbufWriterSpi *, ::java::lang::Object *);
  virtual ::javax::imageio::metadata::IIOMetadata * convertImageMetadata(::javax::imageio::metadata::IIOMetadata *, ::javax::imageio::ImageTypeSpecifier *, ::javax::imageio::ImageWriteParam *);
  virtual ::javax::imageio::metadata::IIOMetadata * convertStreamMetadata(::javax::imageio::metadata::IIOMetadata *, ::javax::imageio::ImageWriteParam *);
  virtual ::javax::imageio::metadata::IIOMetadata * getDefaultImageMetadata(::javax::imageio::ImageTypeSpecifier *, ::javax::imageio::ImageWriteParam *);
  virtual ::javax::imageio::metadata::IIOMetadata * getDefaultStreamMetadata(::javax::imageio::ImageWriteParam *);
  virtual void write(::javax::imageio::metadata::IIOMetadata *, ::javax::imageio::IIOImage *, ::javax::imageio::ImageWriteParam *);
private:
  void write(JArray< jbyte > *);
public:
  virtual void run();
public: // actually package-private
  ::java::lang::String * __attribute__((aligned(__alignof__( ::javax::imageio::ImageWriter)))) ext;
private:
  static ::java::lang::Object * DATADONE;
  ::java::util::ArrayList * data;
  ::java::io::IOException * exception;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_awt_peer_gtk_GdkPixbufDecoder$GdkPixbufWriter__
