- float vh = NSHeight(theRect);
- float vw = NSWidth(theRect);
-
- [_path autorelease];
- _path = [[NSBezierPath bezierPath] retain];
-
- [_path moveToPoint:NSMakePoint( 0.0, (vh - 24.0) )]; // first point
- [_path curveToPoint:NSMakePoint( 24.0, vh )
- controlPoint1:NSMakePoint( 0.0, (vh - 11.0) )
- controlPoint2:NSMakePoint( 11.0, vh )]; // top-left curve
- [_path lineToPoint:NSMakePoint( (vw - 24.0), vh )]; // top line
- [_path curveToPoint:NSMakePoint( vw, (vh - 24.0) )
- controlPoint1:NSMakePoint( (vw - 11.0), vh )
- controlPoint2:NSMakePoint( vw, (vh - 11.0) )]; // top-right curve
- [_path lineToPoint:NSMakePoint( vw, 24.0 )]; // right line
- [_path curveToPoint:NSMakePoint( (vw - 24.0), 0.0 )
- controlPoint1:NSMakePoint( vw, 11.0 )
- controlPoint2:NSMakePoint( (vw - 11.0), 0.0 )]; // bottom-right curve
- [_path lineToPoint:NSMakePoint( 24.0, 0.0 )]; // bottom line
- [_path curveToPoint:NSMakePoint( 0.0, 24.0 )
- controlPoint1:NSMakePoint( 11.0, 0.0 )
- controlPoint2:NSMakePoint( 0.0, 11.0 )]; // bottom-left curve
- [_path closePath]; // left line
-
- [[NSColor colorWithCalibratedWhite:0.0 alpha:0.15] set];
+ float vh = NSHeight(rect);
+ float vw = NSWidth(rect);
+ float indent = 0.0;
+
+ if ( (_mode == ITTSWBackgroundReadable) || (_mode == ITTSWBackgroundColored) ) {
+ indent = 2.0;
+ }
+
+ NSPoint pointA = NSMakePoint( ((vw - RADIUS) - indent) , (vh - indent) );
+ NSPoint pointB = NSMakePoint( (RADIUS + indent) , (vh - indent) );
+ NSPoint pointD = NSMakePoint( indent , (RADIUS + indent) );
+ NSPoint pointF = NSMakePoint( ((vw - RADIUS) - indent) , indent );
+ NSPoint pointH = NSMakePoint( (vw - indent) , ((vh - RADIUS) - indent) );
+
+ NSPoint ctrBC = NSMakePoint( (RADIUS + indent) , ((vh - RADIUS) - indent) );
+ NSPoint ctrDE = NSMakePoint( (RADIUS + indent) , (RADIUS + indent) );
+ NSPoint ctrFG = NSMakePoint( ((vw - RADIUS) - indent) , (RADIUS + indent) );
+ NSPoint ctrHA = NSMakePoint( ((vw - RADIUS) - indent) , ((vh - RADIUS) - indent) );
+
+ /*
+ * D E
+ * +------------------------+
+ * C | * ctrCD ctrEF * | F
+ * | |
+ * B | * ctrAB ctrGH * | G
+ * +------------------------+
+ * A H
+ */
+
+ [_path removeAllPoints];
+
+ [_path moveToPoint:pointA]; // first point
+ [_path lineToPoint:pointB]; // top line
+ [_path appendBezierPathWithArcWithCenter:ctrBC // top-left curve
+ radius:RADIUS
+ startAngle:90.0
+ endAngle:180.0];
+ [_path lineToPoint:pointD]; // left line
+ [_path appendBezierPathWithArcWithCenter:ctrDE // bottom-left curve
+ radius:RADIUS
+ startAngle:180.0
+ endAngle:270.0];
+ [_path lineToPoint:pointF]; // top line
+ [_path appendBezierPathWithArcWithCenter:ctrFG // top-right curve
+ radius:RADIUS
+ startAngle:270.0
+ endAngle:0.0];
+ [_path lineToPoint:pointH]; // right line
+ [_path appendBezierPathWithArcWithCenter:ctrHA // bottom-right curve
+ radius:RADIUS
+ startAngle:0.0
+ endAngle:90.0];
+
+ if ( _mode == ITTSWBackgroundApple ) {
+ [[NSColor colorWithCalibratedWhite:0.0 alpha:0.15] set];
+ } else if ( _mode == ITTSWBackgroundReadable ) {
+ [[NSColor colorWithCalibratedWhite:0.15 alpha:0.70] set];
+ } else if ( _mode == ITTSWBackgroundColored ) {
+ [_color set];
+ }
+