Topic : TOS - das Betriebssystem Author : Version : tos.hyp (5. März 2013) Subject : Programmieren/Atari Nodes : 3001 Index Size : 93602 HCP-Version : 5 Compiled on : Atari @charset : atarist @lang : @default : Titel @help : @options : +g -i -s +x +zz -t4 @width : 70 View Ref-File6.11 Filled polygon TOS Name: »Filled polygon« Line-A Nummer: $A006 Binding: Bindings für filled_polygon Beschreibung: Diese Line-A Funktion zeichnet eine Zeile eine ausgefüllten Polygons durch Aufrufe der Horizontal line Funktion. Zum Zeichnen des gesamten Polygons muß diese Funktion für jede mögliche Y-Koordinate aufgerufen werden. Zusätzlich besteht wie bei Filled rectangle die Möglichkeit, das Zeichnen des Rechtecks nur in einem zusätzlich übergebenen Clip-Bereich zuzulassen. Sämtliche Punkte des Polygons werden in dem Feld ptsin übergeben, die Anzahl der Punkte steht im zweiten Element des contrl Feldes. In C steht damit in contrl[1] die Anzahl Punkte, ptsin[0] die X-Koordinate des ersten Punkts, ptsin[1] die Y-Koordinate des ersten Punkts, ptsin[2] die X-Koordinate des zweiten Punkts, ... Der letzte Punkt in ptsin muß wieder der erste Punkt sein, damit das Polygon geschlossen ist! Die Y-Koordinate der zu zeichnenden Zeile wird in dem Line-A Parameterblock in y1 übergeben. Die folgenden Line-A Variablen werden benutzt: Variable Bedeutung y1 Y-Koordinate der zu zeichnenden Zeile. fg_bp_1 Bitwert der ersten Plane für die Farbe, mit der gefüllt werden soll. fg_bp_2 Bitwert der zweiten Plane (nur niedrige oder mittlere Auflösung). fg_bp_3 Bitwert der dritten Plane (nur niedrige Auflösung). fg_bp_4 Bitwert der vierten Plane (nur niedrige Auflösung). 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. 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. Das Binding von TC übergibt Linienmuster, Schreibmodus und Farbe nicht an die filled_polygon() Funktion, sondern benutzt separate Funktionen set_fg_bp(), set_wrt_mode(), set_pattern() und set_clipping() zum Setzen der Parameter in dem Line-A Parameterblock. Ergebnis: Die Funktion liefert keinen Returnwert. Verfügbar: Alle TOS-Versionen. Querverweis: Binding Horizontal line Filled rectangle