#ifndef _util_ #define _util_ #include #include #include /******************************************************************** * Declarations of routines/operators which are defined by TNT/NeWS. * NOTE: this should really be in the PdB include directory */ typedef float *rectangle; operator float random(); operator int currenttimems(); operator void breakpoint(); operator void undef(dicttype, name); operator char *cvns(name); operator any *EXEC(any proc) = "[exch cvx exec]"; operator any *EXEC(any proc, any *args) = "[3 1 roll aload length 1 add -1 roll cvx exec]"; operator void rectpath(rectangle r) = "aload pop rectpath"; operator void ovalpath(rectangle r) = "aload pop rectpath"; operator char *append(char *, char *); operator any *append(any *,any *); operator any *arraydelete(any *a, int i) = "exch dup length array copy exch arraydelete"; operator any *arrayinsert(any *a, int i, any value); operator int arrayindex(any *a, any m) = "arrayindex not -1 if"; operator dicttype growabledict(); operator void cleanoutdict(dicttype); operator canvastype currentinputfocus(); operator char **search(char *,char *) = "search {3 array astore} {pop null} ifelse"; operator fonttype printermatchfont(fonttype,boolean); operator boolean pointinrect(rectangle,float,float) = "3 -1 roll aload pop 6 -2 roll pointinrect?"; operator boolean pointinrect(float,float,float,float,float,float) = "pointinrect?"; operator float stringwidthonly(char *str) = "stringwidth pop"; operator float stringwidthonly(fonttype f, char *str) = "exch currentfont exch setfont exch stringwidth pop exch setfont"; operator void fill(colortype c) = "setcolor fill"; operator void fill(float g) = "setgray fill"; operator void eofill(colortype c) = "setcolor eofill"; operator void eofill(float g) = "setgray eofill"; operator void stroke(colortype c) = "setcolor stroke"; operator void stroke(float g) = "setgray stroke"; operator float *colorrgb(colortype c) = "colorrgb 3 array astore"; operator void dbgbreak(any); /******************************************************************** * Operators and routines from util.pdb */ extern matrixtype mtranslate(matrixtype mx, float x, float y); extern void setxorop(colortype bg, colortype fg); extern rectangle insetstroke(float n, rectangle r); extern boolean rectinrect(rectangle big, rectangle small); extern name truedicttype(any); extern boolean cmp(any,any); extern char *lit_char(int n); extern boolean name_ok(name nm); extern int stringpos(fonttype f, char *str, float x); extern any *GetInterval(any *p, int n, int m); operator char *interval(char *, int from, int len) = "GetInterval"; operator any *interval(any *, int from, int len) = "GetInterval"; operator any *tailinterval(any *, int len) = "1 index length 1 index sub GetInterval"; operator char *tailinterval(char *, int len) = "1 index length 1 index sub GetInterval"; operator any *headinterval(any *, int len) = "0 exch GetInterval"; operator char *headinterval(char *, int len) = "0 exch GetInterval"; operator void DEBUG(char *, any *) = "sprintf DEBUG"; operator void DEBUG(any); operator void STACK(); extern float screenheight; extern float screenwidth; #endif