Getting things in order for the bigger stuff...
[ITKit.git] / ITTSWBackgroundView.m
index baa0cba..f7343ed 100755 (executable)
@@ -3,31 +3,71 @@
 
 @implementation ITGrayRoundedView
 
+- (id)initWithFrame:(NSRect)frameRect
+{
+    if ( (self = [super initWithFrame:frameRect]) ) {
+        _path = [[NSBezierPath bezierPath] retain];
+    }
+    
+    return self;
+}
+
 - (void)drawRect:(NSRect)theRect
 {
-    NSBezierPath *path = [NSBezierPath bezierPath];
     float vh = NSHeight(theRect);
     float vw = NSWidth(theRect);
-    [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
+    
+    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];
+    [_path fill];
 }
 
 - (BOOL)isOpaque