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

#ifndef __gnu_gcj_xlib_Font__
#define __gnu_gcj_xlib_Font__

#pragma interface

#include <gnu/gcj/xlib/XID.h>
extern "Java"
{
  namespace gnu
  {
    namespace gcj
    {
        class RawData;
      namespace xlib
      {
          class Display;
          class Font;
      }
    }
  }
}

class gnu::gcj::xlib::Font : public ::gnu::gcj::xlib::XID
{

public:
  Font(::gnu::gcj::xlib::Display *, ::java::lang::String *);
public: // actually package-private
  Font(::gnu::gcj::xlib::Display *, ::gnu::gcj::RawData *);
  static ::gnu::gcj::RawData * loadFont(::gnu::gcj::xlib::Display *, ::java::lang::String *);
  static ::gnu::gcj::RawData * loadFontImpl(::gnu::gcj::xlib::Display *, ::java::lang::String *);
  static jint getXIDFromStruct(::gnu::gcj::RawData *);
public:
  jint getAscent();
  jint getDescent();
  jint getMaxAscent();
  jint getMaxDescent();
  jint getStringWidth(::java::lang::String *);
public: // actually protected
  void finalize();
public: // actually package-private
  ::gnu::gcj::RawData * __attribute__((aligned(__alignof__( ::gnu::gcj::xlib::XID)))) structure;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_gcj_xlib_Font__
