home *** CD-ROM | disk | FTP | other *** search
-
- /*
- * SUBS.C
- */
-
- #include "defs.h"
-
- Prototype TplRegion *IdToRegion(long);
- Prototype TplRegion *FindRegion(short, short);
- Prototype TplRegion *FindRegionByGad(Gadget *);
- Prototype void ClearLinks(TplRegion *);
- Prototype long RegionToId(TplRegion *);
- Prototype void *zalloc(long);
- Prototype void DrawBox(Box *);
- Prototype void FixBounds(Box *);
- Prototype void AddNode(List *, char *, short);
- Prototype int GetSaveFile(char *);
-
- TplRegion *
- IdToRegion(id)
- long id;
- {
- TplRegion *rg;
-
- for (rg = GetHead(&RegList); rg; rg = GetSucc(&rg->rg_Node)) {
- if (rg->rg_Id == id)
- break;
- }
- return(rg);
- }
-
- TplRegion *
- FindRegion(x, y)
- short x;
- short y;
- {
- TplRegion *rg;
-
- for (rg = GetHead(&RegList); rg; rg = GetSucc(&rg->rg_Node)) {
- if (rg->rg_Box.bo_Xs - 2 <= x && x <= rg->rg_Box.bo_Xe + 2) {
- if (rg->rg_Box.bo_Ys - 2 <= y && y <= rg->rg_Box.bo_Ye + 2)
- return(rg);
- }
- }
- return(NULL);
- }
-
- TplRegion *
- FindRegionByGad(gad)
- Gadget *gad;
- {
- TplRegion *rg;
-
- for (rg = GetHead(&RegList); rg; rg = GetSucc(&rg->rg_Node)) {
- if (rg->rg_Gad == gad)
- return(rg);
- }
- return(NULL);
- }
-
-
-
- long
- RegionToId(rg)
- TplRegion *rg;
- {
- if (rg)
- return(rg->rg_Id);
- return(0);
- }
-
- void *
- zalloc(bytes)
- long bytes;
- {
- void *ptr;
-
- if (ptr = malloc(bytes)) {
- clrmem(ptr, bytes);
- return(ptr);
- }
- puts("No Memory!");
- exit(30);
- }
-
- void
- DrawBox(box)
- Box *box;
- {
- RastPort *rp = Win->RPort;
-
- SetDrMd(rp, COMPLEMENT);
- Move(rp, box->bo_Xs, box->bo_Ys);
- Draw(rp, box->bo_Xe, box->bo_Ys);
- Draw(rp, box->bo_Xe, box->bo_Ye);
- Draw(rp, box->bo_Xs, box->bo_Ye);
- Draw(rp, box->bo_Xs, box->bo_Ys);
- }
-
- void
- FixBounds(box)
- Box *box;
- {
- long t;
-
- if (box->bo_Xe < box->bo_Xs) {
- t = box->bo_Xe;
- box->bo_Xe = box->bo_Xs;
- box->bo_Xs = t;
- }
- if (box->bo_Ye < box->bo_Ys) {
- t = box->bo_Ye;
- box->bo_Ye = box->bo_Ys;
- box->bo_Ys = t;
- }
- }
-
- void
- AddNode(list, str, alloc)
- List *list;
- char *str;
- short alloc;
- {
- MaxNode *node = zalloc(sizeof(MaxNode));
- node->ln_Name = (alloc) ? strdup(str) : str;
- AddTail((MaxList *)list, node);
- }
-
- int
- GetSaveFile(buf)
- char *buf;
- {
- FileRequester *freq;
- int r = -1;
-
- if (freq = AllocFileRequest()) {
- if (RequestFile(freq)) {
- short i = strlen(freq->rf_Dir) - 1;
- strcpy(buf, freq->rf_Dir);
- if (i >= 0 && buf[i] != '/' && buf[i] != ':')
- strcat(buf, "/");
- strcat(buf, freq->rf_File);
- r = 0;
- }
- FreeFileRequest(freq);
- }
- return(r);
- }
-
- void
- ClearLinks(rn)
- TplRegion *rn;
- {
- TplRegion *rg;
-
- for (rg = GetHead(&RegList); rg; rg = GetSucc(&rg->rg_Node)) {
- if (rn == rg->rg_LinkLeft)
- rg->rg_LinkLeft = NULL;
- if (rn == rg->rg_LinkRight)
- rg->rg_LinkRight = NULL;
- if (rn == rg->rg_LinkUp)
- rg->rg_LinkUp = NULL;
- if (rn == rg->rg_LinkDown)
- rg->rg_LinkDown = NULL;
- if (rn == rg->rg_LockedTo)
- rg->rg_LockedTo = NULL;
- }
- }
-
-