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