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

#ifndef __java_awt_font_FontRenderContext__
#define __java_awt_font_FontRenderContext__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace java
  {
    namespace awt
    {
      namespace font
      {
          class FontRenderContext;
      }
      namespace geom
      {
          class AffineTransform;
      }
    }
  }
}

class java::awt::font::FontRenderContext : public ::java::lang::Object
{

public: // actually protected
  FontRenderContext();
public:
  FontRenderContext(::java::awt::geom::AffineTransform *, jboolean, jboolean);
  virtual jboolean equals(::java::lang::Object *);
  virtual jboolean equals(::java::awt::font::FontRenderContext *);
  virtual ::java::awt::geom::AffineTransform * getTransform();
  virtual jint hashCode();
  virtual jboolean isAntiAliased();
  virtual jboolean usesFractionalMetrics();
private:
  ::java::awt::geom::AffineTransform * __attribute__((aligned(__alignof__( ::java::lang::Object)))) affineTransform;
  jboolean isAntiAliased__;
  jboolean usesFractionalMetrics__;
public:
  static ::java::lang::Class class$;
};

#endif // __java_awt_font_FontRenderContext__
