Drawing Pixels in Plan9

note, May 27, 2023, on Mitja Felicijan's blog

I have started exploring Plan9's graphics capabilities. This is a hello world alternative for drawing that draws a yellow square on a blue background.

More information:

Plan9 Howdy World!
// main.c
#include <u.h>
#include <libc.h>
#include <draw.h>
#include <cursor.h>

void
main()
{
  ulong co;
  Image *im, *bg;
  co = 0x0000FFFF;

  if (initdraw(nil, nil, argv0) < 0)
  {
    sysfatal("%s: %r", argv0);
  }

  im = allocimage(display, Rect(0, 0, 300, 300), RGB24, 0, DYellow);
  bg = allocimage(display, Rect(0, 0, 1, 1), RGB24, 1, co);

  if (im == nil || bg == nil)
  {
    sysfatal("not enough memory");
  }

  draw(screen, screen->r, bg, nil, ZP);
  draw(screen, screen->r, im, nil, Pt(-40, -40));

  flushimage(display, Refnone);

  // Wait 10 seconds before exiting.
  sleep(10000);

  exits(nil);
}

And then compile with mk (mkfile below):

# mkfile
</$objtype/mkfile

RC=/rc/bin
BIN=/$objtype/bin
MAN=/sys/man

main:
	$CC $CFLAGS main.c
	$LD $LDFLAGS -o main main.$O

And run with ./main. To exit the program, press Delete key (strange but this is the alternative for Ctrl+C).

This is very cool indeed!

Other notes

DateTitle
Install Plan9port on Linuxplan9
Write and read structs to/from files in Cc
Bulk thumbnails
Aerial photography of algae spotted on river Sava
Change Alt key to Win key under Xfce4
60's IBM Computers Commercial
Parse RSS feeds with Lua
Extend Lua with custom C functions using Clangc
Online radio streaming with MPV from terminal
Uninstall Ollama from a Linux box
10/GUI 10 Finger Multitouch User Interface
Currated list of Vim ALE linters
Push to multiple origins at once in Git
Sending signals to C programsc
Set color temperature of displays on i3