This is EKProgressView.m in view mode; [Download] [Up]
/*
* EKProgressView
* description: a simple "grow bar" view
* history:
* 5/15/93 [Erik Kay] - created
* 6/1/93 [Erik Kay] - added color support
*/
#import "EKProgressView.h"
@implementation EKProgressView
- initFrame:(const NXRect *)f
{
[super initFrame:f];
// by default, if it's wider than high, then it fills to the right
// otherwise it fills upwards
if (NX_WIDTH(f) > NX_HEIGHT(f))
orientation = HORIZONTAL;
else
orientation = VERTICAL;
// set the fill color based on the window depth limit
switch ([Window defaultDepthLimit]) {
case NX_TwentyFourBitRGBDepth:
case NX_TwelveBitRGBDepth:
fillColor = NXConvertRGBToColor(0.467,0,0.067);
break;
default: // gray scale
fillColor = NXConvertGrayToColor(0.333);
break;
}
min = 0; max = 100; progress = 0;
return self;
}
// set the range
- setMin:(int)m
{
min = m;
return self;
}
- setMax:(int)m
{
max = m;
return self;
}
// set how far the progress bar is
- setProgress:(int)p
{
if ((progress >= min) && (progress <= max)) {
progress = p;
[self display];
}
return self;
}
// manually set the direction of the fill
- setOrientation:(int)val
{
if ((val == HORIZONTAL) || (val == VERTICAL))
orientation = val;
return self;
}
// set the fill color
- setFillColor:(NXColor)color
{
fillColor = color;
return self;
}
- drawSelf:(const NXRect *)rects :(int)c
{
NXRect r;
int distance;
PSsetgray(0.667);
NXRectFill(&frame);
NXSetColor(fillColor);
if (orientation == HORIZONTAL) {
distance = (progress - min) * NX_WIDTH(&frame) / (max - min);
NXSetRect(&r,0,0,distance,NX_HEIGHT(&frame));
} else {
distance = (progress - min) * NX_HEIGHT(&frame) / (max - min);
NXSetRect(&r,0,0,NX_WIDTH(&frame),distance);
}
NXRectFill(&r);
return self;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.