HomeLine-ADraw spriteSeedfill

6.19 Copy raster form

Name: »Copy raster form«
Line-A Nummer: $A00E
Binding: Bindings für copy_raster
Beschreibung: Diese Line-A Funktion entspricht exakt der VDI Funktion Copy Raster Opaque. Lediglich einige Felder des contrl Feld werden nicht gesetzt, da keine VDI Workstation geöffnet sein muß. Deshalb sei auf die Dokumentation der VDI Funktion verwiesen. Die folgenden Line-A Variablen werden benutzt:
Variable Bedeutung
   
patptr kann einen Zeiger auf ein Muster enthalten.
multifill 0, wenn das Muster nur eine Ebene hat und 1 für mehrere Ebenen.
copy_tran 0 für opaques kopieren (Quelle und Ziel haben die gleiche Anzahl Farbebenen) und 1 für transparentes kopieren (Ziel wird in eine Farbebene kopiert) gesetzt.


Hinweis: Das Binding von Turbo C unterstützt diese Funktion nicht.
Ergebnis: Die Funktion liefert keinen Returnwert.
Verfügbar: Alle TOS-Versionen.
Querverweis: Binding   vro_cpyfm

6.19.1 Bindings für copy_raster

Pure-C: void copy_raster( void ); /* WARNING: NOT supported ! */
Assembler:
movem.l   D0-D2/A0-A2,-(A7)  ; Register retten
move.l    pParamblk,A0       ; Zeiger Parameterblock LINEA
move.l    (4,A0),A1          ; contrl nach A1
move.l    s_mfdb,D0          ; Adresse Source MFDB nach D0
move.w    D0,(8,A1)          ; Unteres Wort Source MFDB nach contrl[8]
lsr.l     #8,D0              ; Oberes Wort von D0 ...
lsr.l     #8,D0              ; ... auf unteres Wort schieben
move.w    D0,(7,A1)          ; Oberes Wort Source MFDB nach contrl[7]
move.l    d_mfdb,D0          ; Adresse Ziel MFDB nach D0
move.w    D0,(10,A1)         ; Unteres Wort Ziel MFDB nach contrl[10]
lsr.l     #8,D0              ; Oberes Wort von D0 ...
lsr.l     #8,D0              ; ... auf unteres Wort schieben
move.w    D0,(9,A1)          ; Oberes Wort Ziel MFDB nach contrl[9]
move.l    intin,(8,A0)       ; contrl in LINEA.contrl
move.l    (8,A0),-(A7)       ; alten Wert des intin Feldes retten
move.l    intin,(8,A0)       ; intin in LINEA.intin
move.l    (12,A0),-(A7)      ; alten Wert des ptsin Feldes retten
move.l    intin,(8,A0)       ; ptsin in LINEA.ptsin
move.w    patptr,(44,A0)     ; Linienmuster in LINEA.patptr
move.w    multifill,(50,A0)  ; Ebenenflag in LINEA.multifill
move.w    copy_tran,(116,A0) ; Kopiermodus in LINEA.copy_tran
dc.w      $A00E              ; Line-A Opcode
move.l    pParamblk,A0       ; Zeiger Parameterblock LINEA
move.l    (A7)+,(12,A0)      ; alten Wert des ptsin Feldes restaurieren
move.l    (A7)+,(8,A0)       ; alten Wert des intin Feldes restaurieren
movem.l   (A7)+,D0-D2/A0-A2  ; Register restaurieren

HomeLine-ADraw spriteSeedfill