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

#ifndef __gnu_java_awt_peer_gtk_GdkPixbufDecoder$GdkPixbufReaderSpi__
#define __gnu_java_awt_peer_gtk_GdkPixbufDecoder$GdkPixbufReaderSpi__

#pragma interface

#include <javax/imageio/spi/ImageReaderSpi.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace awt
      {
        namespace peer
        {
          namespace gtk
          {
              class GdkPixbufDecoder$GdkPixbufReaderSpi;
          }
        }
      }
    }
  }
  namespace javax
  {
    namespace imageio
    {
        class ImageReader;
    }
  }
}

class gnu::java::awt::peer::gtk::GdkPixbufDecoder$GdkPixbufReaderSpi : public ::javax::imageio::spi::ImageReaderSpi
{

public:
  GdkPixbufDecoder$GdkPixbufReaderSpi();
  virtual jboolean canDecodeInput(::java::lang::Object *);
  virtual ::javax::imageio::ImageReader * createReaderInstance(::java::lang::Object *);
  virtual ::java::lang::String * getDescription(::java::util::Locale *);
  static ::java::lang::Class class$;
};

#endif // __gnu_java_awt_peer_gtk_GdkPixbufDecoder$GdkPixbufReaderSpi__
