This is MiscConcreteShape.m in view mode; [Download] [Up]
/*
Copyright (c) Uwe Hoffmann, 1995.
All Rights Reserved.
Filename: MiscConcreteShape.m
Author: Uwe Hoffmann
Date: Sep 07, 1995
$Id: MiscConcreteShape.m,v 1.0 1995/09/07 11:22:00 Uwe Hoffmann Exp $
$Log: MiscConcreteShape.m,v $
*/
#import <appkit/appkit.h>
#import <foundation/foundation.h>
#import <foundation/NSArchiver.h>
#import "MiscConcreteShape.h"
#import "MiscUserPath.h"
#import "MiscHitPath.h"
@implementation MiscConcreteShape
- initBounds:(NSRect)aRect
{
path = [[MiscUserPath allocWithZone:[self zone]] init];
[self makePathWithBounds:aRect];
return self;
}
- (void)dealloc
{
[path release];
return [super dealloc];
}
- copyWithZone:(NSZone *)aZone
{
MiscConcreteShape *theCopy;
theCopy = (MiscConcreteShape *)NSCopyObject(self, 0, aZone);
theCopy->path = [path copyWithZone:aZone];
return theCopy;
}
- copy
{
return [self copyWithZone:NULL];
}
- (NSRect)bounds
{
return [path bounds];
}
- (void)moveTo:(NSPoint)aPos
{
NSRect r;
r = [path bounds];
r.origin = aPos;
[self fillParamsWithBounds:r];
}
- (void)sizeTo:(NSSize)aSize
{
NSRect r;
r = [path bounds];
r.size = aSize;
[self fillParamsWithBounds:r];
}
- (void)drawOutline
{
[path send:dps_ustroke cached:YES];
}
- (void)drawFill
{
[path send:dps_ufill cached:YES];
}
- (void)drawShadowWithDelta:(NSPoint)aPos
{
NSRect r;
NSPoint original;
r = [path bounds];
original = r.origin;
r.origin = aPos;
[self fillParamsWithBounds:r];
[path send:dps_ufill cached:YES];
r.origin = original;
[self fillParamsWithBounds:r];
}
- (BOOL)hit:(MiscHitPath *)hitPath
{
return [hitPath hit:dps_inufill path:path];
}
- initWithCoder:(NSCoder *)coder
{
[super initWithCoder:coder];
path = [[coder decodeObject] retain];
return self;
}
- (void)encodeWithCoder:(NSCoder *)coder
{
[super encodeWithCoder:coder];
[coder encodeObject:path];
}
- (void)makePathWithBounds:(NSRect)aRect
{
return;
}
- (void)fillParamsWithBounds:(NSRect)aRect
{
return;
}
+ (NSSize)calcSizeForInnerSize:(NSSize)aSize
{
NSSize s;
s.width = s.height = 0;
return s;
}
@end
BOOL straddles(NSPoint p1, NSPoint p2, NSPoint p3, NSPoint p4)
{
float crossP1, crossP2;
crossP1 = (p3.x - p1.x) * (p2.y - p1.y) - (p2.x - p1.x) * (p3.y - p1.y);
crossP2 = (p4.x - p1.x) * (p2.y - p1.y) - (p2.x - p1.x) * (p4.y - p1.y);
if((crossP1 > 0 && crossP2 < 0) || (crossP1 < 0 && crossP2 > 0)){
crossP1 = (p1.x - p3.x) * (p4.y - p3.y) - (p4.x - p3.x) * (p1.y - p3.y);
crossP2 = (p2.x - p3.x) * (p4.y - p3.y) - (p4.x - p3.x) * (p2.y - p3.y);
if((crossP1 > 0 && crossP2 < 0) || (crossP1 < 0 && crossP2 > 0))
return YES;
else
return NO;
} else
return NO;
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.