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

#ifndef __java_awt_image_BufferedImageFilter__
#define __java_awt_image_BufferedImageFilter__

#pragma interface

#include <java/awt/image/ImageFilter.h>
#include <gcj/array.h>

extern "Java"
{
  namespace java
  {
    namespace awt
    {
      namespace image
      {
          class BufferedImageFilter;
          class BufferedImageOp;
          class ColorModel;
      }
    }
  }
}

class java::awt::image::BufferedImageFilter : public ::java::awt::image::ImageFilter
{

public:
  BufferedImageFilter(::java::awt::image::BufferedImageOp *);
  virtual ::java::awt::image::BufferedImageOp * getBufferedImageOp();
  virtual void setPixels(jint, jint, jint, jint, ::java::awt::image::ColorModel *, JArray< jbyte > *, jint, jint);
  virtual void setPixels(jint, jint, jint, jint, ::java::awt::image::ColorModel *, JArray< jint > *, jint, jint);
private:
  ::java::awt::image::BufferedImageOp * __attribute__((aligned(__alignof__( ::java::awt::image::ImageFilter)))) op;
public:
  static ::java::lang::Class class$;
};

#endif // __java_awt_image_BufferedImageFilter__
