
// 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 ByteBuffer;
        class ShortBuffer;
    }
  }
}

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(JArray< jint > *, 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 jboolean PATENTED_HINTING = 0;
  static const jboolean TRACE_EXECUTION = 0;
  static const jshort ONE_214 = 16384;
  JArray< jint > * __attribute__((aligned(__alignof__( ::java::lang::Object)))) storage;
  JArray< jint > * stack;
  jint maxStackElements;
  jint sp;
  JArray< ::java::nio::ByteBuffer * > * fdefBuffer;
  JArray< jint > * fdefEntryPoint;
  ::java::nio::ShortBuffer * controlValueTable;
  JArray< jint > * 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__
