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
Male and female body proportion reference images3d
Sane defaults for tmux with more visible statusbar
Dungeon Crawl Stone Soup - New player guidedcss
Convert all MKV files into other formats
Extract lines from a file with sed
Grep to Less that maintain colors
Extending dte editor
Uninstall Ollama from a Linux box
Write ISO to USB Key
Display xterm color palette
Previews how man page written in Troff will look like
Aerial photography of algae spotted on river Sava
Cronjobs on Github with Github Actions
Compile drawterm on Fedora 38plan9
My brand new Plan9/9front desktopplan9