void draw(Image*, Rectangle, Image*, Image*, Point);
Point runestring(Image*, Point, Image*, Point, Font*, Rune*);
int runestringwidth(Font*, Rune*);
int flushimage(Display*, int);
int getwindow(Display*, int);
int initdraw(void(*)(Display*, char*), char*)
Image* allocimage(Display*, Rectangle, ulong, int, ulong)
Mousectl* initmouse(char*, Image*);
int readmouse(Mousectl*);
The interface is mostly unchanged. The most significant change is that the Plan B library steals the “conneciton” to the graphics device (see term(4) for information of such device). This means that if several processes are using graphics on the same terminal box, only the first one must initialize the graphics library.
As a consequence, there is no need to terminate the connection, because there is no connection in the Plan B version. The terminal device releases any previously allocated resource before accepting initialization from a newly arrived process.
Several routines using files/file descriptors in Plan 9 have been changed to use box names/constraints. Routines converting formats (images) operate on memory buffers and not of file descriptors.
Fonts are placed under the
/port/lib/font directory in Plan B. The distribution does not contain the font hierarchy, which can be easily copied/bound from a nearby Plan 9 distribution.
Regarding documentation bugs, guess which manual page should be completed?