Das Modul scanline besteht aus den beiden Funktionen scanline und init_scanline. Die Funktion init_scanline reserviert den notwendigen Speicher und initialisiert die Datenstrukturen. scanline ist die eigenliche Kernfunktion: Sie erstellt aus der Polygon- und Punktstruktur eine Kantenliste, aus dieser eine Spantabelle und daraus wird dann die Bitmap gezeichnet. scanline ruft die Funktionen aus den Modulen lists und scanline_functions auf.
Das Modul lists besteht aus den Funktionen update_eventtable, Add_edge_to_list, Remove_edge_from_list, Pseudo_corners sowie aus der Funktion Search_partner. Diese Funktionen werden von der Funktion scanline aus dem Modul scanline aufgerufen. update_eventtable erstellt die Eventtabelle: alle Punkte der Szene werden in eine vertikale Liste eingetragen, Punkte oberhalb des Bildschirmausschnittes werden auf die obere Bildschirmgrenze projiziert. Add_edge_to_list fügt eine Kante zur aktuellen Kantenliste hinzu. Remove_edge_from_list entfernt eine Kante aus der Liste. Pseudo_corners sucht Schnittpunkte einer Kante mit den aktuell eingetragenen und trägt die gefundenen Schnittpunkte in die Eventtabelle ein. Search_partner sucht für eine gegebene Kante die entsprechende Partnerkante des gleichen Polygons.
Das Modul scanline_functions besteht aus den Funktionen
get_neighbores, Get_x_of_edge, Get_Increment und
is_in_front. Diese Funktionen werden aus den Modulen
scanline und lists aufgerufen. get_neighbores sucht zu
einem Punkt eines gegebenen Polygons seine beiden Nachbarn.
Get_x_of_edge berechnet den X-Wert einer Kante an einem gegebenen
Y-Wert. Get_Increment berechnet den Increment einer Kante.
is_in_front bestimmt, welche Kante an einer gegebenen
Bildschirmkoordinate näher am Beobachter ist.