From 62e509e9c90d728c9f65145947276f79112ab48c Mon Sep 17 00:00:00 2001 From: "Christian A. Weber" Date: Tue, 2 Nov 1993 18:53:33 +0000 Subject: Initial revision --- Misc.c | 204 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 204 insertions(+) create mode 100644 Misc.c (limited to 'Misc.c') diff --git a/Misc.c b/Misc.c new file mode 100644 index 0000000..b4d2fdb --- /dev/null +++ b/Misc.c @@ -0,0 +1,204 @@ +#include +#include +#include +#include + +#include "Bobi.h" + +extern struct Screen *mainscreen; +extern struct Window *mainwindow,*toolwindow; +extern WORD options; +extern UWORD mainpalette[],Palette[]; +extern BYTE defaultorg; +extern struct MenuItem LayerModeMenuItem,OrgGridMenuItem, + BobBordersMenuItem,CollisionRectMenuItem, + FirstDefaultOrgSubItem; +extern BYTE arexxflag; + +/**************************************************************************** +** Requester mit einem OK-Gadget anzeigen +*/ + +void ShowMonoReq2(char *text) +{ + LockWindows(); + ShowRequest(text,0," OK ",0x8000); + UnLockWindows(); +} + +/**************************************************************************** +** Requester mit PosText und "Cancel" anzeigen +*/ + +BOOL ShowRequest2(char *text,char *postext) +{ + BOOL val; + LockWindows(); + val = ShowRequest(text,postext,"CANCEL",0x8000); + UnLockWindows(); + return(val); +} + +/**************************************************************************** +** 'Can't open file' plus Text ausgeben +*/ + +void ShowFileError(char *name) +{ + char buf[200]; + sprintf(buf,"Can't open file\n'%s' !",name); + ShowMonoReq2(buf); +} + +/**************************************************************************** +** File zum Schreiben öffnen und Requester bringen falls es schon existiert +*/ + +BPTR OpenNewFileSafely(char *name) +{ + register BPTR file; + char buf[200]; + + if(!arexxflag) /* Wenn das Kommando von ARexx kommt wird nix getestet */ + { + if(file=Lock(name,ACCESS_READ)) + { + UnLock(file); + sprintf(buf,"Warning: The file\n'%s'\nexists. Save over top of it?",name); + if(!ShowRequest2(buf,"YES")) return 0; + } + } + + if(!(file=Open(name,MODE_NEWFILE))) + { + ShowFileError(name); + return 0; + } + + return file; +} + +/**************************************************************************** +** Rahmen in gewünschter Farbe zeichnen +*/ + +void DrawRect(struct RastPort *rp,WORD x0,WORD y0,WORD x1,WORD y1,WORD col) +{ + SetDrMd(rp,JAM1); + SetAPen(rp,col); + Move(rp,x0,y0); + Draw(rp,x1,y0); + Draw(rp,x1,y1); + Draw(rp,x0,y1); + Draw(rp,x0,y0); +} + +/**************************************************************************** +** Fadenkreuz zeichnen +*/ + +void DrawCross(struct Screen *screen,WORD x,WORD y) +{ + if(x>=0) + { + register struct RastPort *rp = &(screen->RastPort); + SetDrMd(rp,COMPLEMENT); + Move(rp,0,y); + Draw(rp,screen->Width-1,y); + Move(rp,x,0); + Draw(rp,x,screen->Height-1); + } +} + +/**************************************************************************** +** MainScreen-Farbpalette setzen +*/ + +void LoadPalette(UWORD *pal) +{ + LoadRGB4(&(mainscreen->ViewPort),pal,32); +} + +/**************************************************************************** +** Menus abschalten und Snooze-Pointer setzen +*/ + +static WORD LockCntr; + +void LockWindows() +{ + if(!LockCntr) + { + LoadPalette(Palette); + Snooze(mainwindow); + if(toolwindow) Snooze(toolwindow); + } + LockCntr++; +} + +/**************************************************************************** +** Windows wieder unlocken +*/ + +void UnLockWindows() +{ + if(LockCntr>0) --LockCntr; + + if(!LockCntr) + { + if(toolwindow) UnSnooze(toolwindow); + UnSnooze(mainwindow); + LoadPalette(mainpalette); + } +} + +/**************************************************************************** +** Globale Optionen setzen und in den Menuitems updaten +*/ + +void SetGlobalOptions(WORD opts, BYTE deforg) +{ + struct MenuItem *item; + int i; + + options = opts; + if(opts & GOF_LAYERMODE) LayerModeMenuItem.Flags |= CHECKED; + else LayerModeMenuItem.Flags &= ~CHECKED; + if(opts & GOF_ORGGRID) OrgGridMenuItem.Flags |= CHECKED; + else OrgGridMenuItem.Flags &= ~CHECKED; + if(opts & GOF_BOBBORDERS) BobBordersMenuItem.Flags |= CHECKED; + else BobBordersMenuItem.Flags &= ~CHECKED; + if(opts & GOF_COLLISIONRECT) CollisionRectMenuItem.Flags |= CHECKED; + else CollisionRectMenuItem.Flags &= ~CHECKED; + + defaultorg = deforg; + + for(i=0,item = &FirstDefaultOrgSubItem; item; item=item->NextItem,++i) + { + if(i == defaultorg) item->Flags |= CHECKED; + else item->Flags &= ~CHECKED; + } +} + +/**************************************************************************** +** Globale Optionen aus den Menuitems auslesen +*/ + +void GetGlobalOptions() +{ + struct MenuItem *item; + + options=0; + if(LayerModeMenuItem.Flags & CHECKED) options |= GOF_LAYERMODE; + if(OrgGridMenuItem.Flags & CHECKED) options |= GOF_ORGGRID; + if(BobBordersMenuItem.Flags & CHECKED) options |= GOF_BOBBORDERS; + if(CollisionRectMenuItem.Flags & CHECKED) options |= GOF_COLLISIONRECT; + + defaultorg=0; + for(item = &FirstDefaultOrgSubItem; item; item=item->NextItem) + { + if(item->Flags & CHECKED) break; + defaultorg++; + } +} + -- cgit v1.2.3