Oberon Object Tiler — Link
For the modern developer, studying the Oberon Object Tiler Link offers a refreshing contrast to bloated GUI frameworks. It reminds us that sometimes, a linked list and a clear contract between objects are all you need to tile the display.
In this code, the is explicitly the next field. The TraverseAndDraw procedure links through the object chain via cur := cur.next . This is the canonical meaning. The "Link" as a Command: Gadgets and System3 Later versions of Oberon (specifically System3 and Gadgets framework) extended the Tiler concept. Here, Link also became a command invoked in the Oberon text interface.
PROCEDURE TraverseAndDraw*(clip: Frame); VAR cur: Object; BEGIN cur := root; WHILE cur # NIL DO IF Overlaps(cur, clip) THEN cur.draw(cur, clip) END; cur := cur.next (* Follow the Link *) END END TraverseAndDraw; END Tiler. oberon object tiler link
PROCEDURE Link*(obj: Object); BEGIN obj.next := root; root := obj END Link;
Graphics in classic Oberon were not bitmap-centric. Instead, Oberon relied on a display model built from (lines, rectangles, text frames, and raster images). These objects were lightweight and managed by a subsystem known as the Object Tiler . The Role of the Tiler in Oberon’s Graphics Engine In traditional bitmap graphics, a "tiler" breaks a large image into smaller tiles for memory management. In Oberon, however, the concept is higher-level. For the modern developer, studying the Oberon Object
Tiler.Link ^ The caret ( ^ ) represented the current selection. This command would insert the selected object into the global tiler chain, making it appear on screen. Conversely, Tiler.Unlink ^ removed it.
In the annals of computing history, certain projects stand as monuments to what might have been. Oberon is one such gem. Developed by Niklaus Wirth and his team at ETH Zurich in the late 1980s, the Oberon operating system was a visionary exercise in minimalism, object-orientation, and textual command abstraction. Yet, within this austere environment exists a curious artifact: the Object Tiler Link . The TraverseAndDraw procedure links through the object chain
A user could select a graphic object (say, a button or a drawing) and execute: