summaryrefslogtreecommitdiff
path: root/Misc.c
diff options
context:
space:
mode:
Diffstat (limited to 'Misc.c')
-rw-r--r--Misc.c204
1 files changed, 204 insertions, 0 deletions
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 <proto/exec.h>
+#include <proto/graphics.h>
+#include <proto/intuition.h>
+#include <proto/dos.h>
+
+#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++;
+ }
+}
+