// own interface
#import "Clock.h"
// private functions
static void renderHand( float col, float len, int minute )
{
PSgsave();
PSsetgray( col );
PStranslate( (float)31.0, (float)32.0 );
PSrotate( (float)( -6.0 * minute ) );
PSmoveto( (float)0.0, (float)0.0 );
PSrlineto( (float)0.0, len );
PSstroke();
PSgrestore();
}
// Clock implementations
@implementation Clock
- (id)initWithFrame: (NSRect)theFrame
{
NSRect f;
f.origin = theFrame.origin;
f.size.width = (float)64.0;
f.size.height = (float)64.0;
self = [super initWithFrame: f];
if( self ) {
background = [[NSImage imageNamed: @"clock"] copy];
return self;
}
return nil;
}
- (void)setSeconds: (int)s
{
seconds = s;
}
- (int)seconds
{
return seconds;
}
- (void)drawRect: (NSRect)rects
{
NSPoint p = NSZeroPoint;
PSgsave();
[background compositeToPoint: p operation: NSCompositeCopy];
renderHand( (float)0.333, (float)20.0, (int)(seconds renderHand( (float)0.0, (float)20.0, (int)(seconds / 60) );
renderHand( (float)0.0, (float)16.0, (int)(seconds / 3600) );
PSgrestore();
return;
}
@end