/* VMApp.m created by chaos on Tue 14-Jan-1997 */

#import "VMApp.h"

id	bgImage, nxImage;

@implementation VMApp:NSApplication

const char *swapName = {"/private/vm/swapfile"};

- init
{
    if ((self = [super init])) {
        [self setDelegate:self]; // so that we get NSApp delegation methods
    }
    return self;
}

-(void) applicationDidFinishLaunching: (NSNotification *)aNotification
{
    id aBundle = [NSBundle mainBundle];


    
    if (!bgImage) bgImage = [[NSImage alloc] initWithContentsOfFile: [aBundle pathForResource:@"tile" ofType:@"tiff"]];
    if (!nxImage) nxImage = [[NSImage alloc] initWithContentsOfFile:[aBundle pathForResource:@"NeXT" ofType:@"tiff"]];
    
    period = (NSTimeInterval)1;
    
    timer = [NSTimer scheduledTimerWithTimeInterval: period
	target:self selector:@selector(calcNow) userInfo:nil repeats:YES];

    [NSApp hide: self];
}


-(void) calcNow
{
    NSPoint aPoint= {0, 0};
    vm_statistics_data_t	vm_stats;
    float	all, angle;

    id	myImage = [bgImage copy];
    id	myColor = [NSColor colorWithDeviceRed: 0.0 green:0.0 blue:0.0 alpha:0.3];
    id	cheeseColor = [NSColor colorWithDeviceRed: 0.8 green:0.1 blue:0.1 alpha:1];


    if (vm_statistics(task_self(), &vm_stats) != KERN_SUCCESS) {
        //UGH!!
    }

    all = (float)(vm_stats.free_count
        + vm_stats.active_count
        + vm_stats.inactive_count
        + vm_stats.wire_count);
    angle = ((vm_stats.free_count * 360.0)/all);

    [myImage lockFocus];

//    [nxImage dissolveToPoint: aPoint fraction: 0.8];

    [myColor set];
    PSFilledCheese(8+3, 8-3, 48, 48, angle);

    [cheeseColor set];
//    PSLineWidth(2.5);
    PSFilledCheese(8, 8, 48, 48, angle);

    
    [myImage unlockFocus];

    [NSApp setApplicationIconImage: myImage];
}

-(void) stopApp: sender
{
    [timer invalidate];
    [timer release];

    [self setDelegate: nil];
    [self terminate: self];
}

@end
