# Beispiele für fdraw mit prozeduralen Generatoren # in der Sprache awk. # reinhard@finalmedia.de # Thu May 14 11:19:17 AM CEST 2026 # Public Domain # fdraw beziehen und bauen wget https://finalmedia.de/code/fdraw.tar.gz tar xvfz fdraw.tar.gz cd fdraw make cp ./fdraw /usr/bin/fdraw cd # Eine Named Pipe in der Ramdisk erstellen mkfifo /dev/shm/videocmd # Stream starten (bleibt ewig im Hintergrund offen und liest die named pipe) export SCREEN_WIDTH=1920 export SCREEN_HEIGHT=1080 export SCREEN_FPS=30 tail -F /dev/shm/videocmd | fdraw | ffplay -f rawvideo -pixel_format rgba -video_size 1920x1080 -framerate 30 -i - # dann kann man nun in einem anderen Terminal # die fdraw Befehle nach /dev/shm/videocmd pipen # Hier prozedurales Beispiele wget https://finalmedia.de/code/fdraw/barnsley.awk gawk -v width=1920 -v height=1080 -f barnsley.awk > /dev/shm/videocmd wget https://finalmedia.de/code/fdraw/torus.awk gawk -v width=1920 -v height=1080 -f torus.awk > /dev/shm/videocmd wget https://finalmedia.de/code/fdraw/fire.awk gawk -v width=1920 -v height=1080 -f fire.awk > /dev/shm/videocmd wget https://finalmedia.de/code/fdraw/starfield.awk gawk -v width=1920 -v height=1080 -f starfield.awk > /dev/shm/videocmd wget https://finalmedia.de/code/fdraw/plasma.awk gawk -v width=1920 -v height=1080 -f plasma.awk > /dev/shm/videocmd # Du kannst immer in stdout sehen, da es ja nur die # fdraw befehle als ascii sequenzen absetzt # fdraw Input Code Reference Befehle in fdraw sind linebased ascii char. dezimal werte. das erste zeichen einer zeile ist immer der befehl. cmd argumente name description ----------------------------------------------------------------------------------- c r g b color Setzt die Zeichenfarbe nach R G B m x y move Bewegt den Zeichencursor zu gewünschten Koordinaten r dx dy rect Zeichnet ein Rechteck p x y r g b pixel Zeichnet exakt einen Pixel an x y in Farbe r g b s n sleep Wartet angegebene Anzahl an Microsekunden o ox oy offset Definiert globalen Offset für Zeichenoperationen Befehle und Parameter/Argumente werden durch ein Leerzeichen getrennt. Alle Argumente MÜSSEN postive Ganzzahlen (integer) sein. Beispiele: c 140 20 0 Wechselt zur Farbe rot m 20 80 Wechselt zu den Koordinaten x=20 und y=80 r 10 10 Zeichnet ein Quadrat 10x10 px r 10 40 Zeichnet ein Rechteck 10px breit und 40px hoch s 50000 Wartet 50 Millisekunden (für Animationen) p 23 42 164 163 255 Zeichnet einen hellblauen Pixel an x=23 y=42 o 50 100 Definiert einen globalen Offset von x=50 y=100 Gerade das definieren eines globalen offsets ermöglicht das verschieben eine frames, ohne dessen eigene steuersequenzen verändern zu müssen. Siehe daher auch die Tools charforce, intrange etc. auf https://finalmedia.de/code/ die wunderbar in diese Kette passen.