[comp.sys.next] Whanted: Graphics Example for NeXT Machine

paul@manray.asd.sgi.com (Paul Haeberli) (09/26/90)

What follows is a 53 line paint program that compiles
and runs on an IRIS workstation.  Could someone put
together a simple example program for the NeXT machine
that does something similar?

I think this might be an instructive example for people
who want to write simple graphics applications for the 
NeXT machine.

Thanks for your help!!!

paul haeberli
415-962-3665


/*
 *	dinkypaint - 
 *		A trivial paint program for IRIS workstations. 
 *
 *	to make this:
 *		
 *		cc dinkypaint.c -o dinkypaint -lgl_s		
 *
 *			paul haeberli - 1990
 */
#include "gl.h"
#include "device.h"

main()
{
    int xpos, ypos;

    keepaspect(1,1);
    winopen("paint");
    RGBmode();
    gconfig();
    RGBcolor(200,200,200);
    clear();
    RGBcolor(0,0,0);
    qdevice(LEFTMOUSE);
    qdevice(MIDDLEMOUSE);
    while(1) {
	if(getbutton(LEFTMOUSE)) {	/* if leftmouse down, paint */
	    getmousepos(&xpos,&ypos);
	    RGBcolor(0,0,0);
	    circfi(xpos,ypos,5);
	}
	if(getbutton(MIDDLEMOUSE)) {	/* if middle button down clear */
	    RGBcolor(200,200,200);
	    clear();
	}
    }
}

getmousepos(x,y)
int *x, *y;
{
    short devs[2];
    short vals[2];
    int xorg, yorg;

    getorigin(&xorg,&yorg);	/* get origin of window */
    devs[0] = MOUSEX;
    devs[1] = MOUSEY;
    getdev(2,devs,vals);	/* read mouse pos atomically */ 
    *x = vals[0]-xorg;
    *y = vals[1]-yorg;
}