This is MorphLineInspector.m in view mode; [Download] [Up]
// MorphLineInspector.m
//
// created by Martin Wennerberg on Mon 05-Jan-1998
//
// when who modification
#import "MorphLineInspector.h"
#import "MorphLine.h"
#import "InspectorController.h"
@implementation MorphLineInspector
- (NSView *) view
{
if ([super view] == nil)
[NSBundle loadNibNamed:@"MorphLineInspector.nib" owner: self];
return [super view];
}
- (BOOL) isValidInspectorForTargets:(NSArray *)inspectedObjects
{
NSEnumerator *objEnum = [inspectedObjects objectEnumerator];
id obj;
if ([inspectedObjects count] == 0)
return NO;
while ((obj = [objEnum nextObject]))
if (![obj isKindOfClass:[MorphLine class]])
return NO;
return YES;
}
- (void) revert:sender
{
NSArray *lines = [self targets];
MorphLine *line = [lines lastObject];
if (line == nil)
return;
[startX0Field setStringValue:[NSString stringWithFormat:@"%.2f", [line startPointAtDelta:0].x * 100.0]];
[startY0Field setStringValue:[NSString stringWithFormat:@"%.2f", [line startPointAtDelta:0].y * 100.0]];
[startX1Field setStringValue:[NSString stringWithFormat:@"%.2f", [line startPointAtDelta:1].x * 100.0]];
[startY1Field setStringValue:[NSString stringWithFormat:@"%.2f", [line startPointAtDelta:1].y * 100.0]];
[endX0Field setStringValue:[NSString stringWithFormat:@"%.2f", [line endPointAtDelta:0].x * 100.0]];
[endY0Field setStringValue:[NSString stringWithFormat:@"%.2f", [line endPointAtDelta:0].y * 100.0]];
[endX1Field setStringValue:[NSString stringWithFormat:@"%.2f", [line endPointAtDelta:1].x * 100.0]];
[endY1Field setStringValue:[NSString stringWithFormat:@"%.2f", [line endPointAtDelta:1].y * 100.0]];
[(NSMatrix *)[startX0Field controlView] setEnabled:([lines count] == 1)];
[(NSMatrix *)[endX0Field controlView] setEnabled:([lines count] == 1)];
[moveStartControl setFloatValue:[line moveStartDelta]];
[moveEndControl setFloatValue:[line moveEndDelta]];
[dissolveStartControl setFloatValue:[line dissolveStartDelta]];
[dissolveEndControl setFloatValue:[line dissolveEndDelta]];
[[self view] setNeedsDisplay:YES];
}
- (void) setValues:sender
{
NSPoint start0, end0, start1, end1;
float moveStart, moveEnd, dissolveStart, dissolveEnd;
NSArray *targets = [self targets];
NSEnumerator *lineEnum = [targets objectEnumerator];
MorphLine *line;
NSCell *cell = nil;
if ([sender isKindOfClass:[NSCell class]])
cell = sender;
else if ([sender respondsToSelector:@selector(selectedCell)])
cell = [sender selectedCell];
start0.x = [startX0Field floatValue] / 100.0;
start0.y = [startY0Field floatValue] / 100.0;
end0.x = [endX0Field floatValue] / 100.0;
end0.y = [endY0Field floatValue] / 100.0;
start1.x = [startX1Field floatValue] / 100.0;
start1.y = [startY1Field floatValue] / 100.0;
end1.x = [endX1Field floatValue] / 100.0;
end1.y = [endY1Field floatValue] / 100.0;
moveStart = [moveStartControl floatValue];
moveEnd = [moveEndControl floatValue];
dissolveStart = [dissolveStartControl floatValue];
dissolveEnd = [dissolveEndControl floatValue];
while ((line = [lineEnum nextObject]))
{
if (cell == startX0Field || cell == startY0Field)
[line setStartPoint:start0 atDelta:0];
else if (cell == startX1Field || cell == startY1Field)
[line setStartPoint:start1 atDelta:1];
else if (cell == endX0Field || cell == endY0Field)
[line setEndPoint:end0 atDelta:0];
else if (cell == endX1Field || cell == endY1Field)
[line setEndPoint:end1 atDelta:1];
else if (cell == moveStartControl)
[line setMoveStartDelta:moveStart];
else if (cell == moveEndControl)
[line setMoveEndDelta:moveEnd];
else if (cell == dissolveStartControl)
[line setDissolveStartDelta:dissolveStart];
else if (cell == dissolveEndControl)
[line setDissolveEndDelta:dissolveEnd];
else
NSLog (@"Warning:[MorphLineInspector setValues:] Unknown sender %@", sender);
}
[[NSNotificationQueue defaultQueue] enqueueNotification:[NSNotification notificationWithName:NOTIFICATION_SELECTION_CHANGED
object:[[[NSApplication sharedApplication] mainWindow] delegate]]
postingStyle:NSPostWhenIdle
coalesceMask:NSNotificationCoalescingOnName
forModes:nil];
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.