mirror of
https://github.com/id-Software/Quake-Tools.git
synced 2026-03-20 00:49:35 +01:00
Source release of QuakeEd, the map editing application on NEXTSTEP for Quake.
This commit is contained in:
72
QuakeEd/UserPath.h
Normal file
72
QuakeEd/UserPath.h
Normal file
@@ -0,0 +1,72 @@
|
||||
/*
|
||||
* UserPath.h by Bruce Blumberg, NeXT Computer, Inc.
|
||||
*
|
||||
* You may freely copy,distribute and re-use the code in this example. NeXT
|
||||
* disclaims any warranty of any kind, expressed or implied, as to its fitness
|
||||
* for any particular purpose
|
||||
*
|
||||
* This file and its associated .m file define a data structure and set of
|
||||
* functions aimed at facilitating the use of user paths. Here is a simple
|
||||
* example:
|
||||
*
|
||||
* UserPath *arect;
|
||||
* arect = newUserPath(); // creates an empty user path
|
||||
* beginUserPath(arect,YES); // initialize user path and cache
|
||||
* UPmoveto(arect,0.0,0.0); // add moveto to userpath; update bounding box
|
||||
* UPrlineto(arect,0.0,100.0); // add rlineto to path; update bounding box
|
||||
* UPrlineto(arect,100.0,0.0); // add rlineto to path; update bounding box
|
||||
* UPrlineto(arect,0.0,-100.0); // add rlineto to path; update bounding box
|
||||
* closePath(arect); // close path
|
||||
* endUserPath(arect,dps_stroke); // close user path and specify operator
|
||||
* sendUserPath(arect);
|
||||
*
|
||||
* As you will note, the set of routines manage the allocation and growth of
|
||||
* the operator and operand arrays, as well as the calculation of the bounding
|
||||
* box. A user path created via these functions may be optionally cached down
|
||||
* at the window server, or repeatedly sent down. The user paths created by
|
||||
* this set of functions are all allocated in a unique zone.
|
||||
*
|
||||
* Note: the associated file is a .m file because it pulls in some .h files
|
||||
* which reference objective C methods.
|
||||
*/
|
||||
|
||||
#import <objc/objc.h>
|
||||
#import <dpsclient/dpsclient.h>
|
||||
|
||||
typedef struct _UP {
|
||||
float *points;
|
||||
int numberOfPoints;
|
||||
char *ops;
|
||||
NXPoint cp;
|
||||
int numberOfOps;
|
||||
int max;
|
||||
float bbox[4];
|
||||
int opForUserPath;
|
||||
BOOL ping;
|
||||
} UserPath;
|
||||
|
||||
/* UserPath functions */
|
||||
NXZone *userPathZone();
|
||||
UserPath *newUserPath();
|
||||
void freeUserPath(UserPath *up);
|
||||
void debugUserPath(UserPath *up, BOOL shouldPing);
|
||||
void growUserPath(UserPath *up);
|
||||
void beginUserPath(UserPath *up, BOOL cache);
|
||||
void endUserPath(UserPath *up, int op);
|
||||
int sendUserPath(UserPath *up);
|
||||
void UPmoveto(UserPath *up, float x, float y);
|
||||
void UPrmoveto(UserPath *up, float x, float y);
|
||||
void UPlineto(UserPath *up, float x, float y);
|
||||
void UPrlineto(UserPath *up, float x, float y);
|
||||
void UPcurveto(UserPath *up, float x1, float y1, float x2, float y2, float x3,
|
||||
float y3);
|
||||
void UPrcurveto(UserPath *up, float dx1, float dy1, float dx2, float dy2,
|
||||
float dx3, float dy3);
|
||||
void UParc(UserPath *up, float x, float y, float r, float ang1, float ang2);
|
||||
void UParcn(UserPath *up, float x, float y, float r, float ang1, float ang2);
|
||||
void UParct(UserPath *up, float x1, float y1, float x2, float y2, float r);
|
||||
void closePath(UserPath *up);
|
||||
void addPts(UserPath *up, float x, float y);
|
||||
void addOp(UserPath *up, int op);
|
||||
void add(UserPath *up, int op, float x, float y);
|
||||
void checkBBox(UserPath *up, float x, float y);
|
||||
Reference in New Issue
Block a user