HomeLine-ACopy raster formVDI

6.20 Seedfill

Name: »Seedfill«
Line-A Nummer: $A00F
Binding: Bindings für seed_fill
Beschreibung: Diese Line-A Funktion füllt einen Bereich mit einer Farbe aus und entspricht damit der VDI Funktion v_contourfill.

Im ersten Word von ptsin (ptsin[0] in C) wird die X-Koordinate und im zweiten Word von ptsin (ptsin[1] in C) wird die Y-Koordinate des Startpunkts übergeben. In das erste Wort von intin (intin[0] in C) wird das Mode-Wort geschrieben. Ist das Mode-Wort größer 0, gibt es die Farbe der Umgrenzung an, bis zu der gefüllt werden soll. Ist das Mode-Wort kleiner 0, besteht die Umgenzung aus allen Pixeln, die nicht die Farbe des Startpunkts haben.

Die folgenden Line-A Variablen werden benutzt:
Variable Bedeutung
   
fill_abort Dies ist die Adresse eine Funktion, die am Ende jeder Zeile aufgerufen wird. Liefert diese Funktion in D0 den Wert 0, wird mit dem Füllen fortgefahren, ansonsten abgebrochen.
patptr Zeiger auf ein Feld mit 16 Bit Linienmustern.
patmsk Anzahl Linienmuster - 1. In Abhängigkeit von der y-Koordinate wird nun aus dem Feld mit den Linienmustern eines ausgewählt. Der Index des verwendeten Linienmusters läßt sich durch (y mod (patmsk + 1)) berechnen. Durch die Angabe mehrerer Linienmuster und mehrmaliges Aufrufen dieser Funktion für aufeinanderfolgende Zeilen lassen sich leicht auch komplexe Muster zeichnen.
multifill 0, wenn das Muster nur eine Ebene hat und 1 für mehrere Ebenen.
wrt_mode Schreibmodes, es sind die folgenden Modie möglich:
REPLACE 0 Replace
TRANS 1 Transparent (OR)
XOR 2 Inverse (XOR)
INVERS 3 Inverse Transparent (XOR mit not(LN_MASK))
clip 1 wenn Clipping gewünscht wird, 0 sonst.
xmn_clip X-Koordinate der linken oberen Ecke des Clipping Bereichs, wenn Clipping eingeschaltet ist.
ymn_clip Y-Koordinate der linken oberen Ecke des Clipping Bereichs, wenn Clipping eingeschaltet ist.
xmx_clip X-Koordinate der rechten unteren Ecke des Clipping Bereichs, wenn Clipping eingeschaltet ist.
ymx_clip Y-Koordinate der rechten unteren Ecke des Clipping Bereichs, wenn Clipping eingeschaltet ist.
Ergebnis: Die Funktion liefert keinen Returnwert.
Verfügbar: Alle TOS-Versionen.
Querverweis: Binding   v_contourfill

6.20.1 Bindings für seed_fill

Pure-C: void seed_fill( void ); /* WARNING: NOT supported ! */
Assembler: Es wird angenommen, daß das intin und ptsin Feld schon in den Line-A Parameterblock eingetragen wurde.
movem.l   D0-D2/A0-A2,-(A7)  ; Register retten
move.l    pParamblk,A0       ; Zeiger Parameterblock LINEA
move.l    (8,A0),A1          ; Adresse intin nach A1
move.w    mode_wort,(A1)     ; Mode-Wort nach intin[0]
move.l    (12,A0),A1         ; Adresse ptsin nach A1
move.w    x,(A1)             ; X-Koordinate nach ptsin[0]
move.w    y,(2,A1)           ; Y-Koordinate nach ptsin[1]
move.w    wmode,(36,A0)      ; Writemode in LINEA.wrt_mode
move.w    patptr,(44,A0)     ; Linienmuster in LINEA.patptr
move.w    patmsk,(48,A0)     ; Anzahl Muster in LINEA.patmsk
move.w    multifill,(50,A0)  ; Ebenenflag in LINEA.multifill
move.w    mode,(54,A0)       ; Clipmode in LINEA.clip
move.w    cx1,(56,A0)        ; linke obere Clip-Ecke, X-Koordinate in LINEA.xmn_clip
move.w    cy1,(58,A0)        ; linke obere Clip-Ecke, Y-Koordinate in LINEA.ymn_clip
move.w    cx2,(60,A0)        ; rechte untere Clip-Ecke, X-Koordinate in LINEA.xmx_clip
move.w    cy2,(62,A0)        ; rechte untere Clip-Ecke, Y-Koordinate in LINEA.ymx_clip
move.l    fill_abort,(118,A0); Abbruchfunktion nach LINEA.fill_abort
dc.w      $A00F              ; Line-A Opcode
movem.l   (A7)+,D0-D2/A0-A2  ; Register restaurieren

HomeLine-ACopy raster formVDI