ftp.nice.ch/pub/next/science/mathematics/MathArray.0.60.s.tar.gz#/MathArray.0.60/MathArray/NSGeometry.h

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

/* Interface for NSGeometry routines for GNUStep
   Copyright (C) 1994 NeXT Computer, Inc.
   
   This file is part of the GNU Objective C Class Library.

   This library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Library General Public
   License as published by the Free Software Foundation; either
   version 2 of the License, or (at your option) any later version.
   
   This library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Library General Public License for more details.
   
   You should have received a copy of the GNU Library General Public
   License along with this library; if not, write to the Free
   Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
   */ 

#ifndef __NSGeometry_h_OBJECTS_INCLUDE
#define __NSGeometry_h_OBJECTS_INCLUDE

#include <objc/objc.h>

/* Geometry */

typedef struct _NSPoint {	/* Point definition. */
    float x;
    float y;
} NSPoint;
	
typedef struct _NSSize {	/* Rectangle sizes. */
    float width;
    float height;
} NSSize;

typedef struct _NSRect {	/* Rectangle. */
    NSPoint origin;
    NSSize size;
} NSRect;

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

/* 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 rectangle 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 	NSOffsetRect(NSRect aRect, float dx, float dy);
extern NSRect 	NSInsetRect(NSRect aRect, float dX, float dY);
extern NSRect 	NSIntegralRect(NSRect aRect);
extern void 	NSDivideRect(NSRect aRect, NSRect *slice, NSRect *remainder,
			float amount, NSRectEdge edge);

/* Compute a third rectangle from two rectangles */
extern NSRect 	NSUnionRect(NSRect aRect, NSRect bRect);
extern NSRect   NSIntersectionRect (NSRect aRect, NSRect bRect);


/* Test geometrical 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);

#endif /* __NSGeometry_h_OBJECTS_INCLUDE */

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