home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Pascal / HISOFTPASCAL2,0-2.DMS / in.adf / Units / Layers.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1992-05-20  |  6.1 KB  |  388 lines

  1. unit Layers;
  2.  
  3. INTERFACE
  4. uses Exec, Graphics;
  5.  
  6.  
  7. var
  8.     LayersBase: pLibrary;
  9.  
  10.  
  11. procedure InitLayers (li: pLayer_Info);
  12. function CreateUpfrontLayer
  13.         (li: pLayer_Info;
  14.         bm: pBitMap;
  15.         x0: longint;
  16.         y0: longint;
  17.         x1: longint;
  18.         y1: longint;
  19.         flags: longint;
  20.         bm2: pBitMap): pLayer;
  21.  
  22. function CreateBehindLayer
  23.         (li: pLayer_Info;
  24.         bm: pBitMap;
  25.         x0: longint;
  26.         y0: longint;
  27.         x1: longint;
  28.         y1: longint;
  29.         flags: longint;
  30.         bm2: pBitMap): pLayer;
  31.  
  32. function UpfrontLayer
  33.         (li: longint;
  34.         layer: pLayer): longint;
  35.  
  36. function BehindLayer
  37.         (li: longint;
  38.         layer: pLayer): longint;
  39.  
  40. function MoveLayer
  41.         (li: longint;
  42.         layer: pLayer;
  43.         dx: longint;
  44.         dy: longint): longint;
  45.  
  46. function SizeLayer
  47.         (li: longint;
  48.         layer: pLayer;
  49.         dx: longint;
  50.         dy: longint): longint;
  51.  
  52. procedure ScrollLayer
  53.         (li: longint;
  54.         layer: pLayer;
  55.         dx: longint;
  56.         dy: longint);
  57.  
  58. function BeginUpdate (layer: pLayer): boolean;
  59. procedure EndUpdate
  60.         (layer: pLayer;
  61.         flag: word);
  62.  
  63. function DeleteLayer
  64.         (li: longint;
  65.         layer: pLayer): longint;
  66.  
  67. procedure LockLayer
  68.         (li: longint;
  69.         layer: pLayer);
  70.  
  71. procedure UnlockLayer (layer: pLayer);
  72. procedure LockLayers (li: pLayer_Info);
  73. procedure UnlockLayers (li: pLayer_Info);
  74. procedure LockLayerInfo (li: pLayer_Info);
  75. procedure SwapBitsRastPortClipRect
  76.         (rp: pRastPort;
  77.         cr: pClipRect);
  78.  
  79. function WhichLayer
  80.         (li: pLayer_Info;
  81.         x: integer;
  82.         y: integer): pLayer;
  83.  
  84. procedure UnlockLayerInfo (li: pLayer_Info);
  85. function NewLayerInfo: pLayer_Info;
  86. procedure DisposeLayerInfo (li: pLayer_Info);
  87. function FattenLayerInfo (li: pLayer_Info): longint;
  88. procedure ThinLayerInfo (li: pLayer_Info);
  89. function MoveLayerInFrontOf
  90.         (layer_to_move: pLayer;
  91.         layer_to_be_infront_of: pLayer): longint;
  92.  
  93. function InstallClipRegion
  94.         (layer: pLayer;
  95.         region: pRegion): pRegion;
  96.  
  97.  
  98.  
  99. IMPLEMENTATION
  100. procedure InitLayers; xassembler;
  101. asm
  102.     move.l    a6,-(sp)
  103.     move.l    8(sp),a0
  104.     move.l    LayersBase,a6
  105.     jsr        -$1E(a6)
  106.     move.l    (sp)+,a6
  107. end;
  108.  
  109. function CreateUpfrontLayer; xassembler;
  110. asm
  111.     movem.l    d3-d4/a2/a6,-(sp)
  112.     lea        $14(sp),a6
  113.     move.l    (a6)+,a2
  114.     move.l    (a6)+,d4
  115.     move.l    (a6)+,d3
  116.     move.l    (a6)+,d2
  117.     move.l    (a6)+,d1
  118.     move.l    (a6)+,d0
  119.     move.l    (a6)+,a1
  120.     move.l    (a6)+,a0
  121.     move.l    LayersBase,a6
  122.     jsr        -$24(a6)
  123.     move.l    d0,$34(sp)
  124.     movem.l    (sp)+,d3-d4/a2/a6
  125. end;
  126.  
  127. function CreateBehindLayer; xassembler;
  128. asm
  129.     movem.l    d3-d4/a2/a6,-(sp)
  130.     lea        $14(sp),a6
  131.     move.l    (a6)+,a2
  132.     move.l    (a6)+,d4
  133.     move.l    (a6)+,d3
  134.     move.l    (a6)+,d2
  135.     move.l    (a6)+,d1
  136.     move.l    (a6)+,d0
  137.     move.l    (a6)+,a1
  138.     move.l    (a6)+,a0
  139.     move.l    LayersBase,a6
  140.     jsr        -$2A(a6)
  141.     move.l    d0,$34(sp)
  142.     movem.l    (sp)+,d3-d4/a2/a6
  143. end;
  144.  
  145. function UpfrontLayer; xassembler;
  146. asm
  147.     move.l    a6,-(sp)
  148.     lea        8(sp),a6
  149.     move.l    (a6)+,a1
  150.     move.l    (a6)+,a0
  151.     move.l    LayersBase,a6
  152.     jsr        -$30(a6)
  153.     move.l    d0,$10(sp)
  154.     move.l    (sp)+,a6
  155. end;
  156.  
  157. function BehindLayer; xassembler;
  158. asm
  159.     move.l    a6,-(sp)
  160.     lea        8(sp),a6
  161.     move.l    (a6)+,a1
  162.     move.l    (a6)+,a0
  163.     move.l    LayersBase,a6
  164.     jsr        -$36(a6)
  165.     move.l    d0,$10(sp)
  166.     move.l    (sp)+,a6
  167. end;
  168.  
  169. function MoveLayer; xassembler;
  170. asm
  171.     move.l    a6,-(sp)
  172.     lea        8(sp),a6
  173.     move.l    (a6)+,d1
  174.     move.l    (a6)+,d0
  175.     move.l    (a6)+,a1
  176.     move.l    (a6)+,a0
  177.     move.l    LayersBase,a6
  178.     jsr        -$3C(a6)
  179.     move.l    d0,$18(sp)
  180.     move.l    (sp)+,a6
  181. end;
  182.  
  183. function SizeLayer; xassembler;
  184. asm
  185.     move.l    a6,-(sp)
  186.     lea        8(sp),a6
  187.     move.l    (a6)+,d1
  188.     move.l    (a6)+,d0
  189.     move.l    (a6)+,a1
  190.     move.l    (a6)+,a0
  191.     move.l    LayersBase,a6
  192.     jsr        -$42(a6)
  193.     move.l    d0,$18(sp)
  194.     move.l    (sp)+,a6
  195. end;
  196.  
  197. procedure ScrollLayer; xassembler;
  198. asm
  199.     move.l    a6,-(sp)
  200.     lea        8(sp),a6
  201.     move.l    (a6)+,d1
  202.     move.l    (a6)+,d0
  203.     move.l    (a6)+,a1
  204.     move.l    (a6)+,a0
  205.     move.l    LayersBase,a6
  206.     jsr        -$48(a6)
  207.     move.l    (sp)+,a6
  208. end;
  209.  
  210. function BeginUpdate; xassembler;
  211. asm
  212.     move.l    a6,-(sp)
  213.     move.l    8(sp),a0
  214.     move.l    LayersBase,a6
  215.     jsr        -$4E(a6)
  216.     tst.l    d0
  217.     sne        d0
  218.     neg.b    d0
  219.     move.b    d0,$C(sp)
  220.     move.l    (sp)+,a6
  221. end;
  222.  
  223. procedure EndUpdate; xassembler;
  224. asm
  225.     move.l    a6,-(sp)
  226.     lea        8(sp),a6
  227.     move.w    (a6)+,d0
  228.     move.l    (a6)+,a0
  229.     move.l    LayersBase,a6
  230.     jsr        -$54(a6)
  231.     move.l    (sp)+,a6
  232. end;
  233.  
  234. function DeleteLayer; xassembler;
  235. asm
  236.     move.l    a6,-(sp)
  237.     lea        8(sp),a6
  238.     move.l    (a6)+,a1
  239.     move.l    (a6)+,a0
  240.     move.l    LayersBase,a6
  241.     jsr        -$5A(a6)
  242.     move.l    d0,$10(sp)
  243.     move.l    (sp)+,a6
  244. end;
  245.  
  246. procedure LockLayer; xassembler;
  247. asm
  248.     move.l    a6,-(sp)
  249.     lea        8(sp),a6
  250.     move.l    (a6)+,a1
  251.     move.l    (a6)+,a0
  252.     move.l    LayersBase,a6
  253.     jsr        -$60(a6)
  254.     move.l    (sp)+,a6
  255. end;
  256.  
  257. procedure UnlockLayer; xassembler;
  258. asm
  259.     move.l    a6,-(sp)
  260.     move.l    8(sp),a0
  261.     move.l    LayersBase,a6
  262.     jsr        -$66(a6)
  263.     move.l    (sp)+,a6
  264. end;
  265.  
  266. procedure LockLayers; xassembler;
  267. asm
  268.     move.l    a6,-(sp)
  269.     move.l    8(sp),a0
  270.     move.l    LayersBase,a6
  271.     jsr        -$6C(a6)
  272.     move.l    (sp)+,a6
  273. end;
  274.  
  275. procedure UnlockLayers; xassembler;
  276. asm
  277.     move.l    a6,-(sp)
  278.     move.l    8(sp),a0
  279.     move.l    LayersBase,a6
  280.     jsr        -$72(a6)
  281.     move.l    (sp)+,a6
  282. end;
  283.  
  284. procedure LockLayerInfo; xassembler;
  285. asm
  286.     move.l    a6,-(sp)
  287.     move.l    8(sp),a0
  288.     move.l    LayersBase,a6
  289.     jsr        -$78(a6)
  290.     move.l    (sp)+,a6
  291. end;
  292.  
  293. procedure SwapBitsRastPortClipRect; xassembler;
  294. asm
  295.     move.l    a6,-(sp)
  296.     lea        8(sp),a6
  297.     move.l    (a6)+,a1
  298.     move.l    (a6)+,a0
  299.     move.l    LayersBase,a6
  300.     jsr        -$7E(a6)
  301.     move.l    (sp)+,a6
  302. end;
  303.  
  304. function WhichLayer; xassembler;
  305. asm
  306.     move.l    a6,-(sp)
  307.     lea        8(sp),a6
  308.     move.w    (a6)+,d1
  309.     move.w    (a6)+,d0
  310.     move.l    (a6)+,a0
  311.     move.l    LayersBase,a6
  312.     jsr        -$84(a6)
  313.     move.l    d0,$10(sp)
  314.     move.l    (sp)+,a6
  315. end;
  316.  
  317. procedure UnlockLayerInfo; xassembler;
  318. asm
  319.     move.l    a6,-(sp)
  320.     move.l    8(sp),a0
  321.     move.l    LayersBase,a6
  322.     jsr        -$8A(a6)
  323.     move.l    (sp)+,a6
  324. end;
  325.  
  326. function NewLayerInfo; xassembler;
  327. asm
  328.     move.l    a6,-(sp)
  329.     move.l    LayersBase,a6
  330.     jsr        -$90(a6)
  331.     move.l    d0,8(sp)
  332.     move.l    (sp)+,a6
  333. end;
  334.  
  335. procedure DisposeLayerInfo; xassembler;
  336. asm
  337.     move.l    a6,-(sp)
  338.     move.l    8(sp),a0
  339.     move.l    LayersBase,a6
  340.     jsr        -$96(a6)
  341.     move.l    (sp)+,a6
  342. end;
  343.  
  344. function FattenLayerInfo; xassembler;
  345. asm
  346.     move.l    a6,-(sp)
  347.     move.l    8(sp),a0
  348.     move.l    LayersBase,a6
  349.     jsr        -$9C(a6)
  350.     move.l    d0,$C(sp)
  351.     move.l    (sp)+,a6
  352. end;
  353.  
  354. procedure ThinLayerInfo; xassembler;
  355. asm
  356.     move.l    a6,-(sp)
  357.     move.l    8(sp),a0
  358.     move.l    LayersBase,a6
  359.     jsr        -$A2(a6)
  360.     move.l    (sp)+,a6
  361. end;
  362.  
  363. function MoveLayerInFrontOf; xassembler;
  364. asm
  365.     move.l    a6,-(sp)
  366.     lea        8(sp),a6
  367.     move.l    (a6)+,a1
  368.     move.l    (a6)+,a0
  369.     move.l    LayersBase,a6
  370.     jsr        -$A8(a6)
  371.     move.l    d0,$10(sp)
  372.     move.l    (sp)+,a6
  373. end;
  374.  
  375. function InstallClipRegion; xassembler;
  376. asm
  377.     move.l    a6,-(sp)
  378.     lea        8(sp),a6
  379.     move.l    (a6)+,a1
  380.     move.l    (a6)+,a0
  381.     move.l    LayersBase,a6
  382.     jsr        -$AE(a6)
  383.     move.l    d0,$10(sp)
  384.     move.l    (sp)+,a6
  385. end;
  386.  
  387. end.
  388.