This is DView.m in view mode; [Download] [Up]
#import "DView.h"
#import "Localization.h"
#import <appkit/NXImage.h>
#import <appkit/TextField.h>
#import <libc.h>
@implementation DView
static NXPoint origin = {0.0, 0.0};
static BOOL flag = YES;
#define STEPS 120
#define IMAGE_FILE LocalString("BigCase")
- initFrame:(const NXRect *)frameRect;
{
const NXSize aSize = {64.0,64.0};
[super initFrame:frameRect];
theImage = [NXImage findImageNamed:IMAGE_FILE];
buffer = [[NXImage allocFromZone:[self zone]] initSize:&aSize];
return self;
}
- free
{
if ([theImage isKindOfClassNamed:"NXImage"]) [theImage free];
if ([buffer isKindOfClassNamed:"NXImage"]) [buffer free];
return [super free];
}
- _doDissolve:i1 :i2
{
float delta = 0.0;
int i = 0;
for (i = 0; i <= STEPS; i++) {
delta = (float)i/(float)STEPS;
[i1 composite:NX_SOVER toPoint:&origin];
[i2 dissolve:delta toPoint:&origin];
[self display];
}
[i2 dissolve:1.0 toPoint:&origin];
return self;
}
- drawSelf:(NXRect *)rects :(int)rectCount;
{
if (flag) [theImage composite:NX_SOVER toPoint:&origin];
else [buffer composite:NX_SOVER toPoint:&origin];
return self;
}
- mouseDown:(NXEvent *)event
{
NXImage *oldImage = NULL, *newImage = NULL;
if ((event->type == NX_LMOUSEDOWN) &&
(event->flags & NX_COMMANDMASK) &&
(event->flags & NX_ALTERNATEMASK)) {
flag = NO;
[buffer lockFocus];
oldImage = [NXImage findImageNamed:IMAGE_FILE];
newImage = [NXImage findImageNamed:LocalString("me")];
[nameField setStringValueNoCopy:LocalString("Subrata Sircar")];
[self _doDissolve:oldImage :newImage];
NXPing();
sleep(3);
[oldImage free];
oldImage = newImage;
newImage = [NXImage findImageNamed:IMAGE_FILE];
[nameField setStringValueNoCopy:""];
[self _doDissolve:oldImage :newImage];
[buffer unlockFocus];
flag = YES;
[oldImage free];
[newImage free];
}
return self;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.