ftp.nice.ch/pub/next/tools/screen/BackSpace.1.02.N.bs.tar.gz#/BackSpace/backspace/SlidingImageView.m

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

//
//  SlidingImageView.m
//
//  Lennart Lovstrand, Rank Xerox EuroPARC, August 1991.
//	small modifications by sam 910904

#import "SlidingImageView.h"
#import "Thinker.h"
#import <appkit/NXImage.h>
#import <appkit/Panel.h>		// for NXRunAlertPanel()
#import <dpsclient/wraps.h>
#import <libc.h>
#import <math.h>

@implementation SlidingImageView

- drawSelf:(const NXRect *)rects :(int)rectCount
{
	NXPoint p;
	if (!rects || !rectCount) return self;

	[super drawSelf:rects :rectCount];
	
	p.x = floor(imageRect.origin.x);
	p.y = floor(imageRect.origin.y);

    [image composite: NX_SOVER toPoint: &p];

	return self;
}

- oneStep
{
	NXPoint p;
    PSsetgray(0);
    NXRectFill(&imageRect);
    
    imageRect.origin.x += delta.x;
    imageRect.origin.y += delta.y;

    if (imageRect.origin.x < 0)
	{
		imageRect.origin.x = 0;
		delta.x = randBetween(.5,4);
    }
	else if (imageRect.origin.x > maxCoord.x)
	{
		imageRect.origin.x = maxCoord.x;
		delta.x = -randBetween(.5,4);
    }

    if (imageRect.origin.y < 0)
	{
		imageRect.origin.y = 0;
		delta.y = randBetween(.5,4);
    }
	else if (imageRect.origin.y > maxCoord.y)
	{
		imageRect.origin.y = maxCoord.y;
		delta.y = -randBetween(.5,4);
    }

	p.x = floor(imageRect.origin.x);
	p.y = floor(imageRect.origin.y);

    [image composite: NX_SOVER toPoint: &p];

    return self;
}

- setImageConstraints
{
    [super setImageConstraints];

	if (imageRect.origin.x > maxCoord.x ||
		imageRect.origin.y > maxCoord.y)
	{
		imageRect.origin.x = randBetween(0, maxCoord.x);
		imageRect.origin.y = randBetween(0, maxCoord.y);
	}

	delta.x = randBetween(.5,4);
	delta.y = randBetween(.5,4);

    return self;
}

@end

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