ftp.nice.ch/Attic/openStep/implementation/gnustep/sources/libFoundation.0.7.tgz#/libFoundation-0.7/libFoundation/Foundation/NSGeometry.h

This is NSGeometry.h in view mode; [Download] [Up]

/* 
   NSGeometry.h

   Copyright (C) 1995, 1996 Ovidiu Predescu and Mircea Oancea.
   All rights reserved.

   Author: Mircea Oancea <mircea@jupiter.elcom.pub.ro>

   This file is part of libFoundation.

   Permission to use, copy, modify, and distribute this software and its
   documentation for any purpose and without fee is hereby granted, provided
   that the above copyright notice appear in all copies and that both that
   copyright notice and this permission notice appear in supporting
   documentation.

   We disclaim all warranties with regard to this software, including all
   implied warranties of merchantability and fitness, in no event shall
   we be liable for any special, indirect or consequential damages or any
   damages whatsoever resulting from loss of use, data or profits, whether in
   an action of contract, negligence or other tortious action, arising out of
   or in connection with the use or performance of this software.
*/

#ifndef __NSGeometry_h__
#define __NSGeometry_h__

#include <objc/objc.h>

/* Geometry */

@class NSString;

typedef struct _NSPoint {float x; float y;} NSPoint;
typedef struct _NSSize  {float width; float height;} NSSize;
typedef struct _NSRect {NSPoint origin;NSSize size;} NSRect;

typedef enum {NSMinXEdge, NSMinYEdge,  NSMaxXEdge, NSMaxYEdge} NSRectEdge;

// Constants

#define NSZeroPoint ((NSPoint){0,0})
#define NSZeroRect ((NSRect){{0,0},{0,0}})
#define NSZeroSize ((NSSize){0,0})

// Create Basic Structures
extern NSPoint	NSMakePoint(float x, float y);
extern NSSize	NSMakeSize(float w, float h);
extern NSRect	NSMakeRect(float x, float y, float w, float h);

// Get a Rectangle's Coordinates
extern float NSMaxX(NSRect aRect);
extern float NSMaxY(NSRect aRect);
extern float NSMidX(NSRect aRect);
extern float NSMidY(NSRect aRect);
extern float NSMinX(NSRect aRect);
extern float NSMinY(NSRect aRect);
extern float NSWidth(NSRect aRect);
extern float NSHeight(NSRect aRect);

// Modify a Copy of a Rectangle
extern NSRect 	NSInsetRect(NSRect aRect, float dX, float dY);
extern NSRect 	NSOffsetRect(NSRect aRect, float dx, float dy);
extern void 	NSDivideRect(NSRect aRect, NSRect *slice, NSRect *remainder,
			     float amount, NSRectEdge edge);
extern NSRect 	NSIntegralRect(NSRect aRect);

// Compute a Third Rectangle from Two Rectangles
extern NSRect 	NSUnionRect(NSRect aRect, NSRect bRect);
extern NSRect   NSIntersectionRect (NSRect aRect, NSRect bRect);


// Test Geometric Relationships
extern BOOL 	NSEqualRects(NSRect aRect, NSRect bRect);
extern BOOL 	NSEqualSizes(NSSize aSize, NSSize bSize);
extern BOOL 	NSEqualPoints(NSPoint aPoint, NSPoint bPoint);
extern BOOL 	NSIsEmptyRect(NSRect aRect);
extern BOOL 	NSMouseInRect(NSPoint aPoint, NSRect aRect, BOOL flipped);
extern BOOL 	NSPointInRect(NSPoint aPoint, NSRect aRect);
extern BOOL 	NSContainsRect(NSRect aRect, NSRect bRect);
extern BOOL	NSIntersectsRect(NSRect aRect, NSRect bRect);

// Get a String Representation

extern NSString* NSStringFromPoint(NSPoint aPoint);
extern NSString* NSStringFromRect(NSRect aRect);
extern NSString* NSStringFromSize(NSSize aSize);

// Make from String Representation

extern NSPoint	NSPointFromString(NSString* string);
extern NSSize	NSSizeFromString(NSString* string);
extern NSRect	NSRectFromString(NSString* string);

#endif /* __NSGeometry_h__ */

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.