1{%mainunit foundation.pas} 2{ NSGeometry.h 3 Copyright (c) 1994-2005, Apple, Inc. All rights reserved. 4} 5 6{$ifdef HEADER} 7{$ifndef NSGEOMETRY_PAS_H} 8{$define NSGEOMETRY_PAS_H} 9 10{#import <Foundation/NSValue.h> 11#import <Foundation/NSCoder.h>} 12 13//@class NSString; 14 15type 16 NSPoint = record 17 x: cfloat; 18 y: cfloat; 19 end; 20 21 NSPointPointer = ^NSPoint; 22 NSPointArray = ^NSPoint; 23 24 NSSize = record 25 width: cfloat; { should never be negative } 26 height: cfloat; { should never be negative } 27 end; 28 29//typedef NSSize *NSSizePointer; 30//typedef NSSize *NSSizeArray; 31 32 NSRect = record 33 origin: NSPoint; 34 size: NSSize; 35 end; 36 37(*typedef NSRect *NSRectPointer; 38typedef NSRect *NSRectArray; 39 40typedef enum _NSRectEdge { 41 NSMinXEdge = 0, 42 NSMinYEdge = 1, 43 NSMaxXEdge = 2, 44 NSMaxYEdge = 3 45} NSRectEdge; 46 47FOUNDATION_EXPORT const NSPoint NSZeroPoint; 48FOUNDATION_EXPORT const NSSize NSZeroSize; 49FOUNDATION_EXPORT const NSRect NSZeroRect; 50 51FOUNDATION_STATIC_INLINE NSPoint NSMakePoint(float x, float y) { 52 NSPoint p; 53 p.x = x; 54 p.y = y; 55 return p; 56} 57 58FOUNDATION_STATIC_INLINE NSSize NSMakeSize(float w, float h) { 59 NSSize s; 60 s.width = w; 61 s.height = h; 62 return s; 63} 64 65FOUNDATION_STATIC_INLINE NSRect NSMakeRect(float x, float y, float w, float h) { 66 NSRect r; 67 r.origin.x = x; 68 r.origin.y = y; 69 r.size.width = w; 70 r.size.height = h; 71 return r; 72} 73 74FOUNDATION_STATIC_INLINE float NSMaxX(NSRect aRect) { 75 return (aRect.origin.x + aRect.size.width); 76} 77 78FOUNDATION_STATIC_INLINE float NSMaxY(NSRect aRect) { 79 return (aRect.origin.y + aRect.size.height); 80} 81 82FOUNDATION_STATIC_INLINE float NSMidX(NSRect aRect) { 83 return (aRect.origin.x + aRect.size.width / 2.0); 84} 85 86FOUNDATION_STATIC_INLINE float NSMidY(NSRect aRect) { 87 return (aRect.origin.y + aRect.size.height / 2.0); 88} 89 90FOUNDATION_STATIC_INLINE float NSMinX(NSRect aRect) { 91 return (aRect.origin.x); 92} 93 94FOUNDATION_STATIC_INLINE float NSMinY(NSRect aRect) { 95 return (aRect.origin.y); 96} 97 98FOUNDATION_STATIC_INLINE float NSWidth(NSRect aRect) { 99 return (aRect.size.width); 100} 101 102FOUNDATION_STATIC_INLINE float NSHeight(NSRect aRect) { 103 return (aRect.size.height); 104} 105*) 106{FOUNDATION_EXPORT BOOL NSEqualPoints(NSPoint aPoint, NSPoint bPoint); 107FOUNDATION_EXPORT BOOL NSEqualSizes(NSSize aSize, NSSize bSize); 108FOUNDATION_EXPORT BOOL NSEqualRects(NSRect aRect, NSRect bRect); 109FOUNDATION_EXPORT BOOL NSIsEmptyRect(NSRect aRect); 110 111FOUNDATION_EXPORT NSRect NSInsetRect(NSRect aRect, float dX, float dY); 112FOUNDATION_EXPORT NSRect NSIntegralRect(NSRect aRect); 113FOUNDATION_EXPORT NSRect NSUnionRect(NSRect aRect, NSRect bRect); 114FOUNDATION_EXPORT NSRect NSIntersectionRect(NSRect aRect, NSRect bRect); 115FOUNDATION_EXPORT NSRect NSOffsetRect(NSRect aRect, float dX, float dY); 116FOUNDATION_EXPORT void NSDivideRect(NSRect inRect, NSRect *slice, NSRect *rem, float amount, NSRectEdge edge); 117FOUNDATION_EXPORT BOOL NSPointInRect(NSPoint aPoint, NSRect aRect); 118FOUNDATION_EXPORT BOOL NSMouseInRect(NSPoint aPoint, NSRect aRect, BOOL flipped); 119FOUNDATION_EXPORT BOOL NSContainsRect(NSRect aRect, NSRect bRect); 120FOUNDATION_EXPORT BOOL NSIntersectsRect(NSRect aRect, NSRect bRect); 121 122FOUNDATION_EXPORT NSString *NSStringFromPoint(NSPoint aPoint); 123FOUNDATION_EXPORT NSString *NSStringFromSize(NSSize aSize); 124FOUNDATION_EXPORT NSString *NSStringFromRect(NSRect aRect); 125FOUNDATION_EXPORT NSPoint NSPointFromString(NSString *aString); 126FOUNDATION_EXPORT NSSize NSSizeFromString(NSString *aString); 127FOUNDATION_EXPORT NSRect NSRectFromString(NSString *aString); 128 129@interface NSValue (NSValueGeometryExtensions) 130 131+ (NSValue *)valueWithPoint:(NSPoint)point; 132+ (NSValue *)valueWithSize:(NSSize)size; 133+ (NSValue *)valueWithRect:(NSRect)rect; 134 135- (NSPoint)pointValue; 136- (NSSize)sizeValue; 137- (NSRect)rectValue; 138 139@end 140 141@interface NSCoder (NSGeometryCoding) 142 143- (void)encodePoint:(NSPoint)point; 144- (NSPoint)decodePoint; 145 146- (void)encodeSize:(NSSize)size; 147- (NSSize)decodeSize; 148 149- (void)encodeRect:(NSRect)rect; 150- (NSRect)decodeRect; 151 152@end} 153 154{$endif} 155{$endif} 156 157