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
Parse RSS feeds with Lua
Install Plan9port on Linuxplan9
Change Alt key to Win key under Xfce4
Extract lines from a file with sed
Development environments with Nix
Fix screen tearing on Debian 12 Xorg and i3
Add lazy loading of images in Jekyll posts
Write ISO to USB Key
Cache busting in Hugo
Drawing Pixels in Plan9plan9
10/GUI 10 Finger Multitouch User Interface
Change permissions of matching files recursively
Simple presentations with Markdown
Take a screenshot in Plan9plan9
Aerial photography of algae spotted on river Sava