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

#ifndef __gnu_java_awt_java2d_ScanlineCoverage$Coverage__
#define __gnu_java_awt_java2d_ScanlineCoverage$Coverage__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace awt
      {
        namespace java2d
        {
            class ScanlineCoverage$Coverage;
        }
      }
    }
  }
}

class gnu::java::awt::java2d::ScanlineCoverage$Coverage : public ::java::lang::Object
{

  ScanlineCoverage$Coverage();
public:
  jint getXPos();
  jint getCoverageDelta();
  ::java::lang::String * toString();
  ::java::lang::String * list();
public: // actually package-private
  ScanlineCoverage$Coverage(::gnu::java::awt::java2d::ScanlineCoverage$Coverage *);
  jint __attribute__((aligned(__alignof__( ::java::lang::Object)))) xPos;
  jint covDelta;
  jint pixelCoverage;
  ::gnu::java::awt::java2d::ScanlineCoverage$Coverage * next;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_awt_java2d_ScanlineCoverage$Coverage__
