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
Sending signals to C programsc
Push to multiple origins at once in Git
Aerial photography of algae spotted on river Sava
Uninstall Ollama from a Linux box
Embedding resources into binary with Cc
Parse RSS feeds with Lua
Cache busting in Hugo
Run 9front in Qemuplan9
Sane default for Dungeon Crawl Stone Soup Online editiondcss
Male and female body proportion reference images3d
Alacritty open links with modifier
Use option key as meta in Alacritty under macOS
Bulk thumbnails
Execute not blocking async shell command in C#
Write and read structs to/from files in Cc