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

#ifndef __gnu_java_awt_java2d_TexturePaintContext__
#define __gnu_java_awt_java2d_TexturePaintContext__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace awt
      {
        namespace java2d
        {
            class TexturePaintContext;
        }
      }
    }
  }
  namespace java
  {
    namespace awt
    {
        class Rectangle;
        class TexturePaint;
      namespace geom
      {
          class AffineTransform;
          class Rectangle2D;
      }
      namespace image
      {
          class BufferedImage;
          class ColorModel;
          class Raster;
          class WritableRaster;
      }
    }
  }
}

class gnu::java::awt::java2d::TexturePaintContext : public ::java::lang::Object
{

public:
  TexturePaintContext(::java::awt::TexturePaint *, ::java::awt::Rectangle *, ::java::awt::geom::Rectangle2D *, ::java::awt::geom::AffineTransform *);
  virtual void dispose();
  virtual ::java::awt::image::ColorModel * getColorModel();
  virtual ::java::awt::image::Raster * getRaster(jint, jint, jint, jint);
private:
  void ensureRasterSize(jint, jint);
  ::java::awt::image::BufferedImage * __attribute__((aligned(__alignof__( ::java::lang::Object)))) image;
  ::java::awt::image::WritableRaster * paintRaster;
  ::java::awt::geom::AffineTransform * transform;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_awt_java2d_TexturePaintContext__
