ftp.nice.ch/pub/next/science/physics/Moon.NIHS.bs.tar.gz#/Moon/Source/MoonIconView.m

This is MoonIconView.m in view mode; [Download] [Up]

/* MoonIconView.m
 * Part of the Moon application for the NeXT computer.
 * Author:  Geoffrey S. Knauth
 * Date:    January 4, 1992
 *
 * Permission to copy this program is hereby granted under the terms
 * of the Free Software Foundation's GNU General Public License.
 */

#import <dpsclient/psops.h>		/* PSsetgray */
#import "MoonIconView.h"
#import "all.h"

@implementation MoonIconView

- initFrame :(const NXRect *)frameRect
{
    [super initFrame:frameRect];
    [self setOpaque:YES];
    return self;
}

- drawSelf :(const NXRect *)rects :(int)rectCount
{
    NXPoint center = {NX_WIDTH(&bounds)/2., NX_HEIGHT(&bounds)/2.};
    float yradius = NX_HEIGHT(&bounds)/2.-2.;
    float xradius = yradius;

    PSsetgray(NX_LTGRAY);
    NXRectFill(&bounds);

  /* draw the image of the moon */
    PSsetgray(NX_WHITE);
    PSarc(center.x, center.y, yradius, 0., 360.);
    PSfill();

  /* now draw the shadow over that part hidden from the sun */
    DrawMoonShadow([self phase], &center, xradius, yradius, NX_BLACK);

    return self;
}

- (float) phase
{
    return phase;
}

- setPhase :(float) val
{
    phase = val;
    return self;
}

@end

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.