Logo Search packages:      
Sourcecode: etoile version File versions  Download package

GSDrawFunctions.m

#include "GSDrawFunctions.h"

@implementation GSDrawFunctions (theme)

/*
+ (NSRect) drawButton: (NSRect)border : (NSRect)clip
{ 
      NSBezierPath* path = [NSBezierPath bezierPath];
      NSRect r = NSMakeRect (border.origin.x + 1, border.origin.y +1, border.size.width -=2, border.size.height -=2);
      [path appendBezierPathWithRect: r];
      [[NSColor colorWithCalibratedRed: 0.3 green: 0.3 blue: 0.4 alpha: 0.8] set];
      [path setLineWidth: 1.5];
      [path stroke];
}

+ (NSRect) drawDarkButton: (NSRect)border : (NSRect)clip
{ 
      NSBezierPath* path = [NSBezierPath bezierPath];
      NSRect r = NSMakeRect (border.origin.x + 1, border.origin.y +1, border.size.width -=2, border.size.height -=2);
      //[path appendBezierPathWithRoundedRectangle: r withRadius: 8.0];
      [path appendBezierPathWithRect: r];
      [[NSColor colorWithCalibratedRed: 0.3 green: 0.3 blue: 0.4 alpha: 0.8] set];
      [path setLineWidth: 1.5];
      [path stroke];
}
*/

- (NSRect) drawGrayBezelRound: (NSRect)border : (NSRect)clip
{ 
      NSBezierPath* path = [NSBezierPath bezierPath];
      NSBezierPath* path2 = [NSBezierPath bezierPath];
      NSBezierPath* inside = [NSBezierPath bezierPath];
      
      NSRect r = NSMakeRect (border.origin.x + 1, border.origin.y +3, border.size.width -4, border.size.height -4);
      NSRect r2 = NSMakeRect (border.origin.x + 3, border.origin.y +1, border.size.width -4, border.size.height -4);
      NSRect r3 = NSMakeRect (border.origin.x + 2, border.origin.y +2, border.size.width -4, border.size.height -4);
      float radius = 8;
      if ((border.size.height < 20) || (border.size.width < 20)) { radius = 4; }
      if ((border.size.height < 10) || (border.size.width < 10)) { radius = 2; }
      [path appendBezierPathWithRoundedRectangle: r withRadius: radius];
      [path2 appendBezierPathWithRoundedRectangle: r2 withRadius: radius];
      [inside appendBezierPathWithRoundedRectangle: r3 withRadius: radius];
      [[NSColor colorWithCalibratedRed: 0.3 green: 0.3 blue: 0.4 alpha: 0.8] set];
      [path setLineWidth: 1.5];
      [path2 setLineWidth: 2.5];
      [[NSColor colorWithCalibratedRed: 1.0 green: 1.0 blue: 1.0 alpha: 0.7] set];
      [path2 stroke];
      [[NSColor blackColor] set];
      [path stroke];
      [[NSColor windowBackgroundColor] set];
      [inside fill];
      return r3;
}
- (NSRect) drawGrayBezel: (NSRect)border : (NSRect)clip
{ 
      NSBezierPath* path = [NSBezierPath bezierPath];
      NSBezierPath* path2 = [NSBezierPath bezierPath];
      NSBezierPath* inside = [NSBezierPath bezierPath];
      
      NSRect r = NSMakeRect (border.origin.x + 1, border.origin.y +3, border.size.width -4, border.size.height -4);
      NSRect r2 = NSMakeRect (border.origin.x + 3, border.origin.y +1, border.size.width -4, border.size.height -4);
      NSRect r3 = NSMakeRect (border.origin.x + 2, border.origin.y +2, border.size.width -4, border.size.height -4);
      [path appendBezierPathWithRect: r];
      [path2 appendBezierPathWithRect: r2];
      [inside appendBezierPathWithRect: r3];
      [[NSColor colorWithCalibratedRed: 0.3 green: 0.3 blue: 0.4 alpha: 0.8] set];
      [path setLineWidth: 1.5];
      [path2 setLineWidth: 2.5];
      [[NSColor colorWithCalibratedRed: 1.0 green: 1.0 blue: 1.0 alpha: 0.7] set];
      [path2 stroke];
      [[NSColor blackColor] set];
      [path stroke];
      [[NSColor windowBackgroundColor] set];
      [inside fill];
      return r3;
}
- (NSRect) drawGroove: (NSRect)border : (NSRect)clip
{ 
      [THEME drawBox: border on: self];
      /*
      NSBezierPath* path = [NSBezierPath bezierPath];
      NSBezierPath* path2 = [NSBezierPath bezierPath];
      NSRect r = NSMakeRect (border.origin.x + 1, border.origin.y +3, border.size.width -4, border.size.height -4);
      NSRect r2 = NSMakeRect (border.origin.x + 3, border.origin.y +1, border.size.width -4, border.size.height -4);
      float radius = 8;
      if ((border.size.height < 20) || (border.size.width < 20)) { radius = 4; }
      if ((border.size.height < 10) || (border.size.width < 10)) { radius = 2; }
      [path appendBezierPathWithRoundedRectangle: r withRadius: radius];
      [path2 appendBezierPathWithRoundedRectangle: r2 withRadius: radius];
      [[NSColor colorWithCalibratedRed: 0.3 green: 0.3 blue: 0.4 alpha: 0.8] set];
      [path setLineWidth: 1.5];
      [path2 setLineWidth: 2.5];
      [[NSColor colorWithCalibratedRed: 1.0 green: 1.0 blue: 1.0 alpha: 0.5] set];
      [path2 stroke];
      [[NSColor blackColor] set];
      [path stroke];
      */
}

////

static NSColor* browserHeaderTextColor;

- (NSColor*) browserHeaderTextColor 
{
      if (browserHeaderTextColor == nil)
      {
            browserHeaderTextColor = [GraphicToolbox readColorFromImage: 
                  [NSImage imageNamed: @"BrowserHeader/BrowserHeader-textcolor.tiff"]];
            [browserHeaderTextColor retain];
      }
      return browserHeaderTextColor;
}

static CLCompositor* myBrowserHeader;

- (void) drawBrowserHeaderInRect: (NSRect) frame
{

      if (myBrowserHeader == nil)
      {
            myBrowserHeader = [CLHBoxCompositor new];
            [myBrowserHeader setName: @"browserHeader"];
            [myBrowserHeader addImage: [NSImage imageNamed: @"BrowserHeader/BrowserHeader-caps.tiff"] named: @"caps"];
            [myBrowserHeader addImage: [NSImage imageNamed: @"BrowserHeader/BrowserHeader-fill.tiff"] named: @"fill"];
      }
      [myBrowserHeader drawInRect: frame];
/*
      NSImage* fill = [NSImage imageNamed: @"ListHeader/ListHeader-fill-unselected.tiff"];
      NSSize fillSize = NSMakeSize ([fill size].width, frame.size.height);
      [fill setScalesWhenResized: YES];
      [fill setSize: fillSize];
      [GraphicToolbox fillHorizontalRect: frame withImage: fill];
      NSGraphicsContext     *ctxt = GSCurrentContext();
      DPSsetlinewidth (ctxt, 1);
      [[NSColor colorWithCalibratedRed: 0.6 green: 0.6 blue: 0.6 alpha: 1.0] set];
      DPSrectstroke (ctxt, frame.origin.x, frame.origin.y, frame.size.width, frame.size.height);
*/
}

- (float) ListHeaderHeight
{
      return [[NSImage imageNamed: @"ListHeader/ListHeader-fill-unselected.tiff"] size].height;
}

- (void) drawTableHeaderCornerInRect: (NSRect) frame
{
      NSImage* fill = [NSImage imageNamed: @"ListHeader/ListHeader-corner.tiff"];
      NSSize fillSize = NSMakeSize ([fill size].width, frame.size.height);
      [fill setScalesWhenResized: YES];
      [fill setSize: fillSize];
      [GraphicToolbox fillHorizontalRect: frame withImage: fill];
}

- (void) drawTableHeaderInRect: (NSRect) frame
{
      NSImage* fill = [NSImage imageNamed: @"ListHeader/ListHeader-fill-unselected.tiff"];
      NSSize fillSize = NSMakeSize ([fill size].width, frame.size.height);
      [fill setScalesWhenResized: YES];
      [fill setSize: fillSize];
      [GraphicToolbox fillHorizontalRect: frame withImage: fill];
}

- (void) drawTableHeaderCellInRect: (NSRect) frame highlighted: (BOOL) highlighted 
{
      frame.origin.y -= 1;
      NSImage* separation = nil;
      NSImage* fill = nil;
      if (highlighted)
      {
            CLHBoxCompositor* compositor = [CLHBoxCompositor new];
            [compositor addImage: [NSImage imageNamed: @"ListHeader/ListHeader-caps-selected.tiff"] named: @"caps"];
            [compositor addImage: [NSImage imageNamed: @"ListHeader/ListHeader-fill-selected.tiff"] named: @"fill"];
            [compositor drawInRect: frame];
            [compositor release];
/*
            fill = [NSImage imageNamed: @"ListHeader/ListHeader-fill-selected.tiff"];
            separation = [NSImage imageNamed: @"ListHeader/ListHeader-separator-selected.tiff"];
            [GraphicToolbox fillHorizontalRect: frame withImage: fill];
*/
      }
      else
      {
            fill = [NSImage imageNamed: @"ListHeader/ListHeader-fill-unselected.tiff"];
            separation = [NSImage imageNamed: @"ListHeader/ListHeader-separator-unselected.tiff"];
      }
      [separation compositeToPoint: NSMakePoint (frame.origin.x + frame.size.width -1, frame.origin.y +1)
            operation: NSCompositeSourceOver];
}

- (void) drawGradient: (NSData*) gradient withSize: (NSArray*) size 
      border: (NSRect) border
{
        NSAffineTransform *transform;
      NSDictionary* shader;

      transform=[[NSAffineTransform alloc] init];
      transform->matrix.m11=border.size.width;
      transform->matrix.m12=0.0;
      transform->matrix.m21=0.0;
      transform->matrix.m22=border.size.height;
      transform->matrix.tX=border.origin.x;
      transform->matrix.tY=border.origin.y;

      shader = // origin.x// x + width// origin.y// y + height[[NSDictionary alloc] initWithObjectsAndKeys:
                  [NSNumber numberWithInt: 1], @"ShadingType",
                  [NSArray arrayWithObjects:
                        [NSNumber numberWithFloat: 0.0],
                        [NSNumber numberWithFloat: 1.0],
                        [NSNumber numberWithFloat: 0.0],
                        [NSNumber numberWithFloat: 1.0], nil], @"Domain",
                  transform, @"Matrix",
                        [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                [NSNumber numberWithInt: 0],@"FunctionType",
                                [NSArray arrayWithObjects:
                                        [NSNumber numberWithFloat: 0.0], 
                                        [NSNumber numberWithFloat: 1.0], 
                                        [NSNumber numberWithFloat: 0.0], 
                                        [NSNumber numberWithFloat: 1.0], 
                                        nil],
                                        @"Domain",
                                [NSArray arrayWithObjects:
                                        [NSNumber numberWithFloat: 0.0],
                                        [NSNumber numberWithFloat: 1.0],
                                        [NSNumber numberWithFloat: 0.0],
                                        [NSNumber numberWithFloat: 1.0],
                                        [NSNumber numberWithFloat: 0.0],
                                        [NSNumber numberWithFloat: 1.0],
                                        nil],
                                        @"Range",
                                [NSNumber numberWithInt: 8],@"BitsPerSample",
                        size, @"Size",
                                gradient ,@"DataSource",
                                nil], @"Function", 
                  nil];

        PSshfill(shader);
      [transform release];
      //[shader release]; //FIXME ..
}

- (void) drawHorizontalGradient: (NSColor*) start to: (NSColor*) end frame: (NSRect) frame
{

      unsigned char * data;
      int datasize = 6 * sizeof (unsigned char);
      data = malloc (datasize);

      data  = [start redComponent] * 255;
      data  = [start greenComponent] * 255;
      data  = [start blueComponent] * 255;
      data  = [end redComponent] * 255;
      data  = [end greenComponent] * 255;
      data  = [end blueComponent] * 255;

      NSData* gradient = [NSData dataWithBytesNoCopy: data length: datasize];
      NSArray* size = [NSArray arrayWithObjects: [NSNumber numberWithInt: 2], [NSNumber numberWithInt: 1], nil];
      [THEME drawGradient: gradient withSize: size border: frame];
      free (data);
}

- (void) drawVerticalGradient: (NSColor*) start to: (NSColor*) end frame: (NSRect) frame
{

      unsigned char * data;
      int datasize = 6 * sizeof (unsigned char);
      data = malloc (datasize);

      data  = [start redComponent] * 255;
      data  = [start greenComponent] * 255;
      data  = [start blueComponent] * 255;
      data  = [end redComponent] * 255;
      data  = [end greenComponent] * 255;
      data  = [end blueComponent] * 255;

      NSData* gradient = [NSData dataWithBytesNoCopy: data length: datasize];
      NSArray* size = [NSArray arrayWithObjects: [NSNumber numberWithInt: 1], [NSNumber numberWithInt: 2], nil];
      [THEME drawGradient: gradient withSize: size border: frame];
      free (data);
}

- (void) drawDiagonalGradient: (NSColor*) start to: (NSColor*) end frame: (NSRect) frame direction: (int) direction
{

      unsigned char * data;
      int datasize = 12 * sizeof (unsigned char);
      data = malloc (datasize);
      float startR,startG,startB;
      float midR,midG,midB;
      float endR,endG,endB;
      
      startR = [start redComponent];
      startG = [start greenComponent];
      startB = [start blueComponent];
      endR = [end redComponent];
      endG = [end greenComponent];
      endB = [end blueComponent];
      if (endR > startR) midR = endR - startR;
      else midR = startR - endR;
      if (endG > startG) midG = endG - startG;
      else midG = startG - endG;
      if (endB > startB) midB = endB - startB;
      else midB = startB - endB;

      midR = startR + (midR/2);
      midG = startG + (midG/2);
      midB = startB + (midB/2);

      if (direction == 0) // bottom left to top right
      {
            data  = startR * 255;
            data  = startG * 255;
            data  = startB * 255;

            data  = midR * 255;
            data  = midG * 255;
            data  = midB * 255;

            data  = midR * 255;
            data  = midG * 255;
            data  = midB * 255;

            data  = endR * 255;
            data  = endG * 255;
            data  = endB * 255;
      }
      else if (direction == 1) // top left to bottom right
      {
            data  = midR * 255;
            data  = midG * 255;
            data  = midB * 255;

            data  = endR * 255;
            data  = endG * 255;
            data  = endB * 255;

            data  = startR * 255;
            data  = startG * 255;
            data  = startB * 255;

            data  = midR * 255;
            data  = midG * 255;
            data  = midB * 255;
      }

      NSData* gradient = [NSData dataWithBytesNoCopy: data length: datasize];
      NSArray* size = [NSArray arrayWithObjects: [NSNumber numberWithInt: 2], [NSNumber numberWithInt: 2], nil];
      [THEME drawGradient: gradient withSize: size border: frame];
      free (data);
}

- (void) drawRadioButton: (NSRect) border inView: (NSView*) view highlighted: (BOOL) highlighted 
{
      NSBezierPath* path = [NSBezierPath bezierPath];
      NSRect r = NSMakeRect (border.origin.x + 1, border.origin.y + 1, border.size.width -2 , border.size.height -2);
      [path appendBezierPathWithOvalInRect: r];

      NSColor* start = [NSColor colorWithCalibratedRed: 0.8 green: 0.8 blue: 0.8 alpha: 1.0];
      NSColor* end   = [NSColor colorWithCalibratedRed: 1.0 green: 1.0 blue: 1.0 alpha: 1.0];

      NSGraphicsContext *ctxt = GSCurrentContext();
      //DPSgsave (ctxt);
      //[path addClip];
      [THEME drawVerticalGradient: start to: end frame: border];
      //DPSgrestore (ctxt);
      [[NSColor blackColor] set];
      [path setLineWidth: 1.5];
      [path stroke];

      if (highlighted)
      {
            NSBezierPath* pathCircle = [NSBezierPath bezierPath];
            NSRect r = NSMakeRect (border.origin.x +4, border.origin.y +4, border.size.width -8, border.size.height -8);
            [pathCircle appendBezierPathWithOvalInRect: r];
            [[NSColor blackColor] set];
            [pathCircle fill];
      }
}

- (void) drawMenu: (NSRect) border inView: (NSView*) view 
{
      NSBezierPath* path = [NSBezierPath bezierPath];
      [path appendBezierPathWithRect: border];
/*
      NSRect r = NSMakeRect (border.origin.x + 1, border.origin.y + 1, border.size.width -2 , border.size.height -2);
      [path appendBezierPathWithRect: r];

      NSColor* start = [NSColor colorWithCalibratedRed: 0.8 green: 0.8 blue: 0.8 alpha: 1.0];
      NSColor* end   = [NSColor colorWithCalibratedRed: 1.0 green: 1.0 blue: 1.0 alpha: 1.0];

      [THEME drawHorizontalGradient: end to: start frame: border];

      [[NSColor blackColor] set];
      [path setLineWidth: 1.5];
      [path stroke];
*/
      [GraphicToolbox fillRect: border withImage: [NSImage imageNamed: @"Menu/Menu-background-fill.tiff"]];
      [[NSColor blackColor] set];
      [path setLineWidth: 1.5];
      [path stroke];
}

- (void) drawTextField: (NSRect) border focus: (BOOL) focus flipped: (BOOL) flipped
{
      if (focus)
      {
            NSLog (@"FOCUS TEXTFIELD");
            [GraphicToolbox drawButton: border
                  withCorners: [NSImage imageNamed: @"Textfield/Textfield-corners-selected.tiff"]
                  withLeftRight: [NSImage imageNamed: @"Textfield/Textfield-leftright-selected.tiff"]
                  withTopBottom: [NSImage imageNamed: @"Textfield/Textfield-topbottom-selected.tiff"]
                  flipped: flipped
            ];
      }
      else
      {
            [GraphicToolbox drawButton: border
                  withCorners: [NSImage imageNamed: @"Textfield/Textfield-corners-unselected.tiff"]
                  withLeftRight: [NSImage imageNamed: @"Textfield/Textfield-leftright-unselected.tiff"]
                  withTopBottom: [NSImage imageNamed: @"Textfield/Textfield-topbottom-unselected.tiff"]
                  flipped: flipped
            ];
      }
}

static CLHBoxCompositor* standardButton;
static CLHBoxCompositor* standardButtonH;
static CLBoxCompositor* button;
static CLBoxCompositor* buttonH;
static CLBoxCompositor* shadowlessButton;
static CLBoxCompositor* shadowlessButtonH;

static CLBoxCompositor* mygroupBox;

- (void) drawButton: (NSRect) border inView: (NSView*) view 
      style: (NSBezelStyle) bezelStyle highlighted: (BOOL) highlighted 
{
/*
      if (highlighted)
      {
      [GSDrawFunctions drawGrayBezel: border : NSZeroRect];
      }
      else
      {
      [GSDrawFunctions drawButton: border : NSZeroRect];
      }
      return;
*/
      CLCompositor* compositor = nil;

      if (standardButtonH == nil)
      {
            standardButtonH = [CLHBoxCompositor new];
            [standardButtonH setName: @"standardButtonH"];
            [standardButtonH addImage: [NSImage imageNamed: @"Button/Button-selected.tiff"] 
                  named: @"caps"];
            [standardButtonH addImage: [NSImage imageNamed: @"Button/Button-fill-selected.tiff"] 
                  named: @"fill"];
      }

      if (standardButton == nil)
      {
            standardButton = [CLHBoxCompositor new];
            [standardButton setName: @"standardButton"];
            [standardButton addImage: [NSImage imageNamed: @"Button/Button-unselected.tiff"] 
                  named: @"caps"];
            [standardButton addImage: [NSImage imageNamed: @"Button/Button-fill-unselected.tiff"] 
                  named: @"fill"];
      }
      
      if (buttonH == nil)
      {
            buttonH = [CLBoxCompositor new];
            [buttonH setName: @"buttonH"];
            [buttonH addImage: 
                  [NSImage imageNamed: @"BevelButton/BevelButton-corners-selected.tiff"]
                  named: @"corners"];
            [buttonH addImage:
                  [NSImage imageNamed: @"BevelButton/BevelButton-left-selected.tiff"]
                  named: @"left"];
            [buttonH addImage:
                  [NSImage imageNamed: @"BevelButton/BevelButton-right-selected.tiff"]
                  named: @"right"];
            [buttonH addImage:
                  [NSImage imageNamed: @"BevelButton/BevelButton-topbottom-selected.tiff"]
                  named: @"topbottom"];
            [buttonH addImage:
                  [NSImage imageNamed: @"BevelButton/BevelButton-fill-selected.tiff"]
                  named: @"fill"];
            [buttonH setFill: CLFillScaledImage];
      }

      if (button == nil)
      {
            button = [CLBoxCompositor new];
            [button setName: @"button"];
            [button addImage: 
                  [NSImage imageNamed: @"BevelButton/BevelButton-corners-unselected.tiff"]
                  named: @"corners"];
            [button addImage:
                  [NSImage imageNamed: @"BevelButton/BevelButton-left-unselected.tiff"]
                  named: @"left"];
            [button addImage:
                  [NSImage imageNamed: @"BevelButton/BevelButton-right-unselected.tiff"]
                  named: @"right"];
            [button addImage:
                  [NSImage imageNamed: @"BevelButton/BevelButton-topbottom-unselected.tiff"]
                  named: @"topbottom"];
            [button addImage:
                  [NSImage imageNamed: @"BevelButton/BevelButton-fill-unselected.tiff"]
                  named: @"fill"];
            [button setFill: CLFillScaledImage];
      }

      if (shadowlessButtonH == nil)
      {
            shadowlessButtonH = [CLBoxCompositor new];
            [shadowlessButtonH setName: @"shadowlessButtonH"];
            [shadowlessButtonH addImage: 
                  [NSImage imageNamed: @"ShadowlessButton/ShadowlessButton-corners-selected.tiff"]
                  named: @"corners"];
            [shadowlessButtonH addImage:
                  [NSImage imageNamed: @"ShadowlessButton/ShadowlessButton-left-selected.tiff"]
                  named: @"left"];
            [shadowlessButtonH addImage:
                  [NSImage imageNamed: @"ShadowlessButton/ShadowlessButton-right-selected.tiff"]
                  named: @"right"];
            [shadowlessButtonH addImage:
                  [NSImage imageNamed: @"ShadowlessButton/ShadowlessButton-topbottom-selected.tiff"]
                  named: @"topbottom"];
            [shadowlessButtonH addImage:
                  [NSImage imageNamed: @"ShadowlessButton/ShadowlessButton-fill-selected.tiff"]
                  named: @"fill"];
            [shadowlessButtonH setFill: CLFillScaledImage];
      }

      if (shadowlessButton == nil)
      {
            shadowlessButton = [CLBoxCompositor new];
            [shadowlessButton setName: @"shadowlessButton"];
            [shadowlessButton addImage: 
                  [NSImage imageNamed: @"ShadowlessButton/ShadowlessButton-corners-unselected.tiff"]
                  named: @"corners"];
            [shadowlessButton addImage:
                  [NSImage imageNamed: @"ShadowlessButton/ShadowlessButton-left-unselected.tiff"]
                  named: @"left"];
            [shadowlessButton addImage:
                  [NSImage imageNamed: @"ShadowlessButton/ShadowlessButton-right-unselected.tiff"]
                  named: @"right"];
            [shadowlessButton addImage:
                  [NSImage imageNamed: @"ShadowlessButton/ShadowlessButton-topbottom-unselected.tiff"]
                  named: @"topbottom"];
            [shadowlessButton addImage:
                  [NSImage imageNamed: @"ShadowlessButton/ShadowlessButton-fill-unselected.tiff"]
                  named: @"fill"];
            [shadowlessButton setFill: CLFillScaledImage];
      }
      /*
      if ((border.size.height >= 22) && (border.size.height <= 28))
      {

            if (highlighted) [standardButtonH drawInRect: border on: view];
            else [standardButton drawInRect: border on: view];
      }
      else
      {
            if (highlighted) [buttonH drawInRect: border on: view];
            else [button drawInRect: border on: view];
      }
      */

      switch (bezelStyle)
      {
            case NSShadowlessSquareBezelStyle:
                  if (highlighted) [shadowlessButtonH drawInRect: border on: view];
                  else [shadowlessButton drawInRect: border on: view];
                  break;
            default:
                  if (highlighted) [buttonH drawInRect: border on: view];
                  else [button drawInRect: border on: view];
      }
}

static CLCompositor* cl_progressIndicatorForeground;
static CLCompositor* cl_progressIndicatorBackground;

- (void) drawProgressIndicatorBackgroundOn: (NSView*) view
{
      if (cl_progressIndicatorBackground == nil)
      {
            cl_progressIndicatorBackground = [CLHBoxCompositor new];
            [cl_progressIndicatorBackground setName: @"progressIndicatorBackground"];

            [cl_progressIndicatorBackground 
                  addImage: [NSImage imageNamed: @"ProgressBar/ProgressBar-horizontal-background-caps.tiff"]
                  named: @"caps"];
            [cl_progressIndicatorBackground
                  addImage: [NSImage imageNamed: @"ProgressBar/ProgressBar-horizontal-background-fill.tiff"]
                  named: @"fill"];
      }
      [cl_progressIndicatorBackground drawOn: view];
}

- (void) drawProgressIndicatorForegroundInRect: (NSRect) rect
{
      if (cl_progressIndicatorForeground == nil)
      {
            cl_progressIndicatorForeground = [CLHBoxCompositor new];
            [cl_progressIndicatorForeground setName: @"progressIndicator"];

            [cl_progressIndicatorForeground 
                  addImage: [NSImage imageNamed: @"ProgressBar/ProgressBar-horizontal-caps.tiff"]
                  named: @"caps"];
            [cl_progressIndicatorForeground
                  addImage: [NSImage imageNamed: @"ProgressBar/ProgressBar-horizontal-fill.tiff"]
                  named: @"fill"];
      }
      [cl_progressIndicatorForeground drawInRect: rect];
}

- (void) drawTitleBox: (NSRect) rect on: (id) box
{
      [GraphicToolbox fillRect: rect withImage: [NSImage imageNamed: @"Window/Window-background.tiff"]];
}

- (void) setGroupBoxImages
{
      if (mygroupBox == nil)
      {
            mygroupBox = [CLBoxCompositor new];
            [mygroupBox setName: @"mygroupBox"];
            [mygroupBox addImage: [NSImage imageNamed: @"GroupBox/GroupBox-top-left.tiff"]
                  named: @"topLeft"];
            [mygroupBox addImage: [NSImage imageNamed: @"GroupBox/GroupBox-top-right.tiff"]
                  named: @"topRight"];
            [mygroupBox addImage: [NSImage imageNamed: @"GroupBox/GroupBox-bottom-left.tiff"]
                  named: @"bottomLeft"];
            [mygroupBox addImage: [NSImage imageNamed: @"GroupBox/GroupBox-bottom-right.tiff"]
                  named: @"bottomRight"];
            [mygroupBox addImage: [NSImage imageNamed: @"GroupBox/GroupBox-top.tiff"]
                  named: @"top"];
            [mygroupBox addImage: [NSImage imageNamed: @"GroupBox/GroupBox-bottom.tiff"]
                  named: @"bottom"];
            [mygroupBox addImage: [NSImage imageNamed: @"GroupBox/GroupBox-left.tiff"]
                  named: @"left"];
            [mygroupBox addImage: [NSImage imageNamed: @"GroupBox/GroupBox-right.tiff"]
                  named: @"right"];
            //[mygroupBox addImage: [NSImage imageNamed: @"GroupBox/GroupBox-fill.tiff"]
            //    named: @"fill"];
            [mygroupBox setFill: CLFillColor];
            [mygroupBox setFillColor: [GraphicToolbox readColorFromImage: 
                  [NSImage imageNamed: @"GroupBox/GroupBox-fill.tiff"]]];
      }
}

- (float) boxBorderHeight 
{
      [self setGroupBoxImages];
      return [mygroupBox topHeight];
}

- (void) drawBox: (NSRect) rect on: (NSView*) box
{
      [self setGroupBoxImages];
      [mygroupBox drawInRect: rect on: box];
      //[mygroupBox drawOn: box];
}

- (void) drawWindowBackground: (NSRect) rect on: (id) window
{
      [[NSColor windowBackgroundColor] set];
      NSRectFill (rect);
}

- (void) drawPopupButton: (NSRect) border inView: (NSView*) view 
{
      CLHBoxCompositor* compositor = [CLHBoxCompositor new];
      [compositor addImage: [NSImage imageNamed: @"PopupButton/PopupButton-endcap.tiff"]
            named: @"caps"];
      [compositor addImage: [NSImage imageNamed: @"PopupButton/PopupButton-fill.tiff"]
            named: @"fill"];
      [compositor drawInRect: border];
      [compositor release];
      
      NSImage* arrows = [NSImage imageNamed: @"PopupButton/PopupButton-ArrowEnds.tiff"];  
      float w = ([arrows size].width)/2;
      float h = [arrows size].height;
      NSImage* arrow = [[NSImage alloc] initWithSize: NSMakeSize (w,h)];

      float deltaY = (border.size.height - h)/2;
      
      [arrow lockFocus];
      [arrows compositeToPoint: NSMakePoint (-w,0) operation: NSCompositeSourceOver];
      [arrow unlockFocus];
      
      [arrow compositeToPoint: NSMakePoint (border.origin.x+border.size.width-w,border.origin.y+deltaY) operation: NSCompositeSourceOver];
}

- (void) drawHorizontalScrollerKnob: (NSRect) knob on: (NSView*) view
{
      [GraphicToolbox drawHorizontalButton: knob 
            withCaps: [NSImage imageNamed: @"Scrollbar/Scrollbar-horizontal-thumb-caps.tiff"]
            filledWith: [NSImage imageNamed: @"Scrollbar/Scrollbar-horizontal-thumb-fill.tiff"]
            withLeftMargin: 0 rightMargin: 0 topMargin: 0 bottomMargin: 0 flipped: [view isFlipped]];
      NSImage* knobButton = [NSImage imageNamed: @"Elements/Knob.tiff"];
      float posX = (knob.size.width - [knobButton size].width)/2;
      float posY = (knob.size.height - [knobButton size].height)/2;
      if ([view isFlipped]) posY += [knobButton size].height;
      [knobButton compositeToPoint: NSMakePoint (knob.origin.x + posX, knob.origin.y + posY) 
            operation: NSCompositeSourceOver];
}

- (void) drawVerticalScrollerKnob: (NSRect) knob on: (NSView*) view
{
      [GraphicToolbox drawVerticalButton: knob 
            withCaps: [NSImage imageNamed: @"Scrollbar/Scrollbar-vertical-thumb-caps.tiff"]
            filledWith: [NSImage imageNamed: @"Scrollbar/Scrollbar-vertical-thumb-fill.tiff"]
            withLeftMargin: 0 rightMargin: 0 topMargin: 0 bottomMargin: 0 flipped: [view isFlipped]];
      NSImage* knobButton = [NSImage imageNamed: @"Elements/Knob.tiff"];
      float posX = (knob.size.width - [knobButton size].width)/2;
      float posY = (knob.size.height - [knobButton size].height)/2;
      if ([view isFlipped]) posY += [knobButton size].height;
      [knobButton compositeToPoint: NSMakePoint (knob.origin.x + posX, knob.origin.y + posY) 
            operation: NSCompositeSourceOver];
}

- (void) drawHorizontalScrollerSlot: (NSRect) slot knobPresent: (BOOL) knob 
      buttonPressed: (int) buttonPressed on: (NSView*) view
{
      if (knob)
      {
            NSImage* leftCap = nil;
            switch (buttonPressed)
            {
                  case 1:
                        leftCap = [NSImage imageNamed: @"Scrollbar/Scrollbar-horizontal-slot-arrows-left.tiff"];
                        break;
                  case 2:
                        leftCap = [NSImage imageNamed: @"Scrollbar/Scrollbar-horizontal-slot-arrows-right.tiff"];
                        break;
                  default:
                        leftCap = [NSImage imageNamed: @"Scrollbar/Scrollbar-horizontal-slot-arrows-unselected.tiff"];
            }
            [GraphicToolbox drawHorizontalButton: slot
                  withLeftCap: leftCap
                  rightCap: [NSImage imageNamed: @"Scrollbar/Scrollbar-horizontal-slot-right.tiff"]
                  filledWith: [NSImage imageNamed: @"Scrollbar/Scrollbar-horizontal-slot-fill.tiff"]
                  flipped: [view isFlipped]];
      }
      else
      {
            [GraphicToolbox drawHorizontalButton: slot
                  withLeftCap: [NSImage imageNamed: @"Scrollbar/Scrollbar-horizontal-slot-caps.tiff"]
                  rightCap: [NSImage imageNamed: @"Scrollbar/Scrollbar-horizontal-slot-caps.tiff"]
                  filledWith: [NSImage imageNamed: @"Scrollbar/Scrollbar-horizontal-slot-caps.tiff"]
                  flipped: [view isFlipped]];
      }
}

- (void) drawVerticalScrollerSlot: (NSRect) slot knobPresent: (BOOL) knob 
      buttonPressed: (int) buttonPressed on: (NSView*) view
{
      if (knob)
      {
            NSImage* downCap = nil;
            switch (buttonPressed)
            {
                  case 1:
                        downCap = [NSImage imageNamed: @"Scrollbar/Scrollbar-vertical-slot-arrows-bottom.tiff"];
                        break;
                  case 2:
                        downCap = [NSImage imageNamed: @"Scrollbar/Scrollbar-vertical-slot-arrows-top.tiff"];
                        break;
                  default:
                        downCap = [NSImage imageNamed: @"Scrollbar/Scrollbar-vertical-slot-arrows-unselected.tiff"];
            }
            
            [GraphicToolbox drawVerticalButton: slot
                  withUpCap: [NSImage imageNamed: @"Scrollbar/Scrollbar-vertical-slot-up.tiff"]
                  downCap: downCap
                  filledWith: [NSImage imageNamed: @"Scrollbar/Scrollbar-vertical-slot-fill.tiff"]
                  flipped: [view isFlipped]];
      }
      else
      {
            [GraphicToolbox drawVerticalButton: slot
                  withUpCap: [NSImage imageNamed: @"Scrollbar/Scrollbar-vertical-slot-caps.tiff"]
                  downCap: [NSImage imageNamed: @"Scrollbar/Scrollbar-vertical-slot-caps.tiff"]
                  filledWith: [NSImage imageNamed: @"Scrollbar/Scrollbar-vertical-slot-caps.tiff"]
                  flipped: [view isFlipped]];
      }
}

- (void) drawTopTabFill: (NSRect) rect selected: (BOOL) selected on: (NSView*) view
{
      NSImage* fill = nil;
      if (selected) fill = [NSImage imageNamed: @"Tabs/Tabs-selected-fill.tiff"];
      else fill = [NSImage imageNamed: @"Tabs/Tabs-unselected-fill.tiff"];

      [GraphicToolbox fillHorizontalRect: rect withImage: fill];
}

- (void) drawTabFrame: (NSRect) rect on: (NSView*) view
{
      /*
      NSBezierPath* path = [NSBezierPath bezierPathWithRect: rect];
      [[NSColor blackColor] set];
      [path setLineWidth: 0];
      [path stroke];
      */
      /*
      NSGraphicsContext     *ctxt = GSCurrentContext();
      DPSsetlinewidth (ctxt, 1);
      [[NSColor blackColor] set];
      DPSrectstroke (ctxt, rect.origin.x, rect.origin.y, rect.size.width, rect.size.height);
      */
      [GraphicToolbox drawButton: rect
            withCorners: [NSImage imageNamed: @"Tabs/Tabs-pane-corners.tiff"]
            withLeft: [NSImage imageNamed: @"Tabs/Tabs-pane-left.tiff"]
            withRight: [NSImage imageNamed: @"Tabs/Tabs-pane-right.tiff"]
            withTop: [NSImage imageNamed: @"Tabs/Tabs-pane-top.tiff"]
            withBottom: [NSImage imageNamed: @"Tabs/Tabs-pane-bottom.tiff"]
            filledWith: [NSImage imageNamed: @"Tabs/Tabs-pane-fill.tiff"]
            repeatFill: YES
            flipped: [view isFlipped]
      ];
      /*
      NSRect rectBar = NSMakeRect (rect.origin.x, rect.origin.y + rect.size.height - 9.0, rect.size.width, 9.0);
      [GraphicToolbox drawButton: rectBar
            withCaps: [NSImage 
                  imageNamed: @"Tabs/Tabs-panebar-caps.tiff"]
            filledWith: [NSImage
                  imageNamed: @"Tabs/Tabs-panebar-fill.tiff"]];
      */
      
}

- (void) drawScrollViewFrame: (NSRect) rect on: (NSView*) view
{
      /*
      NSBezierPath* path = [NSBezierPath bezierPathWithRect: rect];
      [[NSColor blackColor] set];
      [path setLineWidth: 0];
      [path stroke];
      */
      /*
      NSGraphicsContext     *ctxt = GSCurrentContext();
      DPSsetlinewidth (ctxt, 1);
      [[NSColor colorWithCalibratedRed: 0.6 green: 0.6 blue: 0.6 alpha: 1.0] set];
      DPSrectstroke (ctxt, rect.origin.x, rect.origin.y, rect.size.width, rect.size.height);
      */
}

- (void) drawFocusFrame: (NSRect) cellFrame on: (NSView*) view
{
/*
      NSRect rect = NSMakeRect (cellFrame.origin.x + 1, cellFrame.origin.y + 1, cellFrame.size.width - 2, cellFrame.size.height - 2);
      NSDottedFrameRect (rect);
*/
      NSDottedFrameRect (cellFrame);
/*
      NSBezierPath* path = [NSBezierPath bezierPath];
      //NSRect rect = cellFrame;
      NSRect rect = NSMakeRect (cellFrame.origin.x + 1, cellFrame.origin.y + 1, cellFrame.size.width - 2, cellFrame.size.height - 2);
      [path appendBezierPathWithRoundedRectangle: rect withRadius: 8.0];
      //[path appendBezierPathWithRect: rect];
      [[NSColor colorWithCalibratedRed: 0.5 green: 0.5 blue: 1.0 alpha: 0.3] set];
      [path setLineWidth: 5];
      [path stroke];
      [[NSColor colorWithCalibratedRed: 0.5 green: 0.5 blue: 1.0 alpha: 0.5] set];
      [path setLineWidth: 3];
      [path stroke];
      [[NSColor colorWithCalibratedRed: 0.4 green: 0.4 blue: 1.0 alpha: 1.0] set];
      [path setLineWidth: 1];
      [path stroke];
*/
}
@end

Generated by  Doxygen 1.6.0   Back to index