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

#ifndef __java_awt_Component$BltBufferStrategy__
#define __java_awt_Component$BltBufferStrategy__

#pragma interface

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

extern "Java"
{
  namespace java
  {
    namespace awt
    {
        class BufferCapabilities;
        class Component;
        class Component$BltBufferStrategy;
        class Graphics;
      namespace image
      {
          class VolatileImage;
      }
    }
  }
}

class java::awt::Component$BltBufferStrategy : public ::java::awt::image::BufferStrategy
{

public: // actually protected
  Component$BltBufferStrategy(::java::awt::Component *, jint, ::java::awt::BufferCapabilities *);
  virtual void createBackBuffers(jint);
public:
  virtual ::java::awt::BufferCapabilities * getCapabilities();
  virtual ::java::awt::Graphics * getDrawGraphics();
  virtual void show();
public: // actually protected
  virtual void revalidate();
public:
  virtual jboolean contentsLost();
  virtual jboolean contentsRestored();
public: // actually protected
  ::java::awt::BufferCapabilities * __attribute__((aligned(__alignof__( ::java::awt::image::BufferStrategy)))) caps;
  JArray< ::java::awt::image::VolatileImage * > * backBuffers;
  jboolean validatedContents;
  jint width;
  jint height;
private:
  ::java::awt::image::VolatileImage * frontBuffer;
public: // actually package-private
  ::java::awt::Component * this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __java_awt_Component$BltBufferStrategy__
