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

  1. unit Layers;
  2.  
  3. INTERFACE
  4. uses Exec, Graphics, Utility;
  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.         (dummy: longint;
  34.         layer: pLayer): longint;
  35.  
  36. function BehindLayer
  37.         (dummy: longint;
  38.         layer: pLayer): longint;
  39.  
  40. function MoveLayer
  41.         (dummy: longint;
  42.         layer: pLayer;
  43.         dx: longint;
  44.         dy: longint): longint;
  45.  
  46. function SizeLayer
  47.         (dummy: longint;
  48.         layer: pLayer;
  49.         dx: longint;
  50.         dy: longint): longint;
  51.  
  52. procedure ScrollLayer
  53.         (dummy: longint;
  54.         layer: pLayer;
  55.         dx: longint;
  56.         dy: longint);
  57.  
  58. function BeginUpdate (l: pLayer): boolean;
  59. procedure EndUpdate
  60.         (layer: pLayer;
  61.         flag: word);
  62.  
  63. function DeleteLayer
  64.         (dummy: longint;
  65.         layer: pLayer): longint;
  66.  
  67. procedure LockLayer
  68.         (dummy: 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.         other_layer: pLayer): longint;
  92.  
  93. function InstallClipRegion
  94.         (layer: pLayer;
  95.         region: pRegion): pRegion;
  96.  
  97. function MoveSizeLayer
  98.         (layer: pLayer;
  99.         dx: longint;
  100.         dy: longint;
  101.         dw: longint;
  102.         dh: longint): longint;
  103.  
  104. function CreateUpfrontHookLayer
  105.         (li: pLayer_Info;
  106.         bm: pBitMap;
  107.         x0: longint;
  108.         y0: longint;
  109.         x1: longint;
  110.         y1: longint;
  111.         flags: longint;
  112.         hook: pHook;
  113.         bm2: pBitMap): pLayer;
  114.  
  115. function CreateBehindHookLayer
  116.         (li: pLayer_Info;
  117.         bm: pBitMap;
  118.         x0: longint;
  119.         y0: longint;
  120.         x1: longint;
  121.         y1: longint;
  122.         flags: longint;
  123.         hook: pHook;
  124.         bm2: pBitMap): pLayer;
  125.  
  126. function InstallLayerHook
  127.         (layer: pLayer;
  128.         hook: pHook): pHook;
  129.  
  130.  
  131.  
  132. IMPLEMENTATION
  133. procedure InitLayers; xassembler;
  134. asm
  135.     move.l    a6,-(sp)
  136.     move.l    8(sp),a0
  137.     move.l    LayersBase,a6
  138.     jsr        -$1E(a6)
  139.     move.l    (sp)+,a6
  140. end;
  141.  
  142. function CreateUpfrontLayer; xassembler;
  143. asm
  144.     movem.l    d3-d4/a2/a6,-(sp)
  145.     lea        $14(sp),a6
  146.     move.l    (a6)+,a2
  147.     move.l    (a6)+,d4
  148.     move.l    (a6)+,d3
  149.     move.l    (a6)+,d2
  150.     move.l    (a6)+,d1
  151.     move.l    (a6)+,d0
  152.     move.l    (a6)+,a1
  153.     move.l    (a6)+,a0
  154.     move.l    LayersBase,a6
  155.     jsr        -$24(a6)
  156.     move.l    d0,$34(sp)
  157.     movem.l    (sp)+,d3-d4/a2/a6
  158. end;
  159.  
  160. function CreateBehindLayer; xassembler;
  161. asm
  162.     movem.l    d3-d4/a2/a6,-(sp)
  163.     lea        $14(sp),a6
  164.     move.l    (a6)+,a2
  165.     move.l    (a6)+,d4
  166.     move.l    (a6)+,d3
  167.     move.l    (a6)+,d2
  168.     move.l    (a6)+,d1
  169.     move.l    (a6)+,d0
  170.     move.l    (a6)+,a1
  171.     move.l    (a6)+,a0
  172.     move.l    LayersBase,a6
  173.     jsr        -$2A(a6)
  174.     move.l    d0,$34(sp)
  175.     movem.l    (sp)+,d3-d4/a2/a6
  176. end;
  177.  
  178. function UpfrontLayer; xassembler;
  179. asm
  180.     move.l    a6,-(sp)
  181.     lea        8(sp),a6
  182.     move.l    (a6)+,a1
  183.     move.l    (a6)+,a0
  184.     move.l    LayersBase,a6
  185.     jsr        -$30(a6)
  186.     move.l    d0,$10(sp)
  187.     move.l    (sp)+,a6
  188. end;
  189.  
  190. function BehindLayer; xassembler;
  191. asm
  192.     move.l    a6,-(sp)
  193.     lea        8(sp),a6
  194.     move.l    (a6)+,a1
  195.     move.l    (a6)+,a0
  196.     move.l    LayersBase,a6
  197.     jsr        -$36(a6)
  198.     move.l    d0,$10(sp)
  199.     move.l    (sp)+,a6
  200. end;
  201.  
  202. function MoveLayer; xassembler;
  203. asm
  204.     move.l    a6,-(sp)
  205.     lea        8(sp),a6
  206.     move.l    (a6)+,d1
  207.     move.l    (a6)+,d0
  208.     move.l    (a6)+,a1
  209.     move.l    (a6)+,a0
  210.     move.l    LayersBase,a6
  211.     jsr        -$3C(a6)
  212.     move.l    d0,$18(sp)
  213.     move.l    (sp)+,a6
  214. end;
  215.  
  216. function SizeLayer; xassembler;
  217. asm
  218.     move.l    a6,-(sp)
  219.     lea        8(sp),a6
  220.     move.l    (a6)+,d1
  221.     move.l    (a6)+,d0
  222.     move.l    (a6)+,a1
  223.     move.l    (a6)+,a0
  224.     move.l    LayersBase,a6
  225.     jsr        -$42(a6)
  226.     move.l    d0,$18(sp)
  227.     move.l    (sp)+,a6
  228. end;
  229.  
  230. procedure ScrollLayer; xassembler;
  231. asm
  232.     move.l    a6,-(sp)
  233.     lea        8(sp),a6
  234.     move.l    (a6)+,d1
  235.     move.l    (a6)+,d0
  236.     move.l    (a6)+,a1
  237.     move.l    (a6)+,a0
  238.     move.l    LayersBase,a6
  239.     jsr        -$48(a6)
  240.     move.l    (sp)+,a6
  241. end;
  242.  
  243. function BeginUpdate; xassembler;
  244. asm
  245.     move.l    a6,-(sp)
  246.     move.l    8(sp),a0
  247.     move.l    LayersBase,a6
  248.     jsr        -$4E(a6)
  249.     tst.l    d0
  250.     sne        d0
  251.     neg.b    d0
  252.     move.b    d0,$C(sp)
  253.     move.l    (sp)+,a6
  254. end;
  255.  
  256. procedure EndUpdate; xassembler;
  257. asm
  258.     move.l    a6,-(sp)
  259.     lea        8(sp),a6
  260.     move.w    (a6)+,d0
  261.     move.l    (a6)+,a0
  262.     move.l    LayersBase,a6
  263.     jsr        -$54(a6)
  264.     move.l    (sp)+,a6
  265. end;
  266.  
  267. function DeleteLayer; xassembler;
  268. asm
  269.     move.l    a6,-(sp)
  270.     lea        8(sp),a6
  271.     move.l    (a6)+,a1
  272.     move.l    (a6)+,a0
  273.     move.l    LayersBase,a6
  274.     jsr        -$5A(a6)
  275.     move.l    d0,$10(sp)
  276.     move.l    (sp)+,a6
  277. end;
  278.  
  279. procedure LockLayer; xassembler;
  280. asm
  281.     move.l    a6,-(sp)
  282.     lea        8(sp),a6
  283.     move.l    (a6)+,a1
  284.     move.l    (a6)+,a0
  285.     move.l    LayersBase,a6
  286.     jsr        -$60(a6)
  287.     move.l    (sp)+,a6
  288. end;
  289.  
  290. procedure UnlockLayer; xassembler;
  291. asm
  292.     move.l    a6,-(sp)
  293.     move.l    8(sp),a0
  294.     move.l    LayersBase,a6
  295.     jsr        -$66(a6)
  296.     move.l    (sp)+,a6
  297. end;
  298.  
  299. procedure LockLayers; xassembler;
  300. asm
  301.     move.l    a6,-(sp)
  302.     move.l    8(sp),a0
  303.     move.l    LayersBase,a6
  304.     jsr        -$6C(a6)
  305.     move.l    (sp)+,a6
  306. end;
  307.  
  308. procedure UnlockLayers; xassembler;
  309. asm
  310.     move.l    a6,-(sp)
  311.     move.l    8(sp),a0
  312.     move.l    LayersBase,a6
  313.     jsr        -$72(a6)
  314.     move.l    (sp)+,a6
  315. end;
  316.  
  317. procedure LockLayerInfo; xassembler;
  318. asm
  319.     move.l    a6,-(sp)
  320.     move.l    8(sp),a0
  321.     move.l    LayersBase,a6
  322.     jsr        -$78(a6)
  323.     move.l    (sp)+,a6
  324. end;
  325.  
  326. procedure SwapBitsRastPortClipRect; xassembler;
  327. asm
  328.     move.l    a6,-(sp)
  329.     lea        8(sp),a6
  330.     move.l    (a6)+,a1
  331.     move.l    (a6)+,a0
  332.     move.l    LayersBase,a6
  333.     jsr        -$7E(a6)
  334.     move.l    (sp)+,a6
  335. end;
  336.  
  337. function WhichLayer; xassembler;
  338. asm
  339.     move.l    a6,-(sp)
  340.     lea        8(sp),a6
  341.     move.w    (a6)+,d1
  342.     move.w    (a6)+,d0
  343.     move.l    (a6)+,a0
  344.     move.l    LayersBase,a6
  345.     jsr        -$84(a6)
  346.     move.l    d0,$10(sp)
  347.     move.l    (sp)+,a6
  348. end;
  349.  
  350. procedure UnlockLayerInfo; xassembler;
  351. asm
  352.     move.l    a6,-(sp)
  353.     move.l    8(sp),a0
  354.     move.l    LayersBase,a6
  355.     jsr        -$8A(a6)
  356.     move.l    (sp)+,a6
  357. end;
  358.  
  359. function NewLayerInfo; xassembler;
  360. asm
  361.     move.l    a6,-(sp)
  362.     move.l    LayersBase,a6
  363.     jsr        -$90(a6)
  364.     move.l    d0,8(sp)
  365.     move.l    (sp)+,a6
  366. end;
  367.  
  368. procedure DisposeLayerInfo; xassembler;
  369. asm
  370.     move.l    a6,-(sp)
  371.     move.l    8(sp),a0
  372.     move.l    LayersBase,a6
  373.     jsr        -$96(a6)
  374.     move.l    (sp)+,a6
  375. end;
  376.  
  377. function FattenLayerInfo; xassembler;
  378. asm
  379.     move.l    a6,-(sp)
  380.     move.l    8(sp),a0
  381.     move.l    LayersBase,a6
  382.     jsr        -$9C(a6)
  383.     move.l    d0,$C(sp)
  384.     move.l    (sp)+,a6
  385. end;
  386.  
  387. procedure ThinLayerInfo; xassembler;
  388. asm
  389.     move.l    a6,-(sp)
  390.     move.l    8(sp),a0
  391.     move.l    LayersBase,a6
  392.     jsr        -$A2(a6)
  393.     move.l    (sp)+,a6
  394. end;
  395.  
  396. function MoveLayerInFrontOf; xassembler;
  397. asm
  398.     move.l    a6,-(sp)
  399.     lea        8(sp),a6
  400.     move.l    (a6)+,a1
  401.     move.l    (a6)+,a0
  402.     move.l    LayersBase,a6
  403.     jsr        -$A8(a6)
  404.     move.l    d0,$10(sp)
  405.     move.l    (sp)+,a6
  406. end;
  407.  
  408. function InstallClipRegion; xassembler;
  409. asm
  410.     move.l    a6,-(sp)
  411.     lea        8(sp),a6
  412.     move.l    (a6)+,a1
  413.     move.l    (a6)+,a0
  414.     move.l    LayersBase,a6
  415.     jsr        -$AE(a6)
  416.     move.l    d0,$10(sp)
  417.     move.l    (sp)+,a6
  418. end;
  419.  
  420. function MoveSizeLayer; xassembler;
  421. asm
  422.     movem.l    d3/a6,-(sp)
  423.     lea        $C(sp),a6
  424.     move.l    (a6)+,d3
  425.     move.l    (a6)+,d2
  426.     move.l    (a6)+,d1
  427.     move.l    (a6)+,d0
  428.     move.l    (a6)+,a0
  429.     move.l    LayersBase,a6
  430.     jsr        -$B4(a6)
  431.     move.l    d0,$20(sp)
  432.     movem.l    (sp)+,d3/a6
  433. end;
  434.  
  435. function CreateUpfrontHookLayer; xassembler;
  436. asm
  437.     movem.l    d3-d4/a2-a3/a6,-(sp)
  438.     lea        $18(sp),a6
  439.     move.l    (a6)+,a2
  440.     move.l    (a6)+,a3
  441.     move.l    (a6)+,d4
  442.     move.l    (a6)+,d3
  443.     move.l    (a6)+,d2
  444.     move.l    (a6)+,d1
  445.     move.l    (a6)+,d0
  446.     move.l    (a6)+,a1
  447.     move.l    (a6)+,a0
  448.     move.l    LayersBase,a6
  449.     jsr        -$BA(a6)
  450.     move.l    d0,$3C(sp)
  451.     movem.l    (sp)+,d3-d4/a2-a3/a6
  452. end;
  453.  
  454. function CreateBehindHookLayer; xassembler;
  455. asm
  456.     movem.l    d3-d4/a2-a3/a6,-(sp)
  457.     lea        $18(sp),a6
  458.     move.l    (a6)+,a2
  459.     move.l    (a6)+,a3
  460.     move.l    (a6)+,d4
  461.     move.l    (a6)+,d3
  462.     move.l    (a6)+,d2
  463.     move.l    (a6)+,d1
  464.     move.l    (a6)+,d0
  465.     move.l    (a6)+,a1
  466.     move.l    (a6)+,a0
  467.     move.l    LayersBase,a6
  468.     jsr        -$C0(a6)
  469.     move.l    d0,$3C(sp)
  470.     movem.l    (sp)+,d3-d4/a2-a3/a6
  471. end;
  472.  
  473. function InstallLayerHook; xassembler;
  474. asm
  475.     move.l    a6,-(sp)
  476.     lea        8(sp),a6
  477.     move.l    (a6)+,a1
  478.     move.l    (a6)+,a0
  479.     move.l    LayersBase,a6
  480.     jsr        -$C6(a6)
  481.     move.l    d0,$10(sp)
  482.     move.l    (sp)+,a6
  483. end;
  484.  
  485. end.
  486.