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

#ifndef __gnu_java_awt_font_opentype_truetype_VirtualMachine__
#define __gnu_java_awt_font_opentype_truetype_VirtualMachine__

#pragma interface

#include <java/lang/Object.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace awt
      {
        namespace font
        {
          namespace opentype
          {
            namespace truetype
            {
              class VirtualMachine;
              class Zone;
            }
          }
        }
      }
    }
  }
  namespace java
  {
    namespace awt
    {
      namespace geom
      {
        class AffineTransform;
      }
    }
    namespace nio
    {
      class ShortBuffer;
      class ByteBuffer;
    }
  }
}

class gnu::java::awt::font::opentype::truetype::VirtualMachine : public ::java::lang::Object
{
public: // actually package-private
  VirtualMachine (jint, ::java::nio::ByteBuffer *, ::java::nio::ByteBuffer *, ::java::nio::ByteBuffer *, ::java::nio::ByteBuffer *);
private:
  void resetGraphicsState ();
  void reloadControlValueTable ();
  jint funitsToPixels (jint);
public:
  virtual jboolean setup (jdouble, ::java::awt::geom::AffineTransform *, jboolean);
private:
  void execute (::java::nio::ByteBuffer *, jint);
  void dumpInstruction (::java::nio::ByteBuffer *);
  static jchar getNibble (jint, jint);
  static ::java::lang::String *getHex (jbyte);
  static ::java::lang::String *getHex (jshort);
  static void skipAfter (::java::nio::ByteBuffer *, jint, jint, jint, jint, jboolean);
  static jint getInstructionLength (jint);
  jboolean executeInstruction (::java::nio::ByteBuffer *);
  void setRoundingMode (jint, jint);
  void deltaC (jintArray, jint, jint, jint);
  ::gnu::java::awt::font::opentype::truetype::Zone *getZone (jint);
  jint getProjection (jint, jint);
  jint getDualProjection (jint, jint);
  jint getProjection (::gnu::java::awt::font::opentype::truetype::Zone *, jint);
  jint getOriginalProjection (::gnu::java::awt::font::opentype::truetype::Zone *, jint);
  void handleISECT (jint, jint, jint, jint, jint);
  static jint muldiv (jint, jint, jint);
  jint getFreeDotProj ();
  void movePoint (::gnu::java::awt::font::opentype::truetype::Zone *, jint, jint);
  void dumpVectors ();
  void handleIP ();
  void handleMDAP (jint, jboolean);
  void handleMIAP (jint, jint, jboolean);
  void handleMIRP (jint, jint, jint);
  jint round (jint, jint);
  static jint nround (jint, jint);
  jboolean isRotated ();
  jboolean isStretched ();
  jint getPixelsPerEM ();
  void setProjectionVector (jshort, jshort);
  void setFreedomVector (jshort, jshort);
  void setDualVector (jshort, jshort);
  jint applyCTM_x (jint, jint);
  jint applyCTM_y (jint, jint);
  static const jint PATENTED_HINTING = 0L;
  static const jint TRACE_EXECUTION = 0L;
  static const jint ONE_214 = 16384L;
  jintArray __attribute__((aligned(__alignof__( ::java::lang::Object ))))  storage;
  jintArray stack;
  jint maxStackElements;
  jint sp;
  JArray< ::java::nio::ByteBuffer *> *fdefBuffer;
  jintArray fdefEntryPoint;
  ::java::nio::ShortBuffer *controlValueTable;
  jintArray cvt;
  jint engineCompensation;
  ::java::nio::ByteBuffer *fontProgram;
  ::java::nio::ByteBuffer *preProgram;
  jint numTwilightPoints;
  jint pointSize;
  ::java::awt::geom::AffineTransform *deviceTransform;
  jint scaleX;
  jint scaleY;
  jint shearX;
  jint shearY;
  jboolean antialiased;
  jint cvtCutIn;
  jint deltaBase;
  jint deltaShift;
  jshort freeX;
  jshort freeY;
  jint loop;
  jint minimumDistance;
  jshort projX;
  jshort projY;
  jshort dualX;
  jshort dualY;
  jint rp0;
  jint rp1;
  jint rp2;
  jboolean scanControl;
  jint scanType;
  jint singleWidthValue;
  ::gnu::java::awt::font::opentype::truetype::Zone *zp0;
  ::gnu::java::awt::font::opentype::truetype::Zone *zp1;
  ::gnu::java::awt::font::opentype::truetype::Zone *zp2;
  ::gnu::java::awt::font::opentype::truetype::Zone *twilightZone;
  ::gnu::java::awt::font::opentype::truetype::Zone *glyphZone;
  jboolean executeGlyphInstructions;
  jboolean ignoreCVTProgram;
  jint roundPeriod;
  jint roundPhase;
  jint roundThreshold;
  jint cachedPixelsPerEM;
  jint unitsPerEm;
  static JArray< ::java::lang::String *> *INST_NAME;
public:

  static ::java::lang::Class class$;
};

#endif /* __gnu_java_awt_font_opentype_truetype_VirtualMachine__ */
