#import "ITGrayRoundedView.h" @implementation ITGrayRoundedView - (id)initWithFrame:(NSRect)frameRect { if ( (self = [super initWithFrame:frameRect]) ) { _path = [[NSBezierPath bezierPath] retain]; } return self; } - (void)drawRect:(NSRect)theRect { float vh = NSHeight(theRect); float vw = NSWidth(theRect); NSPoint pointA = NSMakePoint( 24.0 , 0.0 ); // NSPoint pointB = NSMakePoint( 0.0 , 24.0 ); reference NSPoint pointC = NSMakePoint( 0.0 , (vh - 24.0) ); // NSPoint pointD = NSMakePoint( 24.0 , vh ); reference NSPoint pointE = NSMakePoint( (vw - 24.0) , vh ); // NSPoint pointF = NSMakePoint( vw , (vh - 24.0) ); reference NSPoint pointG = NSMakePoint( vw , 24.0 ); // NSPoint pointH = NSMakePoint( (vw - 24.0) , 0.0 ); reference NSPoint ctrAB = NSMakePoint( 24.0 , 24.0 ); NSPoint ctrCD = NSMakePoint( 24.0 , (vh - 24.0) ); NSPoint ctrEF = NSMakePoint( (vw - 24.0) , (vh - 24.0) ); NSPoint ctrGH = NSMakePoint( (vw - 24.0) , 24.0 ); /* * D E * +------------------------+ * C | * ctrCD ctrEF * | F * | | * B | * ctrAB ctrGH * | G * +------------------------+ * A H */ [_path autorelease]; _path = [[NSBezierPath bezierPath] retain]; [path moveToPoint:pointA]; // first point [path appendBezierPathWithArcWithCenter:ctrAB // bottom-left curve radius:24.0 startAngle:90.0 endAngle:180.0]; [path lineToPoint:pointC]; // left line [path appendBezierPathWithArcWithCenter:ctrCD // top-left curve radius:24.0 startAngle:180.0 endAngle:270.0]; [path lineToPoint:pointE]; // top line [path appendBezierPathWithArcWithCenter:ctrEF // top-right curve radius:24.0 startAngle:270.0 endAngle:0.0]; [path lineToPoint:pointG]; // right line [path appendBezierPathWithArcWithCenter:ctrGH // bottom-right curve radius:24.0 startAngle:0.0 endAngle:90.0]; [path lineToPoint:pointA]; // right line [[NSColor colorWithCalibratedWhite:0.0 alpha:0.15] set]; [_path fill]; } - (BOOL)isOpaque { return NO; } @end