home *** CD-ROM | disk | FTP | other *** search
/ OpenStep 4.2 / Openstep-4.2-Intel-Developer.iso / NextLibrary / Frameworks / Foundation.framework / Versions / B / Headers / NSGeometry.h < prev    next >
Encoding:
Text File  |  1996-10-25  |  3.6 KB  |  139 lines

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