#import <appkit/appkit.h>
#import <assert.h>

/*******
 * Declare subclass of View object and add drawSelf method.
 *******/
@interface nugView : View  /* header */
{
}
- drawSelf:(NXRect *)rects :(int)rectcount;  /* new method for nugView */
@end

@implementation nugView    /* Code template */ 
- drawSelf:(NXRect *)rect :(int)cnt			 /* code for new method */
{
		int count;
		float currcolor;
		
		/*******
		 * Call postscript functions to draw into nugView window.  
		 * (Precede PostScript commands with PS and place arguments 
		 * in parentheses following the function). 
		 *******/
		PStranslate(300,300);
		PSmoveto(0,0);
		PSselectfont("Times-Roman", 40.0);

		for (count=15; count<360; count+=15)
		{
			currcolor=((float) count + 0.05)/ 360.0;
			PSsetgray(currcolor);
			PSgsave();
			PSrotate(count);
			PSmoveto(0,0);
			PSshow("VaTNug");
			PSgrestore();
		}

		PSsetgray(NX_BLACK);
		PSmoveto(0,0);
		PSselectfont("Times-BoldItalic", 60.0);
		PSshow("VaTNug News");
        return self;
}
@end

id nugobj;

void main()
{
        id nugwindow;
        NXRect aRect={{300.0, 300.0}, {800.0, 600.0}};	 

        [Application new];			/* message Application for new app */

        nugobj = [[nugView alloc] init];	/* instance of nugView */

        nugwindow = [[Window alloc] initContent:&aRect /* instance of Window */
                style:NX_RESIZEBARSTYLE
                backing:NX_BUFFERED
                buttonMask:NX_MINIATURIZEBUTTONMASK
                defer:NO];

        [nugwindow setContentView:nugobj];	/* contents of nugwindow=nugobj */
       	[nugwindow display];		/* message nugwindow to display itself */
		
        [nugwindow orderFront:nil];	/* have nugwindow become key window */
        [NXApp run];				/* run this application */
}
