This is OriginalView.m in view mode; [Download] [Up]
#import "OriginalView.h"
@implementation OriginalView
- initFrame:(const NXRect *)frameRect
{
[super initFrame:frameRect];
bitmapData = (unsigned char *)malloc ((int)bounds.size.width *
(int)bounds.size.height * 4 * sizeof (unsigned char) + 1024);
buffer = [[NXImage alloc] initSize:&bounds.size];
[buffer setUnique:YES];
[buffer setCacheDepthBounded:NO];
[buffer useCacheWithDepth:NX_TwentyFourBitRGBDepth];
return self;
}
- free
{
free (bitmapData);
[image free];
[buffer free];
return [super free];
}
- open:sender
{
id oldImage = image;
id openPanel = [OpenPanel new];
if ([openPanel runModalForTypes:[NXImage imageFileTypes]]) {
image = [[NXImage alloc] initFromFile:[openPanel filename]];
[image setDataRetained:YES];
imageRep = [image lastRepresentation];
if (imageRep) {
[[self window] setTitleAsFilename:[openPanel filename]];
[[[self window] orderFront:self] display];
[optionsWindow makeKeyAndOrderFront:self];
[oldImage free];
} else {
NXRunLocalizedAlertPanel (NULL, NULL,
"Unable to open input file: %s.",
NULL, NULL, NULL, [openPanel filename]);
[image free];
}
}
return self;
}
- (BOOL)imageLoaded
{
if (imageRep)
return YES;
else
return NO;
}
- setRotationInDegrees:(float)newDegrees
{
degrees = newDegrees;
return self;
}
- bitmap
{
id bits = nil;
[buffer lockFocus];
bits = [[NXBitmapImageRep alloc] initData:bitmapData fromRect:&bounds];
[buffer unlockFocus];
return bits;
}
- drawSelf:(const NXRect *)rects :(int)rectCount
{
float scale, major;
NXSize imageSize;
if (!imageRep) return self;
[imageRep getSize:&imageSize];
if (imageSize.width > imageSize.height)
major = imageSize.width;
else
major = imageSize.height;
scale = bounds.size.width / major;
[buffer lockFocus];
NXSetColor (NX_COLORCLEAR);
NXRectFill (&bounds);
PStranslate (bounds.size.width/2., bounds.size.height/2.);
PSrotate (degrees);
PSscale (scale, scale);
PStranslate (-imageSize.width/2., -imageSize.height/2.);
[imageRep draw];
[buffer unlockFocus];
NXSetColor (NX_COLORLTGRAY);
NXRectFill (&bounds);
[buffer composite:NX_SOVER toPoint:&bounds.origin];
return self;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.