This is BarChartCell.m in view mode; [Download] [Up]
// BarChartCell.m
//
// Free software created 1 Feb 1992
// by Paul Burchard <burchard@math.utah.edu>.
#import "BarChartCell.h"
#import <appkit/appkit.h>
@implementation BarChartCell
- initTextCell:(const char *)aString
{
[super initTextCell:aString];
barValue = 0.00;
barSize = 0.20;
padding = 0.45;
barGray = NX_DKGRAY;
return self;
}
- drawInside:(const NXRect *)cellFrame inView:controlView
{
NXRect barRect, barFrame, textRect;
float x, y, h, w;
id rtn;
// Compute subcell rects.
x = NX_X(cellFrame); y = NX_Y(cellFrame);
w = NX_WIDTH(cellFrame); h = NX_HEIGHT(cellFrame);
NX_X(&barRect) = x + (1-barValue)*barSize*w;
NX_Y(&barRect) = y + padding*h/2;
NX_WIDTH(&barRect) = barValue*barSize*w;
NX_HEIGHT(&barRect) = (1-padding)*h;
NX_X(&barFrame) = x; NX_Y(&barFrame) = y;
NX_WIDTH(&barFrame) = barSize*w; NX_HEIGHT(&barFrame) = h;
NX_X(&textRect) = x + barSize*w; NX_Y(&textRect) = y;
NX_WIDTH(&textRect) = (1-barSize)*w;NX_HEIGHT(&textRect) = h;
// Draw subcells.
rtn = [super drawInside:&textRect inView:controlView];
PSsetgray(backgroundGray);
PSsetalpha(backgroundGray);
PScompositerect(NX_X(&barFrame), NX_Y(&barFrame),
NX_WIDTH(&barFrame), NX_HEIGHT(&barFrame), NX_SOVER);
PSsetalpha(1.0);
if([self isHighlighted]) PScompositerect(NX_X(&barFrame), NX_Y(&barFrame),
NX_WIDTH(&barFrame), NX_HEIGHT(&barFrame), NX_HIGHLIGHT);
PSsetgray(barGray);
PSrectfill(NX_X(&barRect), NX_Y(&barRect),
NX_WIDTH(&barRect), NX_HEIGHT(&barRect));
return rtn;
}
- setBarValue:(float)aValue
{
barValue = aValue;
if(barValue > 1.0) barValue = 1.0;
if(barValue < 0.0) barValue = 0.0;
return self;
}
- (float)barValue
{
return barValue;
}
- setBarSize:(float)aValue
{
barSize = aValue;
if(barSize > 1.0) barSize = 1.0;
if(barSize < 0.0) barSize = 0.0;
return self;
}
- (float)barSize
{
return barSize;
}
- setPadding:(float)aValue
{
padding = aValue;
if(padding > 1.0) padding = 1.0;
if(padding < 0.0) padding = 0.0;
return self;
}
- (float)padding
{
return padding;
}
- setBarGray:(float)aValue
{
barGray = aValue;
if(barGray > 1.0) barGray = 1.0;
if(barGray < 0.0) barGray = 0.0;
return self;
}
- (float)barGray
{
return barGray;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.