home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD1.iso / EGS / egssys71.lha / EGSClusterInc.lha / EGSGfx.def < prev    next >
Encoding:
Text File  |  1994-12-13  |  24.7 KB  |  614 lines

  1. |##########|
  2. |#MAGIC   #|DBBCMDKF
  3. |#PROJECT #|""
  4. |#PATHS   #|"EGSProject"
  5. |#FLAGS   #|xx---x--x---xxx-----------------
  6. |#USERSW  #|--------------------------------
  7. |#USERMASK#|--------------------------------
  8. |#SWITCHES#|x--x-x----------
  9. |##########|
  10. |
  11. | 26.1.92 FloodFill
  12. |         CopyRectangle
  13. |         RastPort Struktur mit 'clipKey'
  14. | 13.3.92 FillMaskSeg
  15. |
  16. DEFINITION MODULE EGSGfx;
  17. |
  18. |  +---------------------------------------------------------------------+
  19. |  |                                                                     |##
  20. |  |                 egsgfx.library v1.0, © '92 StoneWare                |##
  21. |  |                    EXTENDED - GRAPHICS - STANDARD                   |##
  22. |  |                                                                     |##
  23. |  +---------------------------------------------------------------------+##
  24. |    #######################################################################
  25. |
  26. | Diese Library setzt auf der "egslayers.library" und der "egsblit.library"
  27. | auf. Sie vereinheitlicht und vereinfacht den Zugriff auf Layers und BitMaps.
  28. |
  29. | Die Funktionen sind zum großen Teil an die "graphics.library" angelehnt.
  30. | Die Grundlegende Struktur ist der RastPort. Er enthält ein Layer, eine BitMap
  31. | und oder einen Screen. Dabei werden alle Richtlinien eingehalten
  32. | (MouseOn..MouseOff, LockLayer..UnlockLayer).
  33. | Es kann je nach Bedarf über ein Layer und/oder eine Region geclipt werden.
  34. |
  35. FROM EGSLayers  IMPORT LayerPtr;
  36. FROM EGSBlit    IMPORT ClipRectPtr,ClipRect;
  37. FROM EGS        IMPORT EBitMapPtr,EScreenPtr,EBitMap;
  38. FROM System     IMPORT BITSET,SHORTSET,Regs,LONGSET;
  39.                 IMPORT Graphics;
  40. FROM Exec       IMPORT LibraryPtr;
  41. FROM Graphics   IMPORT FontStyleSet;
  42.  
  43. TYPE
  44.   CharPtr     = POINTER TO CHAR;
  45. |
  46. | DrawModes...
  47. |
  48. | Zustände die die Farbverteilung bei Zeichenoperationen bestimmen
  49. |
  50. |   drawAPen  : es wird mit dem APen auf transparenten Untergrund
  51. |               gezeichnet
  52. |   drawABPen : es wird mit dem APen als Vordergrund und dem BPen als
  53. |               Hintergrund gezeichnet
  54. |   invert    : Es wird invertierend gezeichnet
  55. |
  56. |
  57.   DrawModes   = (drawAPen,drawABPen,invert);
  58. |
  59. | EFont, EFontPtr...
  60. |
  61. | Erweiterung der Amiga-TextFont Struktur, mit zusätzlichen Informationen.
  62. | Sie wird über 'OpenFont' erzeugt und über 'CloseFont' vernichtet.
  63. |
  64.   EFontPtr = POINTER TO EFont;
  65.   EFont    = RECORD
  66.                font : Graphics.TextFontPtr;
  67.                vmap : EBitMap;
  68.              END;
  69. |
  70. | PolyEntry, Polygon, PolyPtr...
  71. |
  72. | Strukturen für Polygone
  73. |
  74.   PolyEntry   = RECORD x,y : INTEGER END;
  75.   Polygon     = ARRAY OF PolyEntry;
  76.   PolyPtr     = POINTER TO PolyEntry;
  77. |
  78. | AreaInfo, AreaInfoPtr...
  79. |
  80. | Struktur für Area-Befehle, wird über 'InitArea' initialisiert.
  81. |
  82.   AreaInfoPtr = POINTER TO AreaInfo;
  83.   AreaInfo    = RECORD
  84.                   vctrTbl,
  85.                   vctrPtr,
  86.                   vctrLast  : PolyPtr;
  87.                   count,
  88.                   maxCount  : INTEGER;
  89.                 END;
  90. |
  91. | RastPort, RastPortPtr...
  92. |
  93. | Grundlegende EGSGfx Zeichenstruktur:
  94. |
  95. |  .map     : BitMap in die gezeichnet wird
  96. |  .layer   : Layer auf das gezeichnet wird
  97. |  .screen  : Screen auf die gezeichnet wird
  98. |
  99. |  .cx,.cy  : Aktueller Zeichen-Cursor, kann über 'Move' oder direktes
  100. |             beschreiben geändert werden.
  101. |  .ax,.ay  : Aktueller Area-Cursor, muß über AreaMove geändert werden
  102. |
  103. |  .aPen    : APen bzw. Vordergrundstift
  104. |  .bPen    : BPen bzw. Hintergrundstift
  105. |
  106. |  .mode    : Zeichenmodus
  107. |  .font    : Aktueller Textfont, muß über beschreiben geändert werden
  108. |
  109. |  .region  : ClipRegion, muß über Install- bzw. RemoveClipRegion geändert
  110. |             werden
  111. |  .fClip,
  112. |  .bClip   : PRIVAT
  113. |
  114. |  .curvStep: Bezierkurven werden in kleine Linien zerlegt. Dieser Wert gibt
  115. |             die maximale Länge eines derartigen Linienstücks an.
  116. |
  117. |  .tmpRas  : Zeiger auf eine einplaneige BitMap, die bei Area-Befehlen
  118. |             benutzt werden soll, ist keine vorhanden, wird bei jeder
  119. |             Area-Operation eine alloziert und wieder freigegeben.
  120. |  .areaInfo: AreaInfo-Struktur
  121. |
  122. | Aus Gründen der Aufwärtskompatibilität dürfen keine Variablen des Typs
  123. | RastPort erzeugt werden. RastPorts dürfen nur über 'CreateRastPort' erzeugt
  124. | und über 'DeleteRastPort' vernichtet werden.
  125. |
  126.   RPortFlags  = (ownAreaInfo,rpf31=31);
  127.   RPortFlagSet= SET OF RPortFlags;
  128.  
  129.   RastPortPtr = POINTER TO RastPort;
  130.   RastPort    = RECORD
  131.                   map      : EBitMapPtr;
  132.                   layer    : LayerPtr;
  133.                   screen   : EScreenPtr;
  134.                   depth    : INTEGER;
  135.                   cx,
  136.                   cy,
  137.                   ax,
  138.                   ay       : INTEGER;
  139.                   aPen,
  140.                   bPen     : LONGINT;
  141.                   mode     : DrawModes;
  142.                   font     : EFontPtr;
  143.                   region   : ClipRectPtr;
  144.                   fClip,
  145.                   bClip    : ClipRectPtr;
  146.                   curvStep : INTEGER;
  147.                   tmpRas   : EBitMapPtr;
  148.                   areaInfo : AreaInfoPtr;
  149.                   algoStyle: FontStyleSet;
  150.                   mask     : LONGSET;
  151.                   clipKey  : LONGINT;
  152.                   flags    : RPortFlagSet;
  153.                   lineptrn : CARDINAL;
  154.                   mpattern : EBitMapPtr;
  155.                   apattern : EGS.PatternPtr;
  156.  
  157.                   cacheKey : LONGINT;            | globaler cache key,
  158.                                                  | wenn ungleich dem main,
  159.                                                  | dann hat sich irgendwas
  160.                                                  | geändert.
  161.                   parentKey: LONGINT;            | bekommt den cache key,
  162.                                                  | falls dieser RastPort
  163.                                                  | von der Änderung
  164.                                                  | betroffen war.
  165.                   rect     : ClipRect;           | Cliprect des RastPorts
  166.                                                  | relativ zum übergeordneten
  167.                                                  | Rastport
  168.                   main,                          | der Hauptrastport
  169.                   super    : RastPortPtr;        | der übergeordnete
  170.                                                  | Rastport
  171.                   frect    : ClipRect;           | Cliprect des Rastports
  172.                                                  | relativ zum Screen
  173.                 END;
  174.  
  175. VAR EGSGfxBase : LibraryPtr;
  176.  
  177. |
  178. | PROCEDURE SetAPen(rast IN A0 : RastPortPtr;color IN D0 : LONGINT);
  179. |
  180. | Farbe des Vordergrundstiftes ändern.
  181. |
  182. LIBRARY EGSGfxBase BY-30  PROCEDURE SetAPen(rast IN A0 : RastPortPtr;color IN D0 : LONGINT);
  183. |
  184. | PROCEDURE SetBPen(rast IN A0 : RastPortPtr;color IN D0 : LONGINT);
  185. |
  186. | Farbe des Hintergrundstiftes ändern.
  187. |
  188. LIBRARY EGSGfxBase BY-36  PROCEDURE SetBPen(rast IN A0 : RastPortPtr;color IN D0 : LONGINT);
  189. |
  190. | PROCEDURE SetDrawMode(rast IN A0 : RastPortPtr;mode IN D0 : DrawModes);
  191. |
  192. | Zeichenmodus setzen.
  193. |
  194. LIBRARY EGSGfxBase BY-42  PROCEDURE SetDrawMode(rast IN A0 : RastPortPtr;mode IN D0 : DrawModes);
  195. |
  196. | PROCEDURE Move(rast IN A0 : RastPortPtr;x IN D0,y IN D1 : INTEGER);
  197. |
  198. | Setzt die Position des Graphik-Cursors
  199. |
  200. LIBRARY EGSGfxBase BY-48  PROCEDURE Move(rast IN A0 : RastPortPtr;x IN D0,y IN D1 : INTEGER);
  201. |
  202. | PROCEDURE WritePixel(rast IN A0 : RastPortPtr;x IN D0,y IN D1 : INTEGER);
  203. |
  204. | Setzt einen Punkt in Farbe des APens an die angegebene Position.
  205. |
  206. LIBRARY EGSGfxBase BY-54  PROCEDURE WritePixel(rast IN A0 : RastPortPtr;x IN D0,y IN D1 : INTEGER);
  207. |
  208. | PROCEDURE ReadPixel(rast IN A0 : RastPortPtr;
  209. |                     x    IN D0,
  210. |                     y    IN D1 : INTEGER):INTEGER;
  211. |
  212. | Ermittelt die Farbe eines Bildpunktes an der angegebenen Position
  213. |
  214. LIBRARY EGSGfxBase BY-60  PROCEDURE ReadPixel(rast IN A0 : RastPortPtr;x IN D0,y IN D1 : INTEGER):LONGINT;
  215. |
  216. | PROCEDURE Draw(rast IN A0 : RastPortPtr;x IN D0,y IN D1 : INTEGER);
  217. |
  218. | Zeichnet eine Linie mit dem APen von der aktuellen Cursorposition zur
  219. | angegebenen Position.
  220. |
  221. LIBRARY EGSGfxBase BY-66  PROCEDURE Draw(rast IN A0 : RastPortPtr;x IN D0,y IN D1 : INTEGER);
  222. |
  223. | PROCEDURE Ellipse(rast IN A0 : RastPortPtr;x IN D0,y IN D1,a IN D2,b IN D3 : INTEGER);
  224. |
  225. | Zeichnet eine Ellipse um x/y mit den Radien a und b
  226. |
  227. LIBRARY EGSGfxBase BY-198 PROCEDURE Ellipse(rast IN A0 : RastPortPtr;x IN D0,y IN D1,a IN D2,b IN D3 : INTEGER);
  228. |
  229. | PROCEDURE Curve(rast IN A0 : RastPortPtr;
  230. |                   x2 IN D0,y2 IN D1,
  231. |                   x3 IN D2,y3 IN D3,
  232. |                   x4 IN D4,y4 IN D5 : INTEGER);
  233. |
  234. | Zeichnet eine Bezierkurve vom aktuellen Graphik-Cursor zum Punkt (x4,y4) mit
  235. | den Hilfspunkten (x2,y2) und (x3,y3);
  236. |
  237. LIBRARY EGSGfxBase BY-72  PROCEDURE Curve(rast IN A0 : RastPortPtr;
  238.                                             x2 IN D0,y2 IN D1,
  239.                                             x3 IN D2,y3 IN D3,
  240.                                             x4 IN D4,y4 IN D5 : INTEGER);
  241.  
  242. LIBRARY EGSGfxBase BY-234 PROCEDURE CurveL(rast IN A0 : RastPortPtr;
  243.                                              x2 IN D0,y2 IN D1,
  244.                                              x3 IN D2,y3 IN D3 : LONGINT;
  245.                                              x4 IN D4,y4 IN D5 : INTEGER);
  246. |
  247. | PROCEDURE Text(rast IN A0 : RastPortPtr;
  248. |                text IN A1 : CharPtr;
  249. |                len  IN D0 : INTEGER);
  250. |
  251. | Schreibt einen Text an der Position des aktuellen Graphik-Cursors im akutellen
  252. | Font. Der Graphik-Cursor steht nach dieser Operation hinter dem ausgegebenen
  253. | Text
  254. |
  255. LIBRARY EGSGfxBase BY-78  PROCEDURE Text(rast IN A0 : RastPortPtr;text IN A1 : CharPtr;len IN D0 : INTEGER);
  256. |
  257. LIBRARY EGSGfxBase BY-210 PROCEDURE TextLength(rast IN A0 : RastPortPtr;text IN A1 : CharPtr;len IN D0 : INTEGER):INTEGER;
  258. |
  259. | PROCEDURE RectangleFill(rast IN A0 : RastPortPtr;
  260. |                            x IN D0,y IN D1,
  261. |                            w IN D2,h IN D3 : INTEGER);
  262. |
  263. | Füllt ein Rechteck in der aktuellen Vordergrundfarbe.
  264. |
  265. LIBRARY EGSGfxBase BY-84  PROCEDURE RectangleFill(rast IN A0 : RastPortPtr;
  266.                                                   x IN D0,y IN D1,
  267.                                                   w IN D2,h IN D3 : INTEGER);
  268. |
  269. | PROCEDURE CopyBitMapRastPort(src   IN A0 : EBitMapPtr;
  270. |                              rast  IN A1 : RastPortPtr;
  271. |                              xs    IN D0,
  272. |                              ys    IN D1 : INTEGER;
  273. |                              w     IN D2,
  274. |                              h     IN D3 : INTEGER;
  275. |                              xd    IN D4,
  276. |                              yd    IN D5 : INTEGER);
  277. |
  278. | Kopiert einen rechteckigen Ausschnitt aus einer BitMap in einen Rastport.
  279. |
  280. |  - src   : Quellbitmap
  281. |  - rast  : Zielrastport
  282. |  - xs,ys : Startposition
  283. |  - w,h   : Größe des Rechtecks
  284. |  - xd,yd : Zielposition
  285. |
  286. LIBRARY EGSGfxBase BY-90  PROCEDURE CopyBitMapRastPort(src   IN A0 : EBitMapPtr;
  287.                                                        rast  IN A1 : RastPortPtr;
  288.                                                        xs    IN D0,
  289.                                                        ys    IN D1 : INTEGER;
  290.                                                        w     IN D2,
  291.                                                        h     IN D3 : INTEGER;
  292.                                                        xd    IN D4,
  293.                                                        yd    IN D5 : INTEGER);
  294. |
  295. | PROCEDURE ScrollRastPort(rast  IN A0 : RastPortPtr;
  296. |                          xs    IN D0,
  297. |                          ys    IN D1 : INTEGER;
  298. |                          w     IN D2,
  299. |                          h     IN D3 : INTEGER;
  300. |                          dx    IN D4,
  301. |                          dy    IN D5 : INTEGER);
  302. |
  303. | Verschiebt einen rechteckigen Ausschnitt eines RastPorts.
  304. |
  305. |  - rast  : Quell und Zielrastport
  306. |  - xs,ys : obere linke Ecke
  307. |  - w,h   : Größe des Rechtecks
  308. |  - dx,dy : Wert, um den das Rechteck verschoben werden soll
  309. |
  310. LIBRARY EGSGfxBase BY-96  PROCEDURE ScrollRastPort(rast  IN A0 : RastPortPtr;
  311.                                                    xs    IN D0,
  312.                                                    ys    IN D1 : INTEGER;
  313.                                                    w     IN D2,
  314.                                                    h     IN D3 : INTEGER;
  315.                                                    dx    IN D4,
  316.                                                    dy    IN D5 : INTEGER);
  317.  
  318. LIBRARY EGSGfxBase BY-258 PROCEDURE ScrollRastNoClear(rast  IN A0 : RastPortPtr;
  319.                                                       xs    IN D0,
  320.                                                       ys    IN D1 : INTEGER;
  321.                                                       w     IN D2,
  322.                                                       h     IN D3 : INTEGER;
  323.                                                       dx    IN D4,
  324.                                                       dy    IN D5 : INTEGER);
  325.  
  326. LIBRARY EGSGfxBase BY-294 PROCEDURE ScrollRastNoRefresh(rast  IN A0 : RastPortPtr;
  327.                                                         xs    IN D0,
  328.                                                         ys    IN D1 : INTEGER;
  329.                                                         w     IN D2,
  330.                                                         h     IN D3 : INTEGER;
  331.                                                         dx    IN D4,
  332.                                                         dy    IN D5 : INTEGER);
  333. |
  334. |
  335. |
  336. LIBRARY EGSGfxBase BY-222 PROCEDURE CopyRectangle(src IN A0,
  337.                                                   dst IN A1  : RastPortPtr;
  338.                                                   xs  IN D0,
  339.                                                   ys  IN D1,
  340.                                                   w   IN D2,
  341.                                                   h   IN D3,
  342.                                                   dx  IN D4,
  343.                                                   dy  IN D5  : INTEGER);
  344. |
  345. | PROCEDURE FillMask(rast IN A0 : RastPortPtr;
  346. |                    src  IN A1 : EBitMapPtr;
  347. |                    xd   IN D0,
  348. |                    yd   IN D1 : INTEGER);
  349. |
  350. |
  351. | Füllt einen rechteckigen Bereich eines Rastports durch eine Maske. Die
  352. | Maske ist eine ein Bit tiefe BitMap. Diese Prozedur wird von den Area-Befehlen
  353. | Benutzt. Ist für den Drawmode des Rastports 'drawABPen' gesetzt wird das ganze
  354. | Rechteck in zwei Farben gefüllt.
  355. |
  356. LIBRARY EGSGfxBase BY-102 PROCEDURE FillMask(rast IN A0 : RastPortPtr;
  357.                                              src  IN A1 : EBitMapPtr;
  358.                                              xd   IN D0,
  359.                                              yd   IN D1 : INTEGER);
  360.  
  361. LIBRARY EGSGfxBase BY-228 PROCEDURE FillMaskSeg(rast IN A0 : RastPortPtr;
  362.                                                 src  IN A1 : EBitMapPtr;
  363.                                                 xs   IN D0,
  364.                                                 ys   IN D1,
  365.                                                 w    IN D2,
  366.                                                 h    IN D3,
  367.                                                 xd   IN D4,
  368.                                                 yd   IN D5 : INTEGER);
  369. |
  370. | PROCEDURE AreaCircle(rast IN A0 : RastPortPtr;
  371. |                      x    IN D0,
  372. |                      y    IN D1,
  373. |                      r    IN D2 : INTEGER);
  374. |
  375. | Zeichnet einen ausgefüllten Kreis in der Vordergrundfarbe.
  376. |
  377. LIBRARY EGSGfxBase BY-108 PROCEDURE AreaCircle(rast IN A0 : RastPortPtr;x IN D0,y IN D1,r IN D2 : INTEGER);
  378. |
  379. | PROCEDURE AreaMove(rast IN A0 : RastPortPtr;x IN D0,y  IN D1 : INTEGER);
  380. |
  381. | Bewegt den Area-Cursor an die angegebene Stelle, und schließt ein eventuell
  382. | noch offenes Polygon.
  383. |
  384. LIBRARY EGSGfxBase BY-114 PROCEDURE AreaMove(rast IN A0 : RastPortPtr;x IN D0,y  IN D1 : INTEGER);
  385. |
  386. | PROCEDURE AreaDraw(rast IN A0 : RastPortPtr;x IN D0,y IN D1 : INTEGER);
  387. |
  388. | Verbindet den aktuellen Area-Punkt mit (x,y) durch eine Gerade.
  389. |
  390. LIBRARY EGSGfxBase BY-120 PROCEDURE AreaDraw(rast IN A0 : RastPortPtr;x IN D0,y IN D1 : INTEGER);
  391. |
  392. | PROCEDURE AreaCurve(rast IN A0 : RastPortPtr;
  393. |                       x2 IN D0,y2 IN D1,
  394. |                       x3 IN D2,y3 IN D3,
  395. |                       x4 IN D4,y4 IN D5 : INTEGER);
  396. |
  397. | Verbindet den aktuellen Area-Punkt mit (x4,y4) durch eine Bezier-Kurve.
  398. |
  399. LIBRARY EGSGfxBase BY-132 PROCEDURE AreaCurve(rast IN A0 : RastPortPtr;
  400.                                                 x2 IN D0,y2 IN D1,
  401.                                                 x3 IN D2,y3 IN D3,
  402.                                                 x4 IN D4,y4 IN D5 : INTEGER);
  403. LIBRARY EGSGfxBase BY-240 PROCEDURE AreaCurveL(rast IN A0 : RastPortPtr;
  404.                                                  x2 IN D0,y2 IN D1,
  405.                                                  x3 IN D2,y3 IN D3 : LONGINT;
  406.                                                  x4 IN D4,y4 IN D5 : INTEGER);
  407. |
  408. | PROCEDURE AreaEnd(rast IN A0 : RastPortPtr);
  409. |
  410. | Schließt das letzte Polygon, und zeichnet die mit 'AreaMove', 'AreaDraw'
  411. | und 'AreaCurve' definierten Poylgone.
  412. |
  413. LIBRARY EGSGfxBase BY-126 PROCEDURE AreaEnd(rast IN A0 : RastPortPtr);
  414. |
  415. | PROCEDURE InitArea(VAR info   IN A0 : AreaInfo;
  416. |                        buffer IN A1 : PolyPtr;
  417. |                        size   IN D0 : INTEGER):AreaInfoPtr;
  418. |
  419. | Initialisiert eine 'AreaInfo'-Struktur.
  420. |
  421. |  - info   : AreaInfo-Struktur
  422. |  - buffer : Zeiger auf einen Puffer, in den die Eckwerte eingetragen werden.
  423. |             'AreaCurve' benötigt sehr viele Eckwerte (1000...).
  424. |  - size   : Anzahl der Eckpunkte.
  425. |
  426. | Die Adresse der AreaInfo-Struktur wird zurückgegeben, so daß sie direkt an
  427. | den RastPort übergeben werden kann.
  428. |
  429. | ...
  430. |   rast^.areaInfo:=InitArea(info,puffer'PTR,100);
  431. | ...
  432. |
  433. LIBRARY EGSGfxBase BY-138 PROCEDURE InitArea(VAR info   IN A0 : AreaInfo;
  434.                                                  buffer IN A1 : PolyPtr;
  435.                                                  size   IN D0 : INTEGER):AreaInfoPtr;
  436. |
  437. | PROCEDURE OpenFont(attr IN A0 : Graphics.TextAttrPtr):EFontPtr;
  438. |
  439. | Öffnet einen TextFont mit 'OpenDiskFont' und erweitert die Struktur um
  440. | benötigte Daten.
  441. |
  442. LIBRARY EGSGfxBase BY-144 PROCEDURE OpenFont(attr IN A0 : Graphics.TextAttrPtr):EFontPtr;
  443. |
  444. | PROCEDURE CloseFont(font IN A0 : EFontPtr);
  445. |
  446. | Schließt einen Font. Dies sollte mit jedem Font geschehen, der geöffnet
  447. | wurde.
  448. |
  449. LIBRARY EGSGfxBase BY-150 PROCEDURE CloseFont(font IN A0 : EFontPtr);
  450. |
  451. | PROCEDURE StdFont():EFontPtr;
  452. |
  453. | Die EGSBlit Library verfügt über einen speziellen Zeichensatz, der besonders
  454. | Schnell ausgegeben werden kann. Dieser Font (8x10 Punkte, nicht Prop.) sollte
  455. | immer verwendet werden, wenn eine schnelle Textausgabe benötigt wird.
  456. | Da er nicht mit OpenFont geöffnet werden kann, wird ein Handle auf ihn durch
  457. | 'StdFont' gegeben.
  458. |
  459. | Dieser Font darf auf keinen Fall an 'CloseFont' übergeben werden.
  460. |
  461. LIBRARY EGSGfxBase BY-156 PROCEDURE StdFont():EFontPtr;
  462. |
  463. | PROCEDURE InstallClipRegion(rast IN A0 : RastPortPtr;
  464. |                             rect IN A1 : ClipRectPtr);
  465. |
  466. | Clip-Regions sind Bereiche, die beschreiben wohin in einen RastPort Ausgaben
  467. | gemacht werden dürfen.
  468. |
  469. | Hat ein RastPort kein Clip-Region (nur bei solchen ohne Layer möglich), kann
  470. | es passieren, daß über die BitMap hinaus gezeichnet wird. Andererseits ist
  471. | Zeichnen ohne Clipping etwas schneller.
  472. |
  473. | Sitzt der RastPort auf einem Layer auf, wirkt eine zusätzliche Clip-Region
  474. | als Einschränkung des normalerweise rechteckigen Zeichenbereich.
  475. |
  476. | Die Clip-Region eines Rastports besteht aus einer Liste von ClipRects.
  477. | Diese Liste wird von der Library nicht verändert, darf also eine konstante
  478. | Liste sein.
  479. |
  480. | Bevor ein RastPort vernichtet wird, sollte die Clip-Region wieder entfernt
  481. | werden.
  482. |
  483. | Die Clip-Region darf nicht verändert werden, während sie am RastPort hängt.
  484. |
  485. LIBRARY EGSGfxBase BY-162 PROCEDURE InstallClipRegion(rast IN A0 : RastPortPtr;rect IN A1 : ClipRectPtr);
  486. |
  487. | PROCEDURE RemoveClipRegion(rast IN A0 : RastPortPtr):ClipRectPtr;
  488. |
  489. | Entfernt eine Liste von einem RastPort, und liefert sie zurück.
  490. |
  491. | Beispiel: Entfernen eines Teils aus der aktuellen Clip-Region
  492. |
  493. | ...
  494. |   InstallClipRegion(rast,AndRectRegion(RemoveClipRegion(rast)),
  495. |                          ClipRect:(left=20,top=20,right=120,bottom=120)'PTR));
  496. | ...
  497. |
  498. LIBRARY EGSGfxBase BY-168 PROCEDURE RemoveClipRegion(rast IN A0 : RastPortPtr):ClipRectPtr;
  499. |
  500. | PROCEDURE CreateRastPort(layer  IN A0 : LayerPtr;
  501. |                          screen IN A1 : EScreenPtr;
  502. |                          map    IN A2 : EBitMapPtr):RastPortPtr;
  503. |
  504. | Erzeugt ein Rastport zu den gegebenen Daten:
  505. |
  506. | Folgende vier Übergabe-Möglichkeiten existieren:
  507. |
  508. |  -layer=NIL,screen=NIL,map#NIL
  509. |
  510. |   Der RastPort sitzt auf einer BitMap auf. Es wird keine SoftMouse und kein
  511. |   Clipping berücksichtigt.
  512. |
  513. |  -layer=NIL,screen#NIL,map=NIL
  514. |
  515. |   Der RastPort sitzt auf dem Screen auf. Es wird die SoftMouse berücksichtigt.
  516. |   Es wird direkt auf die BitMap des Screens gezeichnet.
  517. |
  518. |  -layer#NIL,screen=NIL,map=NIL
  519. |
  520. |   Der RastPort sitzt auf dem Layer auf. Es wird Clipping aber keine SoftMouse
  521. |   berücksichtig.
  522. |
  523. |  -layer#NIL,screen#NIL,map=NIL
  524. |
  525. |   Der RastPort sitzt auf dem Layer und der Screen auf. Es wird sowohl Clipping
  526. |   als auch SoftMouse berücksichtigt.
  527. |
  528. | Es ist erlaubt für ein Objekt mehrere RastPorts zu benützen, um unabhängiger
  529. | zu arbeiten. Werden Layers benutzt, dürfen auch mehrere Tasks gleichzeitig
  530. | den selben RastPort benützen.
  531. |
  532. LIBRARY EGSGfxBase BY-174 PROCEDURE CreateRastPort(layer  IN A0 : LayerPtr;
  533.                                                    screen IN A1 : EScreenPtr;
  534.                                                    map    IN A2 : EBitMapPtr):RastPortPtr;
  535. |
  536. | PROCEDURE DeleteRastPort(rast IN A0 : RastPortPtr);
  537. |
  538. | Gibt den Speicher eines mit 'CreateRastPort' erzeugten RastPorts wieder frei.
  539. |
  540. LIBRARY EGSGfxBase BY-180 PROCEDURE DeleteRastPort(rast IN A0 : RastPortPtr);
  541.  
  542. LIBRARY EGSGfxBase BY-186 PROCEDURE SetFont(rast IN A0 : RastPortPtr;
  543.                                             font IN A1 : EFontPtr);
  544.  
  545. LIBRARY EGSGfxBase BY-192 PROCEDURE SetSoftStyle(rast  IN A0 : RastPortPtr;
  546.                                                  style IN D0,
  547.                                                  mask  IN D1 : FontStyleSet):FontStyleSet;
  548.  
  549.  
  550. LIBRARY EGSGfxBase BY-204 PROCEDURE SetMask(rast IN A0 : RastPortPtr;mask IN D0 : LONGSET);
  551.  
  552. LIBRARY EGSGfxBase BY-216 PROCEDURE FloodFill(rast IN A0 : RastPortPtr;
  553.                                               x    IN D0,
  554.                                               y    IN D1 : INTEGER;
  555.                                               mode IN D2 : BOOLEAN);
  556.  
  557. LIBRARY EGSGfxBase BY-246 PROCEDURE CheckRectangle(rast IN A0 : RastPortPtr;rect IN A1 : ClipRectPtr):BOOLEAN;
  558.  
  559. LIBRARY EGSGfxBase BY-252 PROCEDURE GetBoundingBox(rast IN A0 : RastPortPtr;rect IN A1 : ClipRectPtr):BOOLEAN;
  560.  
  561. LIBRARY EGSGfxBase BY-264
  562.    PROCEDURE CreateSubRastPort(super IN A0 : RastPortPtr;
  563.                                x     IN D0,
  564.                                y     IN D1,
  565.                                w     IN D2,
  566.                                h     IN D3 : INTEGER):RastPortPtr;
  567.  
  568. LIBRARY EGSGfxBase BY-270
  569.    PROCEDURE MoveSubRastPort(rast IN A0 : RastPortPtr;
  570.                              dx   IN D0,
  571.                              dy   IN D1 : INTEGER);
  572.  
  573. LIBRARY EGSGfxBase BY-276
  574.    PROCEDURE SizeSubRastPort(rast IN A0 : RastPortPtr;
  575.                              dx   IN D0,
  576.                              dy   IN D1 : INTEGER);
  577.  
  578. LIBRARY EGSGfxBase BY-282 PROCEDURE ZoomBitMapRastPort(src   IN A0 : EBitMapPtr;
  579.                                                        rast  IN A1 : RastPortPtr;
  580.                                                        xs    IN D0,
  581.                                                        ys    IN D1 : INTEGER;
  582.                                                        w     IN D2,
  583.                                                        h     IN D3 : INTEGER;
  584.                                                        xd    IN D4,
  585.                                                        yd    IN D5 : INTEGER;
  586.                                                        zoom  IN D6 : INTEGER);
  587.  
  588. LIBRARY EGSGfxBase BY-288 PROCEDURE ZoomFillMaskSeg(rast IN A0 : RastPortPtr;
  589.                                                     src  IN A1 : EBitMapPtr;
  590.                                                     xs   IN D0,
  591.                                                     ys   IN D1,
  592.                                                     w    IN D2,
  593.                                                     h    IN D3,
  594.                                                     xd   IN D4,
  595.                                                     yd   IN D5,
  596.                                                     zoom IN D6 : INTEGER);
  597.  
  598. LIBRARY EGSGfxBase BY -300
  599.   PROCEDURE SetLinePattern(rp IN A0 : RastPortPtr;patt IN D0 : CARDINAL);
  600.  
  601. LIBRARY EGSGfxBase BY -306
  602.   PROCEDURE SetAreaPattern(rp IN A0 : RastPortPtr;patt IN A1 : EGS.PatternPtr);
  603.  
  604. LIBRARY EGSGfxBase BY -312
  605.   PROCEDURE SetAreaMPattern(rp IN A0 : RastPortPtr;patt IN A1 : EGS.EBitMapPtr);
  606.  
  607.  
  608. |-312 SetAreaMPattern
  609.  
  610. END EGSGfx.
  611.  
  612.  
  613.  
  614.