This is PercentView.m in view mode; [Download] [Up]
/* Simple subclass of View that display a fraction of a circle
to represent the percent set by its displayPercent: method */
// This code was kindly given to me by Scott Stark. Many thanks
// for making it available to people. J Laroche
#import "PercentView.h"
#import <dpsclient/dpsclient.h>
#import <dpsclient/wraps.h>
#import <appkit/nextstd.h>
#import <appkit/graphics.h>
@implementation PercentView
- displayPercent: (float) p
{
percent = p;
[self display];
return self;
}
- drawSelf: (const NXRect *) rects :(int) rectCount
{
float x,y,dx,dy;
float r,endAngle;
if(rectCount == 0)
return self;
/* Calculate my center, radius, and end angle */
dx = bounds.size.width / 2.0;
x = dx + bounds.origin.x;
dy = bounds.size.height / 2.0;
y = dy + bounds.origin.y;
r = MIN(dx,dy);
r -= 2;
endAngle = 90.0 - 360.0 * percent;
/* Erase my bounds */
PSsetgray(NX_LTGRAY);
NXRectFill(&bounds);
/* Draw black circle for the dial */
PSsetgray(NX_BLACK);
PSarc(x, y, r, 0.0, 360.0);
PSstroke();
/* Draw the pie slice */
PSmoveto(x, y);
PSarcn(x,y,r,90.0, endAngle);
PSclosepath();
PSgsave();
PSsetgray(NX_DKGRAY);
PSfill();
PSgrestore();
PSstroke();
[super drawSelf: rects : rectCount];
return self;
}
@end
/* RCS Information:
$Author: me $;
$Date: 92/05/03 17:39:10 $;
$Source: /RS6000/usr/local/NFS_NeXT/Dev/Net/Archie_Prospero/Archie/RCS/PercentView.m,v $;
$Revision: 1.5 $;
*/
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.