DEFINITION Intuition;

IMPORT
  e := Exec,
  g := Graphics,
  ie := InputEvent,
  t := Timer,
  u := Utility,
  km := KeyMap;

TYPE
  MenuPtr = UNTRACED POINTER TO Menu;
  MenuItemPtr = UNTRACED POINTER TO MenuItem;
  RequesterPtr = UNTRACED POINTER TO Requester;
  GadgetPtr = UNTRACED POINTER TO Gadget;
  GadSpecialInfoPtr = UNTRACED POINTER TO GadSpecialInfo;
  BoolInfoPtr = UNTRACED POINTER TO BoolInfo;
  PropInfoPtr = UNTRACED POINTER TO PropInfo;
  StringInfoPtr = UNTRACED POINTER TO StringInfo;
  IntuiTextPtr = UNTRACED POINTER TO IntuiText;
  BorderPtr = UNTRACED POINTER TO Border;
  ImagePtr = UNTRACED POINTER TO Image;
  IntuiMessagePtr = UNTRACED POINTER TO IntuiMessage;
  IBoxPtr = UNTRACED POINTER TO IBox;
  WindowPtr = UNTRACED POINTER TO Window;
  NewWindowPtr = UNTRACED POINTER TO NewWindow;
  ExtNewWindowPtr = UNTRACED POINTER TO ExtNewWindow;
  RememberPtr = UNTRACED POINTER TO Remember;
  ColorSpecPtr = UNTRACED POINTER TO ColorSpec;
  EasyStructPtr = UNTRACED POINTER TO EasyStruct;
  GadgetInfoPtr = UNTRACED POINTER TO GadgetInfo;
  PGXPtr = UNTRACED POINTER TO PGX;
  MsgPtr = UNTRACED POINTER TO Msg;
  OpSetPtr = UNTRACED POINTER TO OpSet;
  OpUpdatePtr = UNTRACED POINTER TO OpUpdate;
  OpGetPtr = UNTRACED POINTER TO OpGet;
  OpAddTailPtr = UNTRACED POINTER TO OpAddTail;
  OpMemberPtr = UNTRACED POINTER TO OpMember;
  IClassPtr = UNTRACED POINTER TO IClass;
  ObjectPtr = UNTRACED POINTER TO Object;
  HitTestPtr = UNTRACED POINTER TO HitTest;
  RenderPtr = UNTRACED POINTER TO Render;
  InputPtr = UNTRACED POINTER TO Input;
  GoInactivePtr = UNTRACED POINTER TO GoInactive;
  FrameBoxPtr = UNTRACED POINTER TO FrameBox;
  DrawPtr = UNTRACED POINTER TO Draw;
  ErasePtr = UNTRACED POINTER TO Erase;
  IMHitTestPtr = UNTRACED POINTER TO IMHitTest;
  PreferencesPtr = UNTRACED POINTER TO Preferences;
  DrawInfoPtr = UNTRACED POINTER TO DrawInfo;
  ScreenPtr = UNTRACED POINTER TO Screen;
  NewScreenPtr = UNTRACED POINTER TO NewScreen;
  ExtNewScreenPtr = UNTRACED POINTER TO ExtNewScreen;
  PubScreenNodePtr = UNTRACED POINTER TO PubScreenNode;
  StringExtendPtr = UNTRACED POINTER TO StringExtend;
  SGWorkPtr = UNTRACED POINTER TO SGWork;
  IntuitionBasePtr = UNTRACED POINTER TO IntuitionBase;
  Menu = STRUCT 
    nextMenu : MenuPtr;
    leftEdge,topEdge : INTEGER;
    width,height : INTEGER;
    flags : SET;
    menuName : e.STRPTR;
    firstItem : MenuItemPtr;
    jazzX,jazzY,beatX,beatY : INTEGER;
  END;

CONST
  menuEnabled = 0;
  miDrawn = 8;

TYPE
  MenuItem = STRUCT 
    nextItem : MenuItemPtr;
    leftEdge,topEdge : INTEGER;
    width,height : INTEGER;
    flags : SET;
    mutualExclude : LONGSET;
    itemFill : e.APTR;
    selectFill : e.APTR;
    command : CHAR;
    subItem : MenuItemPtr;
    nextSelect : INTEGER;
  END;

CONST
  checkIt = 0;
  itemText = 1;
  commSeq = 2;
  menuToggle = 3;
  itemEnabled = 4;
  highFlags = {6, 7};
  highImage = {};
  highComp = 6;
  highBox = 7;
  highNone = {highBox, highComp};
  checked = 8;
  isDrawn = 12;
  highItem = 13;
  menuToggled = 14;

TYPE
  Requester = STRUCT 
    olderRequest : RequesterPtr;
    leftEdge,topEdge : INTEGER;
    width,height : INTEGER;
    relLeft,relTop : INTEGER;
    reqGadget : GadgetPtr;
    reqBorder : BorderPtr;
    reqText : IntuiTextPtr;
    flags : SET;
    backFill : SHORTINT;
    reqLayer : g.LayerPtr;
    reqPad1 : ARRAY 32 OF e.BYTE;
    imageBMap : g.BitMapPtr;
    rWindow : WindowPtr;
    reqImage : ImagePtr;
    reqPad2 : ARRAY 32 OF e.BYTE;
  END;

CONST
  pointRel = 0;
  preDrawn = 1;
  noisyReq = 2;
  simpleReq = 4;
  useReqImage = 5;
  noReqBackFill = 6;
  reqOffWindow = 12;
  reqActive = 13;
  sysRequest = 14;
  deferRefresh = 15;

TYPE
  Gadget = STRUCT 
    nextGadget : GadgetPtr;
    leftEdge,topEdge : INTEGER;
    width,height : INTEGER;
    flags : SET;
    activation : SET;
    gadgetType : INTEGER;
    gadgetRender : e.APTR;
    selectRender : e.APTR;
    gadgetText : IntuiTextPtr;
    mutualExclude : LONGSET;
    specialInfo : GadSpecialInfoPtr;
    gadgetID : INTEGER;
    userData : e.APTR;
  END;
  GadSpecialInfo = STRUCT 
  END;

CONST
  gadgHighBits = {0, 1};
  gadgHComp = {};
  gadgHBox = 0;
  gadgHImage = 1;
  gadgHNone = {0, 1};
  gadgImage = 2;
  gRelBottom = 3;
  gRelRight = 4;
  gRelWidth = 5;
  gRelHeight = 6;
  selected = 7;
  gadgDisabled = 8;
  labelMask = {12, 13};
  labelIText = {};
  labelString = 12;
  labelImage = 13;
  tabCycle = 9;
  stringExtend = 10;
  relVerify = 0;
  gadgImmediate = 1;
  endGadget = 2;
  followMouse = 3;
  rightBorder = 4;
  leftBorder = 5;
  topBorder = 6;
  bottomBorder = 7;
  borderSniff = 15;
  toggleSelect = 8;
  boolExtend = 13;
  stringLeft = {};
  stringCenter = 9;
  stringRight = 10;
  longint = 11;
  altKeyMap = 12;
  actStringExtend = 13;
  activeGadget = 14;
  gadgetType = 0FC00U;
  sysGadget = 08000U;
  scrGadget = 04000U;
  gzzGadget = 02000U;
  reqGadget = 01000U;
  sizing = 00010U;
  wDragging = 00020U;
  sDragging = 00030U;
  wUpFront = 00040U;
  sUpFront = 00050U;
  wDownBack = 00060U;
  sDownBack = 00070U;
  close = 00080U;
  boolGadget = 00001U;
  gadget0002 = 00002U;
  propGadget = 00003U;
  strGadget = 00004U;
  customGadget = 00005U;
  gTypeMask = 00007U;

TYPE
  BoolInfo = STRUCT 
    flags : SET;
    mask : e.APTR;
    reserved : LONGINT;
  END;

CONST
  boolMask = 0;

TYPE
  PropInfo = STRUCT 
    flags : SET;
    horizPot : INTEGER;
    vertPot : INTEGER;
    horizBody : INTEGER;
    vertBody : INTEGER;
    cWidth : INTEGER;
    cHeight : INTEGER;
    hPotRes,vPotRes : INTEGER;
    leftBorder : INTEGER;
    topBorder : INTEGER;
  END;

CONST
  autoKnob = 0;
  freeHoriz = 1;
  freeVert = 2;
  propBorderless = 3;
  knobHit = 8;
  propNewLook = 4;
  knobHmin = 6;
  knobVmin = 4;
  maxBody = 0FFFFU;
  maxPot = 0FFFFU;

TYPE
  StringInfo = STRUCT 
    buffer : e.STRPTR;
    undoBuffer : e.STRPTR;
    bufferPos : INTEGER;
    maxChars : INTEGER;
    dispPos : INTEGER;
    undoPos : INTEGER;
    numChars : INTEGER;
    dispCount : INTEGER;
    cLeft,cTop : INTEGER;
    extension : StringExtendPtr;
    longInt : LONGINT;
    altKeyMap : km.KeyMapPtr;
  END;
  IntuiText = STRUCT 
    frontPen,backPen : SHORTINT;
    drawMode : SHORTSET;
    leftEdge : INTEGER;
    topEdge : INTEGER;
    iTextFont : g.TextAttrPtr;
    iText : e.STRPTR;
    nextText : IntuiTextPtr;
  END;
  Border = STRUCT 
    leftEdge,topEdge : INTEGER;
    frontPen,backPen : SHORTINT;
    drawMode : SHORTSET;
    count : SHORTINT;
    xy : e.APTR;
    nextBorder : BorderPtr;
  END;
  Image = STRUCT 
    leftEdge : INTEGER;
    topEdge : INTEGER;
    width : INTEGER;
    height : INTEGER;
    depth : INTEGER;
    imageData : e.APTR;
    planePick,planeOnOff : SHORTSET;
    nextImage : ImagePtr;
  END;
  IntuiMessage = STRUCT (execMessage : e.Message) 
    class : LONGSET;
    code : INTEGER;
    qualifier : SET;
    iAddress : e.APTR;
    mouseX,mouseY : INTEGER;
    time : t.TimeVal;
    idcmpWindow : WindowPtr;
    specialLink : IntuiMessagePtr;
  END;

CONST
  sizeVerify = 0;
  newSize = 1;
  refreshWindow = 2;
  mouseButtons = 3;
  mouseMove = 4;
  gadgetDown = 5;
  gadgetUp = 6;
  reqSet = 7;
  menuPick = 8;
  closeWindow = 9;
  rawKey = 10;
  reqVerify = 11;
  reqClear = 12;
  menuVerify = 13;
  newPrefs = 14;
  diskInserted = 15;
  diskRemoved = 16;
  wbenchMessage = 17;
  activeWindow = 18;
  inactiveWindow = 19;
  deltaMove = 20;
  vanillaKey = 21;
  intuiTicks = 22;
  idcmpUpdate = 23;
  menuHelp = 24;
  changeWindow = 25;
  lonelyMessage = 31;
  menuHot = 0001H;
  menuCancel = 0002H;
  menuWaiting = 0003H;
  okOk = menuHot;
  okAbort = 0004H;
  okCancel = menuCancel;
  wbenchOpen = 0001H;
  wbenchClose = 0002H;

TYPE
  IBox = STRUCT 
    left : INTEGER;
    top : INTEGER;
    width : INTEGER;
    height : INTEGER;
  END;
  Window = STRUCT 
    nextWindow : WindowPtr;
    leftEdge,topEdge : INTEGER;
    width,height : INTEGER;
    mouseY,mouseX : INTEGER;
    minWidth,minHeight : INTEGER;
    maxWidth,maxHeight : INTEGER;
    flags : LONGSET;
    menuStrip : MenuPtr;
    title : e.STRPTR;
    firstRequest : RequesterPtr;
    dmRequest : RequesterPtr;
    reqCount : INTEGER;
    wScreen : ScreenPtr;
    rPort : g.RastPortPtr;
    borderLeft,borderTop,borderRight,borderBottom : SHORTINT;
    borderRPort : g.RastPortPtr;
    firstGadget : GadgetPtr;
    parent,descendant : WindowPtr;
    pointer : e.APTR;
    ptrHeight : SHORTINT;
    ptrWidth : SHORTINT;
    xOffset,yOffset : SHORTINT;
    idcmpFlags : LONGSET;
    userPort : e.MsgPortPtr;
    windowPort : e.MsgPortPtr;
    messageKey : IntuiMessagePtr;
    detailPen,blockPen : SHORTINT;
    checkMark : ImagePtr;
    screenTitle : e.STRPTR;
    gzzMouseX : INTEGER;
    gzzMouseY : INTEGER;
    gzzWidth : INTEGER;
    gzzHeight : INTEGER;
    extData : e.APTR;
    userData : e.APTR;
    wLayer : g.LayerPtr;
    iFont : g.TextFontPtr;
    moreFlags : LONGSET;
  END;

CONST
  windowSizing = 0;
  windowDrag = 1;
  windowDepth = 2;
  windowClose = 3;
  sizeBRight = 4;
  sizeBBottom = 5;
  refreshBits = LONGSET{6, 7};
  smartRefresh = LONGSET{};
  simpleRefresh = 6;
  superBitMap = 7;
  otherRefresh = LONGSET{6, 7};
  backDrop = 8;
  reportMouse = 9;
  gimmeZeroZero = 10;
  borderless = 11;
  activate = 12;
  windowActive = 13;
  inRequest = 14;
  menuState = 15;
  rmbTrap = 16;
  noCareRefresh = 17;
  windowRefresh = 24;
  wbenchWindow = 25;
  windowTicked = 26;
  nwExtended = 18;
  visitor = 27;
  zoomed = 28;
  hasZoom = 29;
  defaultMouseQueue = 5;

TYPE
  NewWindow = STRUCT 
    leftEdge,topEdge : INTEGER;
    width,height : INTEGER;
    detailPen,blockPen : SHORTINT;
    idcmpFlags : LONGSET;
    flags : LONGSET;
    firstGadget : GadgetPtr;
    checkMark : ImagePtr;
    title : e.STRPTR;
    screen : ScreenPtr;
    bitMap : g.BitMapPtr;
    minWidth,minHeight : INTEGER;
    maxWidth,maxHeight : INTEGER;
    type : SET;
  END;
  ExtNewWindow = STRUCT (nw : NewWindow) 
    extension : u.TagItemPtr;
  END;

CONST
  waDummy = u.user + 99;
  waLeft = waDummy + 001H;
  waTop = waDummy + 002H;
  waWidth = waDummy + 003H;
  waHeight = waDummy + 004H;
  waDetailPen = waDummy + 005H;
  waBlockPen = waDummy + 006H;
  waIDCMP = waDummy + 007H;
  waFlags = waDummy + 008H;
  waGadgets = waDummy + 009H;
  waCheckmark = waDummy + 00AH;
  waTitle = waDummy + 00BH;
  waScreenTitle = waDummy + 00CH;
  waCustomScreen = waDummy + 00DH;
  waSuperBitMap = waDummy + 00EH;
  waMinWidth = waDummy + 00FH;
  waMinHeight = waDummy + 010H;
  waMaxWidth = waDummy + 011H;
  waMaxHeight = waDummy + 012H;
  waInnerWidth = waDummy + 013H;
  waInnerHeight = waDummy + 014H;
  waPubScreenName = waDummy + 015H;
  waPubScreen = waDummy + 016H;
  waPubScreenFallBack = waDummy + 017H;
  waWindowName = waDummy + 018H;
  waColors = waDummy + 019H;
  waZoom = waDummy + 01AH;
  waMouseQueue = waDummy + 01BH;
  waBackFill = waDummy + 01CH;
  waRptQueue = waDummy + 01DH;
  waSizeGadget = waDummy + 01EH;
  waDragBar = waDummy + 01FH;
  waDepthGadget = waDummy + 020H;
  waCloseGadget = waDummy + 021H;
  waBackdrop = waDummy + 022H;
  waReportMouse = waDummy + 023H;
  waNoCareRefresh = waDummy + 024H;
  waBorderless = waDummy + 025H;
  waActivate = waDummy + 026H;
  waRMBTrap = waDummy + 027H;
  waWBenchWindow = waDummy + 028H;
  waSimpleRefresh = waDummy + 029H;
  waSmartRefresh = waDummy + 02AH;
  waSizeBRight = waDummy + 02BH;
  waSizeBBottom = waDummy + 02CH;
  waAutoAdjust = waDummy + 02DH;
  waGimmeZeroZero = waDummy + 02EH;
  waMenuHelp = waDummy + 02FH;

TYPE
  Remember = STRUCT 
    nextRemember : RememberPtr;
    rememberSize : LONGINT;
    memory : e.APTR;
  END;
  ColorSpec = STRUCT 
    colorIndex : INTEGER;
    red : INTEGER;
    green : INTEGER;
    blue : INTEGER;
  END;
  EasyStruct = STRUCT 
    structSize : LONGINT;
    flags : LONGSET;
    title : e.STRPTR;
    textFormat : e.STRPTR;
    gadgetFormat : e.STRPTR;
  END;

CONST
  noMenu = 0001FU;
  noItem = 0003FU;
  noSub = 0001FU;
  menuNull = 0FFFFU;
  checkWidth = 19;
  commWidth = 27;
  lowCheckWidth = 13;
  lowCommWidth = 16;
  alertType = 80000000H;
  recoveryAlert = 00000000H;
  deadendAlert = 80000000H;
  autoFrontPen = 0;
  autoBackPen = 1;
  autoDrawMode = g.jam2;
  autoLeftEdge = 6;
  autoTopEdge = 3;
  autoITextFont = NIL;
  autoNextText = NIL;
  selectUp = ie.lButton + ie.upPrefix;
  selectDown = ie.lButton;
  menuUp = ie.rButton + ie.upPrefix;
  menuDown = ie.rButton;
  middleDown = ie.mButton;
  middleUp = ie.mButton + ie.upPrefix;
  altLeft = {ie.lAlt};
  altRight = {ie.rAlt};
  amigaLeft = {ie.lCommand};
  amigaRight = {ie.rCommand};
  amigaKeys = amigaLeft + amigaRight;
  cursorUp = 04CH;
  cursorLeft = 04FH;
  cursorRight = 04EH;
  cursorDown = 04DH;
  keyCodeQ = 010H;
  keyCodeZ = 031H;
  keyCodeX = 032H;
  keyCodeV = 034H;
  keyCodeB = 035H;
  keyCodeN = 036H;
  keyCodeM = 037H;
  keyCodeLess = 038H;
  keyCodeGreater = 039H;

TYPE
  GadgetInfo = STRUCT 
    screen : ScreenPtr;
    window : WindowPtr;
    requester : RequesterPtr;
    rastPort : g.RastPortPtr;
    layer : g.LayerPtr;
    domain : IBox;
    pens : STRUCT 
      detailPen : SHORTINT;
      blockPen : SHORTINT;
    END;
    drInfo : DrawInfoPtr;
    reserved : ARRAY 6 OF LONGINT;
  END;
  PGX = STRUCT 
    container : IBox;
    newKnob : IBox;
  END;
  ObjectUsr = LONGINT;
  ClassID = e.BYTE;
  Msg = STRUCT 
    methodID : LONGINT;
  END;

CONST
  rootClass = "rootclass";
  imageClass = "imageclass";
  frameIClass = "frameiclass";
  sysIClass = "sysiclass";
  fillRectClass = "fillrectclass";
  gadgetClass = "gadgetclass";
  progGClass = "propgclass";
  strGClass = "strgclass";
  buttonGClass = "buttongclass";
  frButtonClass = "frbuttonclass";
  groupGClass = "groupgclass";
  icClass = "icclass";
  modelClass = "modelclass";
  dummy = 0100H;
  new = 0101H;
  dispose = 0102H;
  set = 0103H;
  get = 0104H;
  addTail = 0105H;
  remove = 0106H;
  notify = 0107H;
  update = 0108H;
  addMember = 0109H;
  remMember = 010AH;

TYPE
  OpSet = STRUCT (msg : Msg) 
    attrList : u.TagItemPtr;
    gInfo : GadgetInfoPtr;
  END;
  OpUpdate = STRUCT (msg : Msg) 
    attrList : u.TagItemPtr;
    gInfo : GadgetInfoPtr;
    flags : LONGSET;
  END;

CONST
  interim = 0;

TYPE
  OpGet = STRUCT (msg : Msg) 
    attrID : LONGINT;
    storage : e.APTR;
  END;
  OpAddTail = STRUCT (msg : Msg) 
    list : e.ListPtr;
  END;
  OpMember = STRUCT (msg : Msg) 
    object : ObjectPtr;
  END;
  IClass = STRUCT (dispatcher : u.Hook) 
    reserved : LONGINT;
    super : IClassPtr;
    id : ClassID;
    instOffset : INTEGER;
    instSize : INTEGER;
    userData : LONGINT;
    subclassCount : LONGINT;
    objectCount : LONGINT;
    flags : LONGSET;
  END;

CONST
  inList = 0;

TYPE
  Object = STRUCT (node : e.MinNode) 
    class : IClassPtr;
  END;

CONST
  gaDummy = u.user + 30000H;
  gaLeft = gaDummy + 0001H;
  gaRelRight = gaDummy + 0002H;
  gaTop = gaDummy + 0003H;
  gaRelBottom = gaDummy + 0004H;
  gaWidth = gaDummy + 0005H;
  gaRelWidth = gaDummy + 0006H;
  gaHeight = gaDummy + 0007H;
  gaRelHeight = gaDummy + 0008H;
  gaText = gaDummy + 0009H;
  gaImage = gaDummy + 000AH;
  gaBorder = gaDummy + 000BH;
  gaSelectRender = gaDummy + 000CH;
  gaHighlight = gaDummy + 000DH;
  gaDisabled = gaDummy + 000EH;
  gaGZZGadget = gaDummy + 000FH;
  gaID = gaDummy + 0010H;
  gaUserData = gaDummy + 0011H;
  gaSpecialInfo = gaDummy + 0012H;
  gaSelected = gaDummy + 0013H;
  gaEndGadget = gaDummy + 0014H;
  gaImmediate = gaDummy + 0015H;
  gaRelVerify = gaDummy + 0016H;
  gaFollowMouse = gaDummy + 0017H;
  gaRightBorder = gaDummy + 0018H;
  gaLeftBorder = gaDummy + 0019H;
  gaTopBorder = gaDummy + 001AH;
  gaBottomBorder = gaDummy + 001BH;
  gaToggleSelect = gaDummy + 001CH;
  gaSysGadget = gaDummy + 001DH;
  gaSysGType = gaDummy + 001EH;
  gaPrevious = gaDummy + 001FH;
  gaNext = gaDummy + 0020H;
  gaDrawInfo = gaDummy + 0021H;
  gaIntuiText = gaDummy + 0022H;
  gaLabelImage = gaDummy + 0023H;
  gaTabCycle = gaDummy + 0024H;
  pgaDummy = u.user + 31000H;
  pgaFreedom = pgaDummy + 0001H;
  pgaBorderless = pgaDummy + 0002H;
  pgaHorizPot = pgaDummy + 0003H;
  pgaHorizBody = pgaDummy + 0004H;
  pgaVertPot = pgaDummy + 0005H;
  pgaVertBody = pgaDummy + 0006H;
  pgaTotal = pgaDummy + 0007H;
  pgaVisible = pgaDummy + 0008H;
  pgaTop = pgaDummy + 0009H;
  pgaNewLook = pgaDummy + 000AH;
  stringaDummy = u.user + 32000H;
  stringaMaxChars = stringaDummy + 0001H;
  stringaBuffer = stringaDummy + 0002H;
  stringaUndoBuffer = stringaDummy + 0003H;
  stringaWorkBuffer = stringaDummy + 0004H;
  stringaBufferPos = stringaDummy + 0005H;
  stringaDispPos = stringaDummy + 0006H;
  stringaAltKeyMap = stringaDummy + 0007H;
  stringaFont = stringaDummy + 0008H;
  stringaPens = stringaDummy + 0009H;
  stringaActivePens = stringaDummy + 000AH;
  stringaEditHook = stringaDummy + 000BH;
  stringaEditModes = stringaDummy + 000CH;
  stringaReplaceMode = stringaDummy + 000DH;
  stringaFixedFieldMode = stringaDummy + 000EH;
  stringaNoFilterMode = stringaDummy + 000FH;
  stringaJustification = stringaDummy + 0010H;
  stringaLongVal = stringaDummy + 0011H;
  stringaTextVal = stringaDummy + 0012H;
  stringaExitHelp = stringaDummy + 0013H;
  sgDefaultMaxChars = 128;
  layoutaDummy = u.user + 38000H;
  layoutaLayoutObj = layoutaDummy + 0001H;
  layoutaSpacing = layoutaDummy + 0002H;
  layoutaOrientation = layoutaDummy + 0003H;
  lorientNone = 0;
  lorientHoriz = 1;
  lorientVert = 2;
  gmDummy = -1;
  gmHitTest = 0;
  gmRender = 1;
  gmGoActive = 2;
  gmHandleInput = 3;
  gmGoInactive = 4;

TYPE
  HitTest = STRUCT (msg : Msg) 
    gInfo : GadgetInfoPtr;
    mouse : g.Point;
  END;

CONST
  gadgetHit = 000000004;

TYPE
  Render = STRUCT (msg : Msg) 
    gInfo : GadgetInfoPtr;
    rPort : g.RastPortPtr;
    redraw : LONGINT;
  END;

CONST
  gRedrawUpdate = 2;
  gRedrawRedraw = 1;
  gRedrawToggle = 0;

TYPE
  Input = STRUCT (msg : Msg) 
    gInfo : GadgetInfoPtr;
    iEvent : ie.InputEventPtr;
    termination : e.APTR;
    mouse : g.Point;
  END;

CONST
  gmrMeActive = 0;
  gmrNoReuse = 2;
  gmrReuse = 4;
  gmrVerify = 8;
  gmrNextActive = 16;
  gmrPrevActive = 32;

TYPE
  GoInactive = STRUCT (msg : Msg) 
    gInfo : GadgetInfoPtr;
    abort : LONGINT;
  END;

CONST
  icmDummy = 00401H;
  icmSetLoop = 00402H;
  icmClearLoop = 00403H;
  icmCheckLoop = 00404H;
  icaDummy = u.user + 040000H;
  icatarget = icaDummy + 1;
  icamap = icaDummy + 2;
  icSpecialCode = icaDummy + 3;
  icTargetIDCMP = -LONGSET{};
  customImageDepth = -1;
  iaDummy = u.user + 20000H;
  iaLeft = iaDummy + 001H;
  iaTop = iaDummy + 002H;
  iaWidth = iaDummy + 003H;
  iaHeight = iaDummy + 004H;
  iaFGPen = iaDummy + 005H;
  iaBGPen = iaDummy + 006H;
  iaData = iaDummy + 007H;
  iaLineWidth = iaDummy + 008H;
  iaPens = iaDummy + 00EH;
  iaResolution = iaDummy + 00FH;
  iaAPattern = iaDummy + 010H;
  iaAPatSize = iaDummy + 011H;
  iaMode = iaDummy + 012H;
  iaFont = iaDummy + 013H;
  iaOutline = iaDummy + 014H;
  iaRecessed = iaDummy + 015H;
  iaDoubleEmboss = iaDummy + 016H;
  iaEdgesOnly = iaDummy + 017H;
  sysiaSize = iaDummy + 00BH;
  sysiaDepth = iaDummy + 00CH;
  sysiaWhich = iaDummy + 00DH;
  sysiaDrawInfo = iaDummy + 018H;
  sysiaPens = iaPens;
  iaShadowPen = iaDummy + 009H;
  iaHighlightPen = iaDummy + 00AH;
  sysIsSizeMedRes = 0;
  sysIsSizeLowRes = 1;
  sysIsSizeHires = 2;
  depthImage = 000H;
  zoomImage = 001H;
  sizeImage = 002H;
  closeImage = 003H;
  sDepthImage = 005H;
  leftImage = 00AH;
  upImage = 00BH;
  rightImage = 00CH;
  downImage = 00DH;
  checkImage = 00EH;
  mxImage = 00FH;
  imDraw = 0202H;
  imHitTest = 0203H;
  imErase = 0204H;
  imMove = 0205H;
  imDrawFrame = 0206H;
  imFrameBox = 0207H;
  imHitFrame = 0208H;
  imEraseFrame = 0209H;
  idsNormal = 0;
  idsSelected = 1;
  idsDisabled = 2;
  idsBusy = 3;
  idsIndeterminate = 4;
  idsInactiveNormal = 5;
  idsInactiveSelected = 6;
  idsInactiveDisabled = 7;

TYPE
  FrameBox = STRUCT (msg : Msg) 
    contentsBox : IBoxPtr;
    frameBox : IBoxPtr;
    drInfo : DrawInfoPtr;
    frameFlags : LONGSET;
  END;

CONST
  frameFSpecify = 0;

TYPE
  Dimensions = STRUCT 
    width : INTEGER;
    height : INTEGER;
  END;
  Draw = STRUCT (msg : Msg) 
    rPort : g.RastPortPtr;
    offset : g.Point;
    state : LONGINT;
    drInfo : DrawInfoPtr;
    dimensions : Dimensions;
  END;
  Erase = STRUCT (msg : Msg) 
    rPort : g.RastPortPtr;
    offset : g.Point;
    dimensions : Dimensions;
  END;
  IMHitTest = STRUCT (msg : Msg) 
    point : g.Point;
    dimensions : Dimensions;
  END;

CONST
  filenameSize = 30;
  pointerSize = (1 + 16 + 1) * 2;
  topazEighty = 8;
  topazSixty = 9;

TYPE
  Filename = ARRAY filenameSize OF CHAR;
  Preferences = STRUCT 
    fontHeight : SHORTINT;
    printerPort : SHORTINT;
    baudRate : INTEGER;
    keyRptSpeed : t.TimeVal;
    keyRptDelay : t.TimeVal;
    doubleClick : t.TimeVal;
    pointerMatrix : ARRAY pointerSize OF INTEGER;
    xOffset : SHORTINT;
    yOffset : SHORTINT;
    color17 : INTEGER;
    color18 : INTEGER;
    color19 : INTEGER;
    pointerTicks : INTEGER;
    color0 : INTEGER;
    color1 : INTEGER;
    color2 : INTEGER;
    color3 : INTEGER;
    viewXOffset : SHORTINT;
    viewYOffset : SHORTINT;
    viewInitX,viewInitY : INTEGER;
    enableCLI : SET;
    printerType : INTEGER;
    printerFilename : Filename;
    printPitch : INTEGER;
    printQuality : INTEGER;
    printSpacing : INTEGER;
    printLeftMargin : INTEGER;
    printRightMargin : INTEGER;
    printImage : INTEGER;
    printAspect : INTEGER;
    printShade : INTEGER;
    printThreshold : INTEGER;
    paperSize : INTEGER;
    paperLength : INTEGER;
    paperType : INTEGER;
    serRWBits : e.BYTE;
    serStopBuf : e.BYTE;
    serParShk : e.BYTE;
    laceWB : SHORTSET;
    workName : Filename;
    rowSizeChange : SHORTINT;
    columnSizeChange : SHORTINT;
    printFlags : SET;
    printMaxWidth : INTEGER;
    printMaxHeight : INTEGER;
    printDensity : SHORTINT;
    printXOffset : SHORTINT;
    width : INTEGER;
    height : INTEGER;
    depth : SHORTINT;
    extSize : SHORTINT;
  END;

CONST
  laceWB = 0;
  lwReserved = 1;
  screenDrag = 14;
  mouseAccel = 15;
  parallelPrinter = 00H;
  serialPrinter = 01H;
  baud110 = 000H;
  baud300 = 001H;
  baud1200 = 002H;
  baud2400 = 003H;
  baud4800 = 004H;
  baud9600 = 005H;
  baud19200 = 006H;
  baudMidi = 007H;
  fanfold = 000H;
  single = 080H;
  pica = 0000H;
  elite = 0400H;
  fine = 0800H;
  draft = 0000H;
  letter = 0100H;
  sixLPI = 0000H;
  eightLPI = 0200H;
  imagePositive = 000H;
  imageNegative = 001H;
  aspectHoriz = 000H;
  aspectVert = 001H;
  shadeBW = 000H;
  shadeGreyScale = 001H;
  shadeColor = 002H;
  usLetter = 000H;
  usLegal = 010H;
  nTractor = 020H;
  wTractor = 030H;
  custom = 040H;
  customName = 000H;
  alphaP101 = 001H;
  brother15XL = 002H;
  cbmMps1000 = 003H;
  diab630 = 004H;
  diabAdvD25 = 005H;
  diabC150 = 006H;
  epson = 007H;
  epsonJX80 = 008H;
  okimate20 = 009H;
  qumeLP20 = 00AH;
  hpLaserjet = 00BH;
  hpLaserjetPlus = 00CH;
  buf512 = 000H;
  buf1024 = 001H;
  buf2048 = 002H;
  buf4096 = 003H;
  buf8000 = 004H;
  buf16000 = 005H;
  readBits = 0F0X;
  writeBits = 00FX;
  stopBits = 0F0X;
  bufSizeBits = 00FX;
  parityBits = 0F0X;
  hShakeBits = 00FX;
  parityNone = 0;
  parityEven = 1;
  parityOdd = 2;
  shakeXon = 0;
  shakeRts = 1;
  shakeNone = 2;
  correctRed = 0;
  correctGreen = 1;
  correctBlue = 2;
  centerImage = 3;
  ignoreDimensions = {};
  boundedDimensions = 4;
  absoluteDimensions = 5;
  pixelDimensions = 6;
  multiplyDimensions = 7;
  integerScaling = 8;
  orderedDithering = {};
  halftoneDithering = 9;
  floydDithering = 10;
  antiAlias = 11;
  greyScale2 = 12;
  correctRGBMask = {correctRed, correctGreen, correctBlue};
  dimensionsMask = {boundedDimensions, absoluteDimensions, pixelDimensions, multiplyDimensions};
  ditheringMask = {halftoneDithering, floydDithering};
  driVersion = 1;

TYPE
  DrawInfo = STRUCT 
    version : INTEGER;
    numPens : INTEGER;
    pens : e.APTR;
    font : g.TextFontPtr;
    depth : INTEGER;
    resolution : g.Point;
    flags : LONGSET;
    reserved : ARRAY 7 OF LONGINT;
  END;

CONST
  drifNewLook = 0;
  detailPen = 0000H;
  blockPen = 0001H;
  textPen = 0002H;
  shinePen = 0003H;
  shadowPen = 0004H;
  fillPen = 0005H;
  fillTextPen = 0006H;
  backGroundPen = 0007H;
  highLightTextPen = 0008H;
  numDRIPens = 0009H;

TYPE
  Screen = STRUCT 
    nextScreen : ScreenPtr;
    firstWindow : WindowPtr;
    leftEdge,topEdge : INTEGER;
    width,height : INTEGER;
    mouseY,mouseX : INTEGER;
    flags : SET;
    title : e.STRPTR;
    defaultTitle : e.STRPTR;
    barHeight,barVBorder,barHBorder,menuVBorder,menuHBorder : SHORTINT;
    wBorTop,wBorLeft,wBorRight,wBorBottom : SHORTINT;
    font : g.TextAttrPtr;
    viewPort : g.ViewPort;
    rastPort : g.RastPort;
    bitMap : g.BitMap;
    layerInfo : g.LayerInfo;
    firstGadget : GadgetPtr;
    detailPen,blockPen : SHORTINT;
    saveColor0 : INTEGER;
    barLayer : g.LayerPtr;
    extData : e.APTR;
    userData : e.APTR;
  END;

CONST
  screenType = {0.reenType..3};
  wbenchScreen = 0;
  publicScreen = 1;
  customScreen = {0.stomScreen..3};
  showTitle = 4;
  beeping = 5;
  customBitMap = 6;
  screenBehind = 7;
  screenQuiet = 8;
  screenHiRes = 9;
  nsExtended = 12;
  autoScroll = 14;
  stdScreenHeight = -1;
  stdScreenWidth = -1;
  saDummy = u.user + 32;
  saLeft = saDummy + 00001H;
  saTop = saDummy + 00002H;
  saWidth = saDummy + 00003H;
  saHeight = saDummy + 00004H;
  saDepth = saDummy + 00005H;
  saDetailPen = saDummy + 00006H;
  saBlockPen = saDummy + 00007H;
  saTitle = saDummy + 00008H;
  saColors = saDummy + 00009H;
  saErrorCode = saDummy + 0000AH;
  saFont = saDummy + 0000BH;
  saSysFont = saDummy + 0000CH;
  saType = saDummy + 0000DH;
  saBitMap = saDummy + 0000EH;
  saPubName = saDummy + 0000FH;
  saPubSig = saDummy + 00010H;
  saPubTask = saDummy + 00011H;
  saDisplayID = saDummy + 00012H;
  saDClip = saDummy + 00013H;
  saOverscan = saDummy + 00014H;
  saObsolete1 = saDummy + 00015H;
  saShowTitle = saDummy + 00016H;
  saBehind = saDummy + 00017H;
  saQuiet = saDummy + 00018H;
  saAutoScroll = saDummy + 00019H;
  saPens = saDummy + 0001AH;
  saFullPalette = saDummy + 0001BH;
  osErrNoMonitor = 1;
  osErrNoChips = 2;
  osErrNoMem = 3;
  osErrNoChipMem = 4;
  osErrPubNotUnique = 5;
  osErrUnknownMode = 6;

TYPE
  NewScreen = STRUCT 
    leftEdge,topEdge,width,height,depth : INTEGER;
    detailPen,blockPen : SHORTINT;
    viewModes : SET;
    type : SET;
    font : g.TextAttrPtr;
    defaultTitle : e.STRPTR;
    gadgets : GadgetPtr;
    customBitMap : g.BitMapPtr;
  END;
  ExtNewScreen = STRUCT (ns : NewScreen) 
    extension : u.TagItemPtr;
  END;

CONST
  oScanText = 1;
  oScanStandard = 2;
  oScanMax = 3;
  oScanVideo = 4;

TYPE
  PubScreenNode = STRUCT (node : e.Node) 
    screen : ScreenPtr;
    flags : SET;
    size : INTEGER;
    visitorCount : INTEGER;
    sigTask : e.TaskPtr;
    sigBit : SHORTINT;
  END;

CONST
  psnfPrivate = 0;
  maxPubScreenName = 139;
  shanghai = 0;
  popPubScreen = 1;

TYPE
  StringExtend = STRUCT 
    font : g.TextFontPtr;
    pens : ARRAY 2 OF SHORTINT;
    activePens : ARRAY 2 OF SHORTINT;
    initialMode : LONGSET;
    editHook : u.HookPtr;
    workBuffer : e.APTR;
    reserved : ARRAY 4 OF LONGINT;
  END;
  SGWork = STRUCT 
    gadget : GadgetPtr;
    stringInfo : StringInfoPtr;
    workBuffer : e.APTR;
    prevBuffer : e.APTR;
    modes : LONGSET;
    iEvent : ie.InputEventPtr;
    code : INTEGER;
    bufferPos : INTEGER;
    numChars : INTEGER;
    actions : LONGSET;
    longInt : LONGINT;
    gadgetInfo : GadgetInfoPtr;
    editOp : INTEGER;
  END;

CONST
  eoNoOp = 01H;
  eoDelBackward = 02H;
  eoDelForward = 03H;
  eoMoveCursor = 04H;
  eoEnter = 05H;
  eoReset = 06H;
  eoReplaceChar = 07H;
  eoInsertChar = 08H;
  eoBadFormat = 09H;
  eoBigChange = 0AH;
  eoUndo = 0BH;
  eoClear = 0CH;
  eoSpecial = 0DH;
  sgmReplace = 0;
  sgmFixedField = 1;
  sgmNoFilter = 2;
  sgmExitHelp = 7;
  sgmNoChange = 3;
  sgmNoWorkB = 4;
  sgmControl = 5;
  sgmLongint = 6;
  sgaUse = 0;
  sgaEnd = 1;
  sgaBeep = 2;
  sgaReuse = 3;
  sgaRedisplay = 4;
  sgaNextActive = 5;
  sgaPrevActive = 6;
  sghKey = 1;
  sghClick = 2;
  dModeCount = 2;
  hiresPick = 0;
  lowresPick = 1;
  eventMax = 10;
  resCount = 2;
  hiresGadget = 0;
  lowresGadget = 1;
  gadgetCount = 8;
  upFrontGadget = 0;
  downBackGadget = 1;
  sizeGadget = 2;
  closeGadget = 3;
  dragGadget = 4;
  sUpFrontGadget = 5;
  sDownBackGadget = 6;
  sDragGadget = 7;

TYPE
  IntuitionBase = STRUCT (libNode : e.Library) 
    viewLord : g.View;
    activeWindow : WindowPtr;
    activeScreen : ScreenPtr;
    firstScreen : ScreenPtr;
    flags : LONGSET;
    mouseY,mouseX : INTEGER;
    time : t.TimeVal
  END;

TYPE
  LONGBOOL = LONGINT;

CONST
  LTRUE = -1;
  LFALSE = 0;

VAR
  int : IntuitionBasePtr;

PROCEDURE OpenIntuition();
PROCEDURE Intuition(iEvent: ie.InputEventPtr);
PROCEDURE AddGadget(window: WindowPtr; VAR gadget: Gadget; position: LONGINT): INTEGER;
PROCEDURE ClearDMRequest(window: WindowPtr): BOOLEAN;
PROCEDURE ClearMenuStrip(window: WindowPtr);
PROCEDURE ClearPointer(window: WindowPtr);
PROCEDURE CloseScreen(screen: ScreenPtr): BOOLEAN;
PROCEDURE OldCloseScreen(screen: ScreenPtr);
PROCEDURE CloseWindow(window: WindowPtr);
PROCEDURE CloseWorkBench(): BOOLEAN;
PROCEDURE CurrentTime(VAR seconds: LONGINT; VAR micros: LONGINT);
PROCEDURE DisplayAlert(alertNumber: LONGINT; string: ARRAY OF CHAR; height: LONGINT): BOOLEAN;
PROCEDURE DisplayBeep(screen: ScreenPtr);
PROCEDURE DoubleClick(sSeconds: LONGINT; sMicros: LONGINT; cSeconds: LONGINT; cMicros: LONGINT): BOOLEAN;
PROCEDURE DrawBorder(rp: g.RastPortPtr; border: BorderPtr; leftOffset: LONGINT; topOffset: LONGINT);
PROCEDURE DrawImage(rp: g.RastPortPtr; image: Image; leftOffset: LONGINT; topOffset: LONGINT);
PROCEDURE EndRequest(requester: RequesterPtr; window: WindowPtr);
PROCEDURE GetDefPrefs(VAR preferences: ARRAY OF e.BYTE; size: LONGINT);
PROCEDURE GetPrefs(VAR preferences: ARRAY OF e.BYTE; size: LONGINT);
PROCEDURE InitRequester(VAR requester: Requester);
PROCEDURE ItemAddress(menuStrip: Menu; menuNumber: LONGINT): MenuItemPtr;
PROCEDURE ModifyIDCMP(window: WindowPtr; flags: LONGSET): BOOLEAN;
PROCEDURE OldModifyIDCMP(window: WindowPtr; flags: LONGSET);
PROCEDURE ModifyProp(VAR gadget: Gadget; window: WindowPtr; requester: RequesterPtr; flags: SET; horizPot: LONGINT; vertPot: LONGINT; horizBody: LONGINT; vertBody: LONGINT);
PROCEDURE MoveScreen(screen: ScreenPtr; dx: LONGINT; dy: LONGINT);
PROCEDURE MoveWindow(window: WindowPtr; dx: LONGINT; dy: LONGINT);
PROCEDURE OffGadget(VAR gadget: Gadget; window: WindowPtr; requester: RequesterPtr);
PROCEDURE OffMenu(window: WindowPtr; menuNumber: LONGINT);
PROCEDURE OnGadget(VAR gadget: Gadget; window: WindowPtr; requester: RequesterPtr);
PROCEDURE OnMenu(window: WindowPtr; menuNumber: LONGINT);
PROCEDURE OpenScreen(newScreen: NewScreen): ScreenPtr;
PROCEDURE OpenWindow(newWindow: NewWindow): WindowPtr;
PROCEDURE OpenWorkBench(): ScreenPtr;
PROCEDURE PrintIText(rp: g.RastPortPtr; iText: IntuiText; left: LONGINT; top: LONGINT);
PROCEDURE RefreshGadgets(gadgets: GadgetPtr; window: WindowPtr; requester: RequesterPtr);
PROCEDURE RemoveGadget(window: WindowPtr; VAR gadget: Gadget): INTEGER;
PROCEDURE ReportMouse(window: WindowPtr; flag: LONGBOOL);
PROCEDURE Request(requester: RequesterPtr; window: WindowPtr): BOOLEAN;
PROCEDURE ScreenToBack(screen: ScreenPtr);
PROCEDURE ScreenToFront(screen: ScreenPtr);
PROCEDURE SetDMRequest(window: WindowPtr; requester: RequesterPtr): BOOLEAN;
PROCEDURE SetMenuStrip(window: WindowPtr; VAR menu: Menu): BOOLEAN;
PROCEDURE SetPointer(window: WindowPtr; pointer: ARRAY OF e.BYTE; height: LONGINT; width: LONGINT; xOffset: LONGINT; yOffset: LONGINT);
PROCEDURE SetWindowTitles(window: WindowPtr; windowTitle: e.ADDRESS; screenTitle: e.ADDRESS);
PROCEDURE SetWindowTitlesStr(window: WindowPtr; windowTitle: ARRAY OF CHAR; screenTitle: ARRAY OF CHAR);
PROCEDURE ShowTitle(screen: ScreenPtr; showIt: LONGBOOL);
PROCEDURE SizeWindow(window: WindowPtr; dx: LONGINT; dy: LONGINT);
PROCEDURE ViewAddress(): g.ViewPtr;
PROCEDURE ViewPortAddress(window: WindowPtr): g.ViewPortPtr;
PROCEDURE WindowToBack(window: WindowPtr);
PROCEDURE WindowToFront(window: WindowPtr);
PROCEDURE WindowLimits(window: WindowPtr; widthMin: LONGINT; heightMin: LONGINT; widthMax: LONGINT; heightMax: LONGINT): BOOLEAN;
PROCEDURE SetPrefs(preferences: ARRAY OF e.BYTE; size: LONGINT; inform: LONGBOOL);
PROCEDURE IntuiTextLength(iText: IntuiText): INTEGER;
PROCEDURE WBenchToBack(): BOOLEAN;
PROCEDURE WBenchToFront(): BOOLEAN;
PROCEDURE AutoRequest(window: WindowPtr; body: IntuiTextPtr; posText: IntuiTextPtr; negText: IntuiTextPtr; pFlag: LONGSET; nFlag: LONGSET; width: LONGINT; height: LONGINT): BOOLEAN;
PROCEDURE BeginRefresh(window: WindowPtr);
PROCEDURE BuildSysRequest(window: WindowPtr; body: IntuiTextPtr; posText: IntuiTextPtr; negText: IntuiTextPtr; flags: LONGSET; width: LONGINT; height: LONGINT): WindowPtr;
PROCEDURE EndRefresh(window: WindowPtr; complete: LONGBOOL);
PROCEDURE FreeSysRequest(window: WindowPtr);
PROCEDURE MakeScreen(screen: ScreenPtr);
PROCEDURE RemakeDisplay();
PROCEDURE RethinkDisplay();
PROCEDURE AllocRemember(VAR rememberKey: RememberPtr; size: LONGINT; flags: LONGSET): e.APTR;
PROCEDURE AlohaWorkbench(wbport: e.MsgPortPtr);
PROCEDURE FreeRemember(VAR rememberKey: RememberPtr; reallyForget: LONGBOOL);
PROCEDURE LockIBase(dontknow: LONGINT): LONGINT;
PROCEDURE UnlockIBase(ibLock: LONGINT);
PROCEDURE GetScreenData(VAR buffer: Screen; size: LONGINT; type: SET; screen: ScreenPtr): BOOLEAN;
PROCEDURE RefreshGList(gadgets: GadgetPtr; window: WindowPtr; requester: RequesterPtr; numGad: LONGINT);
PROCEDURE AddGList(window: WindowPtr; gadget: GadgetPtr; position: LONGINT; numGad: LONGINT; requester: RequesterPtr): INTEGER;
PROCEDURE RemoveGList(remPtr: WindowPtr; gadget: GadgetPtr; numGad: LONGINT): INTEGER;
PROCEDURE ActivateWindow(window: WindowPtr): BOOLEAN;
PROCEDURE OldActivateWindow(window: WindowPtr);
PROCEDURE RefreshWindowFrame(window: WindowPtr);
PROCEDURE ActivateGadget(VAR gadget: Gadget; window: WindowPtr; requester: RequesterPtr): BOOLEAN;
PROCEDURE NewModifyProp(VAR gadget: Gadget; window: WindowPtr; requester: RequesterPtr; flags: SET; horizPot: LONGINT; vertPot: LONGINT; horizBody: LONGINT; vertBody: LONGINT; numGad: LONGINT);
PROCEDURE QueryOverscan(displayID: LONGINT; rect: g.Rectangle; oScanType: LONGINT): LONGINT;
PROCEDURE MoveWindowInFrontOf(window: WindowPtr; behindWindow: WindowPtr);
PROCEDURE ChangeWindowBox(window: WindowPtr; left: LONGINT; top: LONGINT; width: LONGINT; height: LONGINT);
PROCEDURE SetEditHook(hook: u.HookPtr): u.HookPtr;
PROCEDURE SetMouseQueue(window: LONGINT; queueLength: LONGINT): LONGINT;
PROCEDURE ZipWindow(window: WindowPtr);
PROCEDURE LockPubScreen(name: ARRAY OF CHAR): ScreenPtr;
PROCEDURE UnlockPubScreen(name: ARRAY OF CHAR; screen: ScreenPtr);
PROCEDURE LockPubScreenList(): e.ListPtr;
PROCEDURE UnlockPubScreenList();
PROCEDURE NextPubScreen(screen: ScreenPtr; VAR name: ARRAY OF CHAR): e.STRPTR;
PROCEDURE SetDefaultPubScreen(name: ARRAY OF CHAR);
PROCEDURE SetPubScreenModes(modes: SET): SET;
PROCEDURE PubScreenStatus(screen: ScreenPtr; statusFlags: SET): SET;
PROCEDURE ObtainGIRPort(gInfo: GadgetInfoPtr): g.RastPortPtr;
PROCEDURE ReleaseGIRPort(rp: g.RastPortPtr);
PROCEDURE GadgetMouse(VAR gadget: Gadget; gInfo: GadgetInfoPtr; VAR mousePoint: g.Point);
PROCEDURE SetIPrefs(ptr: e.APTR; size: LONGINT; type: LONGINT);
PROCEDURE GetDefaultPubScreen(VAR nameBuffer: ARRAY OF CHAR);
PROCEDURE EasyRequestArgs(window: WindowPtr; easyStruct: EasyStructPtr; idcmpPtr: e.APTR; args: e.APTR): LONGINT;
PROCEDURE EasyRequest(window: WindowPtr; easyStruct: EasyStructPtr; idcmpPtr: e.APTR; arg1..: e.APTR): LONGINT;
PROCEDURE BuildEasyRequestArgs(window: WindowPtr; easyStruct: EasyStructPtr; idcmp: LONGSET; args: e.APTR): WindowPtr;
PROCEDURE BuildEasyRequest(window: WindowPtr; easyStruct: EasyStructPtr; idcmp: LONGSET; arg1..: e.APTR): WindowPtr;
PROCEDURE SysReqHandler(window: WindowPtr; idcmpPtr: e.APTR; waitInput: LONGBOOL): LONGINT;
PROCEDURE OpenWindowTagList(newWindow: NewWindow; tagList: ARRAY OF u.TagItem): WindowPtr;
PROCEDURE OpenWindowTags(newWindow: NewWindow; tag1..: u.Tag): WindowPtr;
PROCEDURE OpenWindowTagListA(newWindow: NewWindowPtr; tagList: ARRAY OF u.TagItem): WindowPtr;
PROCEDURE OpenWindowTagsA(newWindow: NewWindowPtr; tag1..: u.Tag): WindowPtr;
PROCEDURE OpenScreenTagList(newScreen: NewScreen; tagList: ARRAY OF u.TagItem): ScreenPtr;
PROCEDURE OpenScreenTags(newScreen: NewScreen; tag1..: u.Tag): ScreenPtr;
PROCEDURE OpenScreenTagListA(newScreen: NewScreenPtr; tagList: ARRAY OF u.TagItem): ScreenPtr;
PROCEDURE OpenScreenTagsA(newScreen: NewScreenPtr; tag1..: u.Tag): ScreenPtr;
PROCEDURE DrawImageState(rp: g.RastPortPtr; image: Image; leftOffset: LONGINT; topOffset: LONGINT; state: LONGINT; drawInfo: DrawInfoPtr);
PROCEDURE PointInImage(point: LONGINT; image: Image): BOOLEAN;
PROCEDURE EraseImage(rp: g.RastPortPtr; image: Image; leftOffset: LONGINT; topOffset: LONGINT);
PROCEDURE NewObjectA(clacc: IClassPtr; classID: ARRAY OF CHAR; tagList: ARRAY OF u.TagItem): e.APTR;
PROCEDURE NewObject(clacc: IClassPtr; classID: ARRAY OF CHAR; tag1..: u.Tag): e.APTR;
PROCEDURE DisposeObject(object: e.APTR);
PROCEDURE SetAttrsA(object: e.APTR; tagList: ARRAY OF u.TagItem): LONGINT;
PROCEDURE SetAttrs(object: e.APTR; tag1..: u.Tag): LONGINT;
PROCEDURE GetAttr(attrID: LONGINT; object: e.APTR; VAR storage: ARRAY OF e.BYTE): LONGINT;
PROCEDURE SetGadgetAttrsA(VAR gadget: Gadget; window: WindowPtr; requester: RequesterPtr; tagList: ARRAY OF u.TagItem): LONGINT;
PROCEDURE SetGadgetAttrs(VAR gadget: Gadget; window: WindowPtr; requester: RequesterPtr; tag1..: u.Tag): LONGINT;
PROCEDURE NextObject(VAR objectPtr: ObjectPtr): e.APTR;
PROCEDURE FindClass(classID: ARRAY OF CHAR): IClassPtr;
PROCEDURE MakeClass(classID: ARRAY OF CHAR; superClassID: ARRAY OF CHAR; superClassPtr: IClassPtr; instanceSize: LONGINT; flags: LONGSET): IClassPtr;
PROCEDURE AddClass(class: IClassPtr);
PROCEDURE GetScreenDrawInfo(screen: ScreenPtr): DrawInfoPtr;
PROCEDURE FreeScreenDrawInfo(screen: ScreenPtr; drawInfo: DrawInfoPtr);
PROCEDURE ResetMenuStrip(window: WindowPtr; VAR menu: Menu): BOOLEAN;
PROCEDURE RemoveClass(classPtr: IClassPtr);
PROCEDURE FreeClass(classPtr: IClassPtr): BOOLEAN;
PROCEDURE lockPubClass();
PROCEDURE unlockPubClass();
PROCEDURE MenuNum(n: INTEGER): INTEGER;
PROCEDURE ItemNum(n: INTEGER): INTEGER;
PROCEDURE SubNum(n: INTEGER): INTEGER;
PROCEDURE ShiftMenu(n: INTEGER): INTEGER;
PROCEDURE ShiftItem(n: INTEGER): INTEGER;
PROCEDURE ShiftSub(n: INTEGER): INTEGER;
PROCEDURE FullMenuNum(menu, item, sub: INTEGER): INTEGER;
PROCEDURE SRBNum(n: e.BYTE): INTEGER;
PROCEDURE SWBNum(n: e.BYTE): INTEGER;
PROCEDURE SSBNum(n: e.BYTE): INTEGER;
PROCEDURE SPARNum(n: e.BYTE): INTEGER;
PROCEDURE SHAKNum(n: e.BYTE): INTEGER;
PROCEDURE CustomHook(VAR g: Gadget): u.HookPtr;
PROCEDURE GadgetBox(VAR g: Gadget): IBoxPtr;
PROCEDURE IMBox(VAR i: Image): IBoxPtr;
PROCEDURE FGPen(VAR i: Image): SHORTINT;
PROCEDURE BGPen(VAR i: Image): SHORTINT;
PROCEDURE BoolToLong(b: BOOLEAN): LONGBOOL;
PROCEDURE UIntToLong(i: INTEGER): LONGINT;
PROCEDURE LongToUInt(l: LONGINT): INTEGER;
PROCEDURE ScreenToRastPort(s: ScreenPtr): g.RastPortPtr;
PROCEDURE ScreenToViewPort(s: ScreenPtr): g.ViewPortPtr;

END Intuition.

