/* ** ClockView.h ** ** Copyright (c) 2003 ** ** Author: Yen-Ju Chen ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "ClockView.h" @implementation ClockView - (id) initWithFrame: (NSRect) rect { self = [super initWithFrame: rect]; posHour = NSMakePoint(0,0); posMinute = NSMakePoint(0,0); return self; } - (void) drawRect: (NSRect) frame { NSPoint origin = NSMakePoint(frame.size.width/2, frame.size.height/2); NSBezierPath *bp = [NSBezierPath bezierPathWithRect: [self bounds]]; [[NSColor yellowColor] set]; [bp fill]; bp = [NSBezierPath bezierPathWithRect: NSMakeRect(1, 1, frame.size.width-2, frame.size.height-2)]; [[NSColor blackColor] set]; [bp stroke]; bp = [NSBezierPath bezierPath]; [bp setLineWidth: 3]; [bp moveToPoint: origin]; [bp relativeLineToPoint: posHour]; [bp stroke]; [bp setLineWidth: 1]; [bp moveToPoint: origin]; [bp relativeLineToPoint: posMinute]; [bp stroke]; } - (void) setDate: (NSCalendarDate *) date; { int hour = [date hourOfDay]; int minute = [date minuteOfHour]; float hour_x = 40*sin((M_PI*hour/6)+(M_PI*minute/360)); float hour_y = 40*cos((M_PI*hour/6)+(M_PI*minute/360)); float minute_x = 60*sin(M_PI*minute/30); float minute_y = 60*cos(M_PI*minute/30); posHour = NSMakePoint(hour_x, hour_y); posMinute = NSMakePoint(minute_x, minute_y); [self setNeedsDisplay: YES]; } @end