home *** CD-ROM | disk | FTP | other *** search
/ Fish 'n' More 2 / fishmore-publicdomainlibraryvol.ii1991xetec.iso / dirs / oberon_380.lzh / Oberon / Modules / Graphics.mod / Graphics.mod
Text File  |  1990-10-11  |  28KB  |  924 lines

  1. (*-------------------------------------------------------------------------*)
  2. (*                                                                         *)
  3. (*  Amiga Oberon Interface Module: Graphics     Date: 16-Jun-90            *)
  4. (*                                                                         *)
  5. (*   © 1990 by Fridtjof Siebert                                            *)
  6. (*                                                                         *)
  7. (*-------------------------------------------------------------------------*)
  8.  
  9. MODULE Graphics;
  10.  
  11. IMPORT e: Exec,
  12.        h: Hardware,
  13.        s: SYSTEM;
  14.  
  15. TYPE
  16.  AnimCompPtr * = POINTER TO AnimComp;
  17.  AnimObPtr * = POINTER TO AnimOb;
  18.  AreaInfoPtr * = POINTER TO AreaInfo;
  19.  BitMapPtr * = POINTER TO BitMap;
  20.  BobPtr * = POINTER TO Bob;
  21.  ClipRectPtr * = POINTER TO ClipRect;
  22.  CollTablePtr * = POINTER TO CollTable;
  23.  ColorMapPtr * = POINTER TO ColorMap;
  24.  CopinitPtr * = POINTER TO Copinit;
  25.  CopInsPtr * = POINTER TO CopIns;
  26.  CopListPtr * = POINTER TO CopList;
  27.  CprlistPtr * = POINTER TO Cprlist;
  28.  DBufPacketPtr * = POINTER TO DBufPacket;
  29.  GelsInfoPtr * = POINTER TO GelsInfo;
  30.  IsrvstrPtr * = POINTER TO Isrvstr;
  31.  LayerPtr * = POINTER TO Layer;
  32.  LayerInfoPtr * = POINTER TO LayerInfo;
  33.  RasInfoPtr * = POINTER TO RasInfo;
  34.  RastPortPtr * = POINTER TO RastPort;
  35.  RectanglePtr * = POINTER TO Rectangle;
  36.  RegionPtr * = POINTER TO Region;
  37.  RegionRectanglePtr * = POINTER TO RegionRectangle;
  38.  SimpleSpritePtr * = POINTER TO SimpleSprite;
  39.  TextAttrPtr * = POINTER TO TextAttr;
  40.  TextFontPtr * = POINTER TO TextFont;
  41.  TmpRasPtr * = POINTER TO TmpRas;
  42.  UCopListPtr * = POINTER TO UCopList;
  43.  ViewPtr * = POINTER TO View;
  44.  ViewPortPtr * = POINTER TO ViewPort;
  45.  VSpritePtr * = POINTER TO VSprite;
  46.  
  47.  Rectangle * = STRUCT
  48.   minX * : INTEGER;
  49.   minY * : INTEGER;
  50.   maxX * : INTEGER;
  51.   maxY * : INTEGER;
  52.  END;
  53.  Layer * = STRUCT
  54.   front * : LayerPtr;
  55.   back * : LayerPtr;
  56.   clipRect * : ClipRectPtr;
  57.   rp * : RastPortPtr;
  58.   bounds * : Rectangle;
  59.   reserved * : ARRAY 4 OF BYTE;
  60.   priority * : INTEGER;
  61.   flags * : INTEGER;
  62.   superBitMap * : BitMapPtr;
  63.   superClipRect * : ClipRectPtr;
  64.   window * : e.ADDRESS;
  65.   scrollX * : INTEGER;
  66.   scrollY * : INTEGER;
  67.   cr * : ClipRectPtr;
  68.   cr2 * : ClipRectPtr;
  69.   crnew * : ClipRectPtr;
  70.   superSaveClipRects * : ClipRectPtr;
  71.   cliprects * : ClipRectPtr;
  72.   layerInfo * : LayerInfoPtr;
  73.   lock * : e.SignalSemaphore;
  74.   reserved3 * : ARRAY 8 OF BYTE;
  75.   clipRegion * : RegionPtr;
  76.   saveClipRects * : RegionPtr;
  77.   reserved2 * : ARRAY 22 OF BYTE;
  78.   damageList * : RegionPtr;
  79.  END;
  80.  ClipRect * = STRUCT
  81.   next * : ClipRectPtr;
  82.   prev * : ClipRectPtr;
  83.   lobs * : LayerPtr;
  84.   bitMap * : BitMapPtr;
  85.   bounds * : Rectangle;
  86.   p1 * : ClipRectPtr;
  87.   p2 * : ClipRectPtr;
  88.   reserved * : LONGINT;
  89.   flags * : LONGINT;
  90.  END;
  91.  
  92. CONST
  93.  needsNoConcealedRasters * = 01H;
  94.  isLessX * = 1;
  95.  isLessY * = 2;
  96.  isGrtrX * = 4;
  97.  isGrtrY * = 8;
  98.  borderHit * = 0;
  99.  topHit * = 1;
  100.  bottomHit * = 2;
  101.  leftHit * = 4;
  102.  rightHit * = 8;
  103.  
  104. CONST
  105.  move * = 0;
  106.  wait * = 1;
  107.  next * = 2;
  108.  sht * = 14;
  109.  lof * = 15;
  110.  
  111. TYPE
  112.  CopIns * = STRUCT
  113.   opCode * : INTEGER;
  114.   destAddr * : INTEGER;  (* vWaitPos *)
  115.   destData * : INTEGER;  (* hWaitPos *)
  116.  END;
  117.  CopInsCLPtr * = STRUCT  (* für opCode * = next *)
  118.   opCode * : INTEGER;
  119.   nxtlist * : CopListPtr;
  120.  END;
  121.  Cprlist * = STRUCT
  122.   next * : CprlistPtr;
  123.   start * : e.ADDRESS;
  124.   maxCount * : INTEGER;
  125.  END;
  126.  CopList * = STRUCT
  127.   next * : CopListPtr;
  128.   copList * : CopListPtr;
  129.   viewPort * : ViewPortPtr;
  130.   copIns * : CopInsPtr;
  131.   copPtr * : CopInsPtr;
  132.   copLStart * : e.ADDRESS;
  133.   copSStart * : e.ADDRESS;
  134.   count * : INTEGER;
  135.   maxCount * : INTEGER;
  136.   dyOffset * : INTEGER;
  137.  END;
  138.  UCopList * = STRUCT
  139.   next * : UCopListPtr;
  140.   firstCopList * : CopListPtr;
  141.   copList * : CopListPtr;
  142.  END;
  143.  Copinit * = STRUCT
  144.   diagstrt * : ARRAY 4 OF INTEGER;
  145.   sprstrtup * : ARRAY (2*8*2)+2+(2*2)+2 OF INTEGER;
  146.   sprstop * : ARRAY 2 OF INTEGER;
  147.  END;
  148.  
  149. CONST
  150.  interlace * = 04H;
  151.  pf2pri * = 40H;
  152.  colorOn * = 200H;
  153.  dblpf * = 400H;
  154.  holdnmodify * = 800H;
  155.  m640 * = 08000H;
  156.  plnCntMsk * = 07H;
  157.  plnCntShft * = 12;
  158.  
  159.  fineScroll * = 0FH;
  160.  fineScrollShift * = 04H;
  161.  fineScrollMask * = 0FH;
  162.  vrtclPos * = 01FFH;
  163.  vrtclPosShift * = 07H;
  164.  horizPos * = 07FH;
  165.  dftchMask * = 0FFH;
  166.  vposrlof * = 08000H;
  167.  
  168.  ringtrigger * = 01H;
  169.  anfracsize * = 06H;
  170.  animhalf * = 020H;
  171.  
  172.  b2Norm * = 0;
  173.  b2Swap * = 1;
  174.  b2Bobber * = 2;
  175.  
  176. CONST
  177. (* VSpriteFlags *)
  178.   vsprite    * =  0;
  179.   saveBack   * =  1;
  180.   overlay    * =  2;
  181.   mustDraw   * =  3;
  182.   backSaved  * =  8;
  183.   bobUpdate  * =  9;
  184.   gelGone    * = 10;
  185.   vsOverflow * = 11;
  186.  
  187. TYPE
  188.  VSprite * = STRUCT
  189.   nextVSprite * : VSpritePtr;
  190.   prevVSprite * : VSpritePtr;
  191.   drawPath * : VSpritePtr;
  192.   clearPath * : VSpritePtr;
  193.   oldY * : INTEGER;
  194.   oldX * : INTEGER;
  195.   flags * : SET; (* VSpriteFlags *)
  196.   y * : INTEGER;
  197.   x * : INTEGER;
  198.   height * : INTEGER;
  199.   width * : INTEGER;
  200.   depth * : INTEGER;
  201.   meMask * : SET;
  202.   hitMask * : SET;
  203.   imageData * : e.ADDRESS;
  204.   borderLine * : e.ADDRESS;
  205.   collMask * : e.ADDRESS;
  206.   sprColors * : e.ADDRESS;
  207.   vsBob * : BobPtr;
  208.   planePick * : SHORTSET;
  209.   planeOnOff * : SHORTSET;
  210.  END;
  211.  
  212. CONST
  213. (* BobFlag *)
  214.   saveBob      * =  0;
  215.   bobIsComp    * =  1;
  216.   bWaiting     * =  8;
  217.   bDrawn       * =  9;
  218.   bobsAway     * = 10;
  219.   bobNix       * = 11;
  220.   savePreserve * = 12;
  221.   outStep      * = 13;
  222.  
  223. TYPE
  224.  Bob * = STRUCT
  225.   flags * : SET; (* BobFlags *)
  226.   saveBuffer * : e.ADDRESS;
  227.   imageShadow * : e.ADDRESS;
  228.   before * : BobPtr;
  229.   after * : BobPtr;
  230.   bobVSprite * : VSpritePtr;
  231.   bobComp * : AnimCompPtr;
  232.   dBuffer * : DBufPacketPtr;
  233.  END;
  234.  AnimComp * = STRUCT
  235.   flags * : INTEGER;
  236.   timer * : INTEGER;
  237.   timeSet * : INTEGER;
  238.   nextComp * : AnimCompPtr;
  239.   prevComp * : AnimCompPtr;
  240.   nextSeq * : AnimCompPtr;
  241.   prevSeq * : AnimCompPtr;
  242.   animCRoutine * : e.ADDRESS;
  243.   yTrans * : INTEGER;
  244.   xTrans * : INTEGER;
  245.   headOb * : AnimObPtr;
  246.   animBob * : BobPtr;
  247.  END;
  248.  AnimOb * = STRUCT
  249.   nextOb * : AnimObPtr;
  250.   prevOb * : AnimObPtr;
  251.   clock * : LONGINT;
  252.   anOldY * : INTEGER;
  253.   anOldX * : INTEGER;
  254.   anY * : INTEGER;
  255.   anX * : INTEGER;
  256.   yVel * : INTEGER;
  257.   xVel * : INTEGER;
  258.   yAccel * : INTEGER;
  259.   xAccel * : INTEGER;
  260.   ringYTrans * : INTEGER;
  261.   ringXTrans * : INTEGER;
  262.   animORoutine * : e.ADDRESS;
  263.   headComp * : AnimCompPtr;
  264.  END;
  265.  DBufPacket * = STRUCT
  266.   bufY * : INTEGER;
  267.   bufX * : INTEGER;
  268.   bufPath * : VSpritePtr;
  269.   bufBuffer * : e.ADDRESS;
  270.  END;
  271.  CollTable * = STRUCT
  272.   collPtrs * : ARRAY 16 OF e.ADDRESS
  273.  END;
  274.  BitMap * = STRUCT
  275.   bytesPerRow * : INTEGER;
  276.   rows * : INTEGER;
  277.   flags * : BYTE;
  278.   depth * : BYTE;
  279.   pad * : INTEGER;
  280.   planes * : ARRAY 8 OF e.ADDRESS;
  281.  END;
  282.  
  283. CONST
  284. (* DisplayFlags *)
  285.  ntsc   * = 0;
  286.  genloc * = 1;
  287.  pal    * = 2;
  288.  
  289. TYPE
  290.  GfxBase * = STRUCT
  291.   libNode * : e.Library;
  292.   actiView * : ViewPtr;
  293.   copinit * : CopinitPtr;
  294.   cia * : e.ADDRESS;
  295.   blitter * : e.ADDRESS;
  296.   loFlist * : e.ADDRESS;
  297.   shFlist * : e.ADDRESS;
  298.   blthd * : h.BltnodePtr;
  299.   blttl * : h.BltnodePtr;
  300.   bsblthd * : h.BltnodePtr;
  301.   bsblttl * : h.BltnodePtr;
  302.   vbsrv * : e.Interrupt;
  303.   timsrv * : e.Interrupt;
  304.   bltsrv * : e.Interrupt;
  305.   textFonts * : e.List;
  306.   defaultFont * : TextFontPtr;
  307.   modes * : SET;
  308.   vBlank * : BYTE;
  309.   debug * : BYTE;
  310.   beamSync * : INTEGER;
  311.   bplcon0 * : SET;
  312.   spriteReserved * : BYTE;
  313.   bytereserved * : BYTE;
  314.   flags * : SET;
  315.   blitLock * : INTEGER;
  316.   blitNest * : INTEGER;
  317.   blitWaitQ * : e.List;
  318.   blitOwner * : e.TaskPtr;
  319.   waitQ * : e.List;
  320.   displayFlags * : SHORTSET; (* DisplayFlags *)
  321.   simpleSprites * : e.ADDRESS;
  322.   maxDisplayRow * : INTEGER;
  323.   maxDisplayColumn * : INTEGER;
  324.   normalDisplayRows * : INTEGER;
  325.   normalDisplayColumns * : INTEGER;
  326.   normalDPMX * : INTEGER;
  327.   normalDPMY * : INTEGER;
  328.   lastChanceMemory * : e.SignalSemaphorePtr;
  329.   lcMptr * : e.ADDRESS;
  330.   microsPerLine * : INTEGER;
  331.   minDisplayColumn * : INTEGER;
  332.   reserved * : ARRAY 23 OF LONGINT;
  333.  END;
  334.  GfxBasePtr * = POINTER TO GfxBase;
  335.  
  336. CONST
  337.  blitMsgFault * = 4;
  338.  
  339. TYPE
  340.  Isrvstr * = STRUCT
  341.   node * : e.Node;
  342.   iptr * : IsrvstrPtr;
  343.   code * : e.ADDRESS;
  344.   ccode * : e.ADDRESS;
  345.   carg * : LONGINT;
  346.  END;
  347.  
  348. CONST
  349. (* LayerFlags *)
  350.  layerSimple        * =  0;
  351.  layerSmart         * =  1;
  352.  layerSuper         * =  2;
  353.  layerUpdating      * =  4;
  354.  layerBackdrop      * =  6;
  355.  layerRefresh       * =  7;
  356.  layerClipRectsLost * =  8;
  357.  
  358. TYPE
  359.  LayerInfo * = STRUCT
  360.   layer * : LayerPtr;
  361.   lp * : LayerPtr;
  362.   obs * : LayerPtr;
  363.   freeClipRects * : e.MinList;
  364.   lock * : e.SignalSemaphore;
  365.   head * : e.List;
  366.   longreserved * : LONGINT;
  367.   flags * : SET; (* LayerFlags *)
  368.   count * : SHORTINT;
  369.   lockLayersCount * : SHORTINT;
  370.   layerInfoExtraSize * : INTEGER;
  371.   blitbuff * : e.ADDRESS;
  372.   layerInfoExtra * : e.ADDRESS;
  373.  END;
  374.  
  375. CONST
  376.  lmnRegion * = -1;
  377.  newLayerInfoCalled * = 01H;
  378.  alertLayersNoMem * =  MIN(LONGINT) + 3010000H; (* 083010000H *)
  379.  
  380. TYPE
  381.  AreaInfo * = STRUCT
  382.   vctrTbl * : e.ADDRESS;
  383.   vctrPtr * : e.ADDRESS;
  384.   flagTbl * : e.ADDRESS;
  385.   flagPtr * : e.ADDRESS;
  386.   count * : INTEGER;
  387.   maxCount * : INTEGER;
  388.   firstX * : INTEGER;
  389.   firstY * : INTEGER;
  390.  END;
  391.  TmpRas * = STRUCT
  392.   rasPtr * : e.ADDRESS;
  393.   size * : LONGINT;
  394.  END;
  395.  GelsInfo * = STRUCT
  396.   sprRsrvd * : SHORTINT;
  397.   flags * : BYTE;
  398.   gelHead * : VSpritePtr;
  399.   gelTail * : VSpritePtr;
  400.   nextLine * : e.ADDRESS;
  401.   lastColor * : e.ADDRESS;
  402.   collHandler * : CollTablePtr;
  403.   leftmost * : INTEGER;
  404.   rightmost * : INTEGER;
  405.   topmost * : INTEGER;
  406.   bottommost * : INTEGER;
  407.   firstBlissObj * : e.ADDRESS;
  408.   lastBlissObj * : e.ADDRESS;
  409.  END;
  410.  
  411. CONST
  412. (* DrawModes *)
  413.  complement * = 1;
  414.  inversvid  * = 2;
  415.  jam1 * = SHORTSET{};
  416.  jam2 * = SHORTSET{0};
  417.  
  418. (* FontStyles *)
  419.  underlined  * = 0;
  420.  bold        * = 1;
  421.  italic      * = 2;
  422.  extended    * = 3;
  423.  normalFont * = SHORTSET{};
  424.  
  425. (* FontFlags *)
  426.  romFont      * =  0;
  427.  diskFont     * =  1;
  428.  revPath      * =  2;
  429.  tallDot      * =  3;
  430.  wideDot      * =  4;
  431.  proportional * =  5;
  432.  designed     * =  6;
  433.  removed      * =  7;
  434.  
  435. (* RastPortFlags *)
  436.  firstDot    * = 0;
  437.  oneDot      * = 1;
  438.  dBuffer     * = 2;
  439.  areaOutline * = 3;
  440.  noCrossFill * = 5;
  441.  
  442.  spriteAttached * = 080H;
  443.  
  444. TYPE
  445.  Point * = STRUCT
  446.   x * ,y * : INTEGER;
  447.  END;
  448.  RastPort * = STRUCT
  449.   layer * : LayerPtr;
  450.   bitMap * : BitMapPtr;
  451.   areaPtrn * : e.ADDRESS;
  452.   tmpRas * : TmpRasPtr;
  453.   areaInfo * : AreaInfoPtr;
  454.   gelsInfo * : GelsInfoPtr;
  455.   mask * : SHORTSET;
  456.   fgPen * : BYTE;
  457.   bgPen * : BYTE;
  458.   aOlPen * : BYTE;
  459.   drawMode * : SHORTSET; (* DrawModes *)
  460.   areaPtSz * : BYTE;
  461.   linPatCnt * : BYTE;
  462.   dummy * : BYTE;
  463.   flags * : SET; (* RastPortFlags *)
  464.   linePtrn * : INTEGER;
  465.   x * : INTEGER;
  466.   y * : INTEGER;
  467.   minterms * : ARRAY 8 OF BYTE;
  468.   penWidth * : INTEGER;
  469.   penHeight * : INTEGER;
  470.   font * : TextFontPtr;
  471.   algoStyle * : SHORTSET; (* FontStyles *)
  472.   txFlags * : SHORTSET; (* FontFlags *)
  473.   txHeight * : INTEGER;
  474.   txWidth * : INTEGER;
  475.   txBaseline * : INTEGER;
  476.   txSpacing * : INTEGER;
  477.   user * : e.ADDRESS;
  478.   longreserved * : ARRAY 2 OF LONGINT;
  479.   wordreserved * : ARRAY 7 OF INTEGER;
  480.   reserved * : ARRAY 8 OF BYTE;
  481.  END;
  482.  
  483. TYPE
  484.  RegionRectangle * = STRUCT
  485.   next * : RegionRectanglePtr;
  486.   prev * : RegionRectanglePtr;
  487.   bounds * : Rectangle;
  488.  END;
  489.  Region * = STRUCT
  490.   bounds * : Rectangle;
  491.   regionRectangle * : RegionRectanglePtr;
  492.  END;
  493.  SimpleSprite * = STRUCT
  494.   posctldata * : e.ADDRESS;
  495.   height * : INTEGER;
  496.   x * : INTEGER;
  497.   y * : INTEGER;
  498.   num * : INTEGER;
  499.  END;
  500.  TextAttr * = STRUCT
  501.   name * : e.ADDRESS;
  502.   ySize * : INTEGER;
  503.   style * : SHORTSET; (* FontStyleSet *)
  504.   flags * : SHORTSET; (* FontFlags *)
  505.  END;
  506.  TextFont * = STRUCT
  507.   message * : e.Message;
  508.   ySize * : INTEGER;
  509.   style * : SHORTSET; (* FontStyles *)
  510.   flags * : SHORTSET; (* FontFlags *)
  511.   xSize * : INTEGER;
  512.   baseline * : INTEGER;
  513.   boldSmear * : INTEGER;
  514.   accessors * : INTEGER;
  515.   loChar * : CHAR;
  516.   hiChar * : CHAR;
  517.   charData * : e.ADDRESS;
  518.   modulo * : INTEGER;
  519.   charLoc * : e.ADDRESS;
  520.   charSpace * : e.ADDRESS;
  521.   charKern * : e.ADDRESS;
  522.  END;
  523.  ColorMap * = STRUCT
  524.   flags * : BYTE;
  525.   type * : BYTE ;
  526.   count * : INTEGER;
  527.   colorTable * : e.ADDRESS;
  528.  END;
  529.  
  530. CONST
  531. (* ViewModes *)
  532.  genlocVideo    * =  1;
  533.  lace           * =  2;
  534.  pfba           * =  6;
  535.  extraHalfbrite * =  7;
  536.  genlocAudio    * =  8;
  537.  dualpf         * = 10;
  538.  ham            * = 11;
  539.  vpHide         * = 13;
  540.  sprites        * = 14;
  541.  hires          * = 15;
  542.  
  543. TYPE
  544.  ViewPort * = STRUCT
  545.   next * : ViewPortPtr;
  546.   colorMap * : ColorMapPtr;
  547.   dspIns * : CopListPtr;
  548.   sprIns * : CopListPtr;
  549.   clrIns * : CopListPtr;
  550.   uCopIns * : UCopListPtr;
  551.   dWidth * : INTEGER;
  552.   dHeight * : INTEGER;
  553.   dxOffset * : INTEGER;
  554.   dyOffset * : INTEGER;
  555.   modes * : SET; (* ViewModes *)
  556.   spritePriorities * : BYTE;
  557.   reserved * : BYTE;
  558.   rasInfo * : RasInfoPtr;
  559.  END;
  560.  View * = STRUCT
  561.   viewPort * : ViewPortPtr;
  562.   lofCprList * : CprlistPtr;
  563.   shfCprList * : CprlistPtr;
  564.   dyOffset * : INTEGER;
  565.   dxOffset * : INTEGER;
  566.   modes * : SET; (* ViewModes *)
  567.  END;
  568.  RasInfo * = STRUCT
  569.   next * : RasInfoPtr;
  570.   bitMap * : BitMapPtr;
  571.   rxOffset * : INTEGER;
  572.   ryOffset * : INTEGER;
  573.  END;
  574.  
  575.  PROC * = PROCEDURE();
  576.  
  577. VAR
  578.   gfx * :  GfxBasePtr;
  579.  
  580. (*-------------------------------------------------------------------------*)
  581.  
  582.  
  583. (* $OvflChk- $RangeChk- $StackChk- $NilChk- $ReturnChk- $CaseChk- *)
  584.  
  585.  
  586. (*------  graphics.library:  ------*)
  587.  
  588.  
  589. PROCEDURE AddAnimOb*{gfx,-156}(    anOb{8}:AnimObPtr;
  590.                                VAR anKey{9}:AnimObPtr;
  591.                                    rp{10}:RastPortPtr);
  592. PROCEDURE AddBob*{gfx,- 96}(Bob{8}:BobPtr;
  593.                             rp{9}:RastPortPtr);
  594. PROCEDURE AddFont*{gfx,-480}(textFont{9}:TextFontPtr);
  595. PROCEDURE AddVSprite*{gfx,-102}(vs{8}:VSpritePtr;
  596.                                 rp{9}:RastPortPtr);
  597. PROCEDURE AllocRaster*{gfx,-492}(width{0}:INTEGER;
  598.                                  height{1}:INTEGER):e.ADDRESS;
  599. PROCEDURE AndRectRegion*{gfx,-504}(region{8}:RegionPtr;
  600.                                    rectang{9}:RectanglePtr);
  601. PROCEDURE AndRegionRegion*{gfx,-624}(region1{8}:RegionPtr;
  602.                                      region2{9}:RegionPtr):BOOLEAN;
  603. PROCEDURE Animate*{gfx,-162}(VAR anKey{8}:AnimObPtr; rp{9}:RastPortPtr);
  604. PROCEDURE AreaDraw*{gfx,-258}(rp{9}:RastPortPtr;
  605.                               x{0}:INTEGER;
  606.                               y{1}:INTEGER):BOOLEAN;
  607. PROCEDURE AreaEllipse*{gfx,-186}(rp{9}:RastPortPtr;
  608.                                  cX{0}:INTEGER;
  609.                                  cY{1}:INTEGER;
  610.                                  a{2}:INTEGER;
  611.                                  b{3}:INTEGER):BOOLEAN;
  612. PROCEDURE AreaEnd*{gfx,-264}(rp{9}:RastPortPtr):BOOLEAN;
  613. PROCEDURE AreaMove*{gfx,-252}(rp{9}:RastPortPtr;
  614.                               x{0}:INTEGER;
  615.                               y{1}:INTEGER):BOOLEAN;
  616. PROCEDURE AskFont*{gfx,-474}(rp{9}:RastPortPtr;
  617.                              textAttr{8}:TextAttrPtr);
  618. PROCEDURE AskSoftStyle*{gfx,- 84}(rp{9}:RastPortPtr):SHORTSET; (* FontStyleSet *)
  619. PROCEDURE AttemptLockLayerRom*{gfx,-654}(layer{13}:LayerPtr):BOOLEAN;
  620. PROCEDURE BltBitMap*{gfx,- 30}(srcBitMap{8}:BitMapPtr;
  621.                                srcX{0}:INTEGER;
  622.                                srcY{1}:INTEGER;
  623.                                dstBitMap{9}:BitMapPtr;
  624.                                dstX{2}:INTEGER;
  625.                                dstY{3}:INTEGER;
  626.                                sizeX{4}:INTEGER;
  627.                                sizeY{5}:INTEGER;
  628.                                minterm{6}:BYTE;
  629.                                mask{7}:SHORTSET;
  630.                                tempA{10}:e.ADDRESS):LONGINT;
  631. PROCEDURE BltBitMapRastPort*{gfx,-606}(srcbm{8}:BitMapPtr;
  632.                                        srcX{0}:INTEGER;
  633.                                        srcY{1}:INTEGER;
  634.                                        destRp{9}:RastPortPtr;
  635.                                        destX{2}:INTEGER;
  636.                                        destY{3}:INTEGER;
  637.                                        sizeX{4}:INTEGER;
  638.                                        sizeY{5}:INTEGER;
  639.                                        minterm{6}:BYTE);
  640. PROCEDURE BltClear*{gfx,-300}(memBlock{9}:e.ADDRESS;
  641.                               bytecount{0}:LONGINT;
  642.                               flags{1}:LONGSET);
  643. PROCEDURE BltMaskBitMapRastPort*{gfx,-636}(srcbm{8}:BitMapPtr;
  644.                                            srcX{0}:INTEGER;
  645.                                            srcY{1}:INTEGER;
  646.                                            destRp{9}:RastPortPtr;
  647.                                            destX{2}:INTEGER;
  648.                                            destY{3}:INTEGER;
  649.                                            sizeX{4}:INTEGER;
  650.                                            sizeY{5}:INTEGER;
  651.                                            minterm{6}:BYTE;
  652.                                            bltmask{10}:e.ADDRESS);
  653. PROCEDURE BltPattern*{gfx,-312}(rp{9}:RastPortPtr;
  654.                                 mask{8}:e.ADDRESS;
  655.                                 xl{0}:INTEGER;
  656.                                 yl{1}:INTEGER;
  657.                                 maxX{2}:INTEGER;
  658.                                 maxY{3}:INTEGER;
  659.                                 bytecnt{4}:INTEGER);
  660. PROCEDURE BltTemplate*{gfx,- 36}(srcTemplate{8}:e.ADDRESS;
  661.                                  srcX{0}:INTEGER;
  662.                                  srcMod{1}:INTEGER;
  663.                                  rp{9}:RastPortPtr;
  664.                                  dstX{2}:INTEGER;
  665.                                  dstY{3}:INTEGER;
  666.                                  sizeX{4}:INTEGER;
  667.                                  sizeY{5}:INTEGER);
  668. PROCEDURE CBump*{gfx,-366}(c{9}:UCopListPtr);
  669. PROCEDURE ChangeSprite*{gfx,-420}(vp{8}:ViewPortPtr;
  670.                                   s{9}:SimpleSpritePtr;
  671.                                   newdata{10}:e.ADDRESS);
  672. PROCEDURE ClearEOL*{gfx,- 42}(rp{9}:RastPortPtr);
  673. PROCEDURE ClearRectRegion*{gfx,-522}(region{8}:RegionPtr;
  674.                                      rectangle{9}:RectanglePtr):BOOLEAN;
  675. PROCEDURE ClearRegion*{gfx,-528}(region{8}:RegionPtr);
  676. PROCEDURE ClearScreen*{gfx,- 48}(rp{9}:RastPortPtr);
  677. PROCEDURE ClipBlit*{gfx,-552}(src{8}:RastPortPtr;
  678.                               srcX{0}:INTEGER;
  679.                               srcY{1}:INTEGER;
  680.                               dest{9}:RastPortPtr;
  681.                               destX{2}:INTEGER;
  682.                               destY{3}:INTEGER;
  683.                               xSize{4}:INTEGER;
  684.                               ySize{5}:INTEGER;
  685.                               minterm{6}:BYTE);
  686. PROCEDURE CloseFont*{gfx,- 78}(font{9}:TextFontPtr);
  687. PROCEDURE CMove*{gfx,-372}(c{9}:UCopListPtr;
  688.                            a{0}:e.ADDRESS;
  689.                            v{1}:INTEGER);
  690. PROCEDURE CopySBitMap*{gfx,-450}(layer{8}:LayerPtr);
  691. PROCEDURE CWait*{gfx,-378}(c{9}:UCopListPtr;
  692.                            v{0}:INTEGER;
  693.                            h{1}:INTEGER);
  694. PROCEDURE DisownBlitter*{gfx,-462}();
  695. PROCEDURE DisposeRegion*{gfx,-534}(region{8}:RegionPtr);
  696. PROCEDURE DoCollision*{gfx,-108}(rp{9}:RastPortPtr);
  697. PROCEDURE Draw*{gfx,-246}(rp{9}:RastPortPtr;
  698.                           x{0}:INTEGER;
  699.                           y{1}:INTEGER);
  700. PROCEDURE DrawEllipse*{gfx,-180}(rp{9}:RastPortPtr;
  701.                                 cX{0}:INTEGER;
  702.                                 cY{1}:INTEGER;
  703.                                 a{2}:INTEGER;
  704.                                 b{3}:INTEGER);
  705. PROCEDURE DrawGList*{gfx,-114}(rp{9}:RastPortPtr;
  706.                                vp{8}:ViewPortPtr);
  707. PROCEDURE Flood*{gfx,-330}(rp{9}:RastPortPtr;
  708.                            mode{2}:LONGINT;
  709.                            x{0}:INTEGER;
  710.                            y{1}:INTEGER):BOOLEAN;
  711. PROCEDURE FreeColorMap*{gfx,-576}(colorMap{8}:ColorMapPtr);
  712. PROCEDURE FreeCopList*{gfx,-546}(coplist{8}:CopListPtr);
  713. PROCEDURE FreeCprList*{gfx,-564}(cprlist{8}:CprlistPtr);
  714. PROCEDURE FreeGBuffers*{gfx,-600}(anOb{8}:AnimObPtr;
  715.                                   rp{9}:RastPortPtr;
  716.                                   db{0}:BOOLEAN);
  717. PROCEDURE FreeRaster*{gfx,-498}(p{8}:e.ADDRESS;
  718.                                 width{0}:INTEGER;
  719.                                 height{1}:INTEGER);
  720. PROCEDURE FreeSprite*{gfx,-414}(pick{0}:INTEGER);
  721. PROCEDURE FreeVPortCopLists*{gfx,-540}(vp{8}:ViewPortPtr);
  722. PROCEDURE GetColorMap*{gfx,-570}(entries{0}:LONGINT):ColorMapPtr;
  723. PROCEDURE GetGBuffers*{gfx,-168}(anOb{8}:AnimObPtr;
  724.                                  rp{9}:RastPortPtr;
  725.                                  db{0}:BOOLEAN):BOOLEAN;
  726. PROCEDURE GetRGB4*{gfx,-582}(colorMap{8}:ColorMapPtr;
  727.                              entry{0}:LONGINT):LONGINT;
  728. PROCEDURE GetSprite*{gfx,-408}(sprite{8}:SimpleSpritePtr;
  729.                                pick{0}:INTEGER):INTEGER;
  730. PROCEDURE GraphicsReserved1*{gfx,-642}():LONGINT;
  731. PROCEDURE GraphicsReserved2*{gfx,-648}():LONGINT;
  732. PROCEDURE InitArea*{gfx,-282}(VAR areainfo{8}:AreaInfo;
  733.                                   buffer{9}:e.ADDRESS;
  734.                                   maxvectors{0}:INTEGER);
  735. PROCEDURE InitBitMap*{gfx,-390}(VAR bm{8}:BitMap;
  736.                                     depth{0}:INTEGER;
  737.                                     width{1}:INTEGER;
  738.                                     height{2}:INTEGER);
  739. PROCEDURE InitGels*{gfx,-120}(head{8}:VSpritePtr;
  740.                               tail{9}:VSpritePtr;
  741.                               gInfo{10}:GelsInfoPtr);
  742. PROCEDURE InitGMasks*{gfx,-174}(anOb{8}:AnimObPtr);
  743. PROCEDURE InitMasks*{gfx,-126}(vs{8}:VSpritePtr);
  744. PROCEDURE InitRastPort*{gfx,-198}(VAR rp{9}:RastPort);
  745. PROCEDURE InitTmpRas*{gfx,-468}(VAR tmpras{8}:TmpRas;
  746.                                     buffer{9}:e.ADDRESS;
  747.                                     size{0}:LONGINT);
  748. PROCEDURE InitView*{gfx,-360}(VAR view{9}:View);
  749. PROCEDURE InitVPort*{gfx,-204}(VAR vp{8}:ViewPort);
  750. PROCEDURE LoadRGB4*{gfx,-192}(vp{8}:ViewPortPtr;
  751.                               colors{9}:ARRAY OF INTEGER;
  752.                               count{0}:INTEGER);
  753. PROCEDURE LoadView*{gfx,-222}(view{9}:ViewPtr);
  754. PROCEDURE LockLayerRom*{gfx,-432}(layer{13}:LayerPtr);
  755. PROCEDURE MakeVPort*{gfx,-216}(view{8}:ViewPtr;
  756.                                viewport{9}:ViewPortPtr);
  757. PROCEDURE Move*{gfx,-240}(rp{9}:RastPortPtr;
  758.                           x{0}:INTEGER;
  759.                           y{1}:INTEGER);
  760. PROCEDURE MoveSprite*{gfx,-426}(vp{8}:ViewPortPtr;
  761.                                 sprite{9}:SimpleSpritePtr;
  762.                                 x{0}:INTEGER;
  763.                                 y{1}:INTEGER);
  764. PROCEDURE MrgCop*{gfx,-210}(view{9}:ViewPtr);
  765. PROCEDURE NewRegion*{gfx,-516}():RegionPtr;
  766. PROCEDURE OpenFont*{gfx,- 72}(textAttr{8}:TextAttrPtr):TextFontPtr;
  767. PROCEDURE OrRectRegion*{gfx,-510}(region{8}:RegionPtr;
  768.                                   rectangle{9}:RectanglePtr):BOOLEAN;
  769. PROCEDURE OrRegionRegion*{gfx,-612}(region1{8}:RegionPtr;
  770.                                     region2{9}:RegionPtr):BOOLEAN;
  771. PROCEDURE OwnBlitter*{gfx,-456}();
  772. PROCEDURE PolyDraw*{gfx,-336}(rp{9}:RastPortPtr;
  773.                               count{0}:INTEGER;
  774.                               array{8}:ARRAY OF Point);
  775. PROCEDURE QBlit*{gfx,-276}(bp{9}:h.BltnodePtr);
  776. PROCEDURE QBSBlit*{gfx,-294}(bsp{9}:h.BltnodePtr);
  777. PROCEDURE ReadPixel*{gfx,-318}(rp{9}:RastPortPtr;
  778.                                x{0}:INTEGER;
  779.                                y{1}:INTEGER):LONGINT;
  780. PROCEDURE RectFill*{gfx,-306}(rp{9}:RastPortPtr;
  781.                               xMin{0}:INTEGER;
  782.                               yMin{1}:INTEGER;
  783.                               xMax{2}:INTEGER;
  784.                               yMax{3}:INTEGER);
  785. PROCEDURE RemFont*{gfx,-486}(textFont{9}:TextFontPtr);
  786. PROCEDURE RemIBob*{gfx,-132}(bob{8}:BobPtr;
  787.                              rp{9}:RastPortPtr;
  788.                              vp{10}:ViewPortPtr);
  789. PROCEDURE RemVSprite*{gfx,-138}(vs{8}:VSpritePtr);
  790. PROCEDURE ScrollRaster*{gfx,-396}(rp{9}:RastPortPtr;
  791.                                   dx{0}:INTEGER;
  792.                                   dy{1}:INTEGER;
  793.                                   xMin{2}:INTEGER;
  794.                                   yMin{3}:INTEGER;
  795.                                   xMax{4}:INTEGER;
  796.                                   yMax{5}:INTEGER);
  797. PROCEDURE ScrollVPort*{gfx,-588}(vp{8}:ViewPortPtr);
  798. PROCEDURE SetAPen*{gfx,-342}(rp{9}:RastPortPtr;
  799.                              pen{0}:INTEGER);
  800. PROCEDURE SetBPen*{gfx,-348}(rp{9}:RastPortPtr;
  801.                              pen{0}:INTEGER);
  802. PROCEDURE SetCollision*{gfx,-144}(num{0}:LONGINT;
  803.                                   routine{8}:PROC;
  804.                                   gInfo{9}:GelsInfoPtr);
  805. PROCEDURE SetDrMd*{gfx,-354}(rp{9}:RastPortPtr;
  806.                              mode{0}:SHORTSET (* DrawModes *));
  807. PROCEDURE SetFont*{gfx,- 66}(rp{9}:RastPortPtr;
  808.                              font{8}:TextFontPtr);
  809. PROCEDURE SetRast*{gfx,-234}(rp{9}:RastPortPtr;
  810.                              pen{0}:INTEGER);
  811. PROCEDURE SetRGB4*{gfx,-288}(vp{8}:ViewPortPtr;
  812.                              n{0}:INTEGER;
  813.                              r{1}:INTEGER;
  814.                              g{2}:INTEGER;
  815.                              b{3}:INTEGER);
  816. PROCEDURE SetRGB4CM*{gfx,-630}(cm{8}:ColorMapPtr;
  817.                                n{0}:INTEGER;
  818.                                r{1}:INTEGER;
  819.                                g{2}:INTEGER;
  820.                                b{3}:INTEGER);
  821. PROCEDURE SetSoftStyle*{gfx,- 90}(
  822.             rp{9}:RastPortPtr;
  823.             style{0}:SHORTSET; (* FontStyles *)
  824.             enable{1}:SHORTSET (* FontStyles *)):SHORTSET; (* FontStyles *)
  825. PROCEDURE SortGList*{gfx,-150}(rp{9}:RastPortPtr);
  826. PROCEDURE SyncSBitMap*{gfx,-444}(layer{8}:LayerPtr);
  827. PROCEDURE Text*{gfx,- 60}(rp{9}:RastPortPtr;
  828.                           string{8}:ARRAY OF CHAR;
  829.                           count{0}:LONGINT);
  830. PROCEDURE TextLength*{gfx,- 54}(rp{9}:RastPortPtr;
  831.                                 string{8}:ARRAY OF CHAR;
  832.                                 count{0}:LONGINT):INTEGER;
  833. PROCEDURE UCopperListInit*{gfx,-594}(copperList{8}:UCopListPtr;
  834.                                      num{0}:LONGINT):UCopListPtr;
  835. PROCEDURE UnlockLayerRom*{gfx,-438}(layer{13}:LayerPtr);
  836. PROCEDURE VBeamPos*{gfx,-384}():LONGINT;
  837. PROCEDURE WaitBlit*{gfx,-228}();
  838. PROCEDURE WaitBOVP*{gfx,-402}(vp{8}:ViewPortPtr);
  839. PROCEDURE WaitTOF*{gfx,-270}();
  840. PROCEDURE WritePixel*{gfx,-324}(rp{9}:RastPortPtr;
  841.                       x{0}:INTEGER;
  842.                       y{1}:INTEGER):BOOLEAN;
  843. PROCEDURE XorRectRegion*{gfx,-558}(region{8}:RegionPtr;
  844.                                    rectangle{9}:RectanglePtr):BOOLEAN;
  845. PROCEDURE XorRegionRegion*{gfx,-618}(region1{8}:RegionPtr;
  846.                                      region2{9}:RegionPtr):BOOLEAN;
  847.  
  848.  
  849. (*-------------------------------------------------------------------------*)
  850.  
  851.  
  852. (*------  GfxMacros:  ------*)
  853.  
  854.  
  855. PROCEDURE OnDisplay*;
  856. BEGIN h.custom.dmacon := h.bitSet + {h.raster} END OnDisplay;
  857.  
  858. PROCEDURE OffDisplay*;
  859. BEGIN h.custom.dmacon := h.bitClr + {h.raster} END OffDisplay;
  860.  
  861. PROCEDURE OnSprite*;
  862. BEGIN h.custom.dmacon := h.bitSet + {h.sprite} END OnSprite;
  863.  
  864. PROCEDURE OffSprite*;
  865. BEGIN h.custom.dmacon := h.bitClr + {h.sprite} END OffSprite;
  866.  
  867. PROCEDURE OnVBlank*;
  868. BEGIN h.custom.intena := h.bitSet + {e.vertb} END OnVBlank;
  869.  
  870. PROCEDURE OffVBlank*;
  871. BEGIN h.custom.intena := h.bitClr + {e.vertb} END OffVBlank;
  872.  
  873. PROCEDURE SetOPen*(w: RastPortPtr; c: BYTE);
  874. BEGIN
  875.   w.aOlPen := c;
  876.   INCL(w.flags,areaOutline);
  877. END SetOPen;
  878.  
  879. PROCEDURE SetDrPt*(w: RastPortPtr; p: INTEGER);
  880. BEGIN
  881.   w.linePtrn := p;
  882.   INCL(w.flags,firstDot);
  883. END SetDrPt;
  884.  
  885. PROCEDURE SetWrMsk*(w: RastPortPtr; m: SHORTSET);
  886. BEGIN w.mask := m END SetWrMsk;
  887.  
  888. PROCEDURE SetAfPt*(w: RastPortPtr; p: e.ADDRESS; n: BYTE);
  889. BEGIN
  890.   w.areaPtrn := p;
  891.   w.areaPtSz := n;
  892. END SetAfPt;
  893.  
  894. PROCEDURE BndryOff*(w: RastPortPtr);
  895. BEGIN EXCL(w.flags,areaOutline) END BndryOff;
  896.  
  897. PROCEDURE CINIT*(c: UCopListPtr; n: LONGINT);
  898. BEGIN IF UCopperListInit(c,n)=NIL THEN END END CINIT;
  899.  
  900. PROCEDURE CMOVE*(c: UCopListPtr; a: e.ADDRESS; b: INTEGER);
  901. BEGIN CMove(c,a,b); CBump(c) END CMOVE;
  902.  
  903. PROCEDURE CWAIT*(c: UCopListPtr; a,b: INTEGER);
  904. BEGIN CWait(c,a,b); CBump(c) END CWAIT;
  905.  
  906. PROCEDURE CEND*(c: UCopListPtr);
  907. BEGIN CWAIT(c,10000,255) END CEND;
  908.  
  909.  
  910. (*-------------------------------------------------------------------------*)
  911.  
  912.  
  913. BEGIN
  914.  
  915.  gfx :=  s.VAL(GfxBasePtr,e.OpenLibrary("graphics.library",33));
  916.  IF gfx = NIL THEN HALT(0) END;
  917.  
  918. CLOSE
  919.  
  920.  IF gfx#NIL THEN e.CloseLibrary(s.VAL(e.LibraryPtr,gfx)) END;
  921.  
  922. END Graphics.
  923.  
  924.