home *** CD-ROM | disk | FTP | other *** search
- /************************************************************\
- * SCREEN MOD *
- * *
- * A little utility to make life just that oh, little *
- * bit easier .... have fun! *
- * *
- * This program, source code, and documentation are *
- * Copyrighted ©1991 by Legendary Design Technologies Inc. *
- * but are freely distributable. *
- * *
- * Written by Syd L. Bolton on May 1, 1991 at ~ 11:00pm *
- * *
- * Version: 1.0 *
- \************************************************************/
-
- #include <stdio.h>
- #include <exec/types.h>
- #include <exec/ports.h>
- #include <exec/io.h>
- #include <exec/memory.h>
- #include <libraries/dos.h>
- #include <libraries/dosextens.h>
- #include <intuition/intuition.h>
- #include <intuition/intuitionbase.h>
- #include <graphics/gfxbase.h>
- #include <functions.h>
-
- #include "main.h"
-
- #define VMODES Screens[scr]->ViewPort.Modes /* shortcut */
-
- long *IntuitionBase=0,*GfxBase=0;
- struct Screen *Screen;
- struct Window *Window;
- struct RastPort *rport;
- struct ViewPort *vport;
-
- struct Screen *Screens[20];
-
- char string[80],origtitle[80];
- int count,origwidth,origheight,scr=0;
-
- main(argc,argv)
- int argc;
- char *argv[];
- {
- struct IntuiMessage *message;
- ULONG class;
- int exit_flag=0;
-
- openstuff();
-
- if (argc > 1) {
- if((!(strcmp(argv[1],"small")))||(!(strcmp(argv[1],"SMALL")))) {
- iconify();
- goto mloop;
- }
- }
-
- opendisplay();
- screenlist();
- updatestats();
-
- mloop:
- do {
- WaitPort(Window->UserPort);
- while ( ( message=(struct IntuiMessage *)
- GetMsg(Window->UserPort) ) != NULL)
- {
- class=message->Class;
- ReplyMsg(message);
-
- if (class==GADGETUP) option(message);
- if (class==MOUSEBUTTONS) click(message);
- if (class==MENUPICK) exit_flag=menu(message);
- if (class==VANILLAKEY) keystroke(message);
- }
- } while (exit_flag==0);
-
- closestuff();
- }
-
- #include "message.c"
- #include "save.c"
- #include "iconify.c"
- #include "palette.c"
-
- keystroke(message)
- struct IntuiMessage *message;
- {
- switch(message->Code) {
- case 'R':
- case 'r': remakescreen();
- break;
-
- case 'V':
- case 'v': viewscreen();
- break;
-
- case 'H':
- case 'h': Message(2); /* help */
- break;
-
- case 'A':
- case 'a': adjustcolor();
- break;
-
- case 'U':
- case 'u': screenlist();
- scr=0;
- updatestats();
- break;
-
- case 27: strcpy(Gadget3SIBuff,"0");
- strcpy(Gadget4SIBuff,"0");
- strcpy(Gadget5SIBuff,"640");
- strcpy(Gadget6SIBuff,"200");
- strcpy(Gadget7SIBuff,"0");
- strcpy(Gadget8SIBuff,"1");
- strcpy(Gadget9SIBuff,"ScreenMod v1.0 ©1991 Legendary Design Technologies Inc.");
- strcpy(Gadget10SIBuff,Gadget9SIBuff);
- Gadget12.Flags |= SELECTED;
- Gadget13.Flags &= ~SELECTED;
- Gadget14.Flags |= SELECTED;
- Gadget15.Flags &= ~SELECTED;
- Gadget16.Flags &= ~SELECTED;
- Gadget17.Flags &= ~SELECTED;
- remakescreen();
- screenlist();
- scr=0;
- updatestats();
- break;
-
- default: break;
- }
- }
-
- menu(message)
- struct IntuiMessage *message;
- {
- int rv=0;
-
- switch(MENUNUM(message->Code)) {
- case 0: rv=project(message);
- break;
-
- case 1: rv=special(message);
- break;
-
- default: break;
- }
- return(rv);
- }
-
- project(message)
- struct IntuiMessage *message;
- {
- switch(ITEMNUM(message->Code)) {
-
- case 0: save();
- break; /* save settings */
-
- case 1: Message(1); /* about */
- break;
-
- case 2: Message(2); /* help */
- break;
-
- case 3: return(1); /* quit */
-
- default: break;
- }
- return(0);
- }
-
- special(message)
- struct IntuiMessage *message;
- {
- int rv=0;
-
- switch(ITEMNUM(message->Code)) {
-
- case 0: rv=iconify();
- break;
-
- default: break;
- }
- return(rv);
- }
-
- click(message)
- struct IntuiMessage *message;
- {
- int x,y;
-
- if(!(message->Code==SELECTUP))
- return();
-
- x=message->MouseX;
- y=message->MouseY;
-
- if (x < 12 || x > 340 || y < 26 || y > 196)
- return();
-
- y=(y-28)/10;
-
- if (y >count-1) return();
-
- displaysname(scr,1,0);
- scr=y;
- updatestats();
- }
-
- option(message)
- struct IntuiMessage *message;
- {
- struct Gadget *igad;
- int gadgid;
-
- igad=(struct Gadget *) message->IAddress;
- gadgid=igad->GadgetID;
-
- switch(gadgid) {
- case 20: screenlist();
- scr=0;
- updatestats();
-
- case 30: remakescreen();
- break;
-
- case 40: adjustcolor();
- break;
-
- case 50: viewscreen();
- break;
-
- default: break;
- }
- }
-
- viewscreen()
- {
- struct IntuiMessage *waitmsg;
-
- if (scr==0) return(); /* screen already in front */
- ScreenToFront(Screens[scr]);
- WaitPort(Window->UserPort);
- while ( ( waitmsg=(struct IntuiMessage *)
- GetMsg(Window->UserPort) ) != NULL)
- ReplyMsg(waitmsg);
- ScreenToFront(Screens[0]);
- }
-
- adjustcolor()
- {
- ScreenToFront(Screens[scr]);
- doPalette(Screens[scr]);
- ScreenToFront(Screens[0]); /* this brings SCREENMOD back */
- }
-
- remakescreen()
- {
- Screens[scr]->LeftEdge=atoi(Gadget3SIBuff);
- Screens[scr]->TopEdge=atoi(Gadget4SIBuff);
- Screens[scr]->Width=atoi(Gadget5SIBuff);
- Screens[scr]->Height=atoi(Gadget6SIBuff);
- Screens[scr]->DetailPen=atoi(Gadget7SIBuff);
- Screens[scr]->BlockPen=atoi(Gadget8SIBuff);
- strcpy(Screens[scr]->Title,Gadget9SIBuff);
- strcpy(Screens[scr]->DefaultTitle,Gadget10SIBuff);
- Screens[scr]->ViewPort.DxOffset=atoi(Gadget3SIBuff);
- Screens[scr]->ViewPort.DyOffset=atoi(Gadget4SIBuff);
- if (Gadget12.Flags & SELECTED) Screens[scr]->ViewPort.Modes |= HIRES;
- else Screens[scr]->ViewPort.Modes &= ~HIRES;
- if (Gadget13.Flags & SELECTED) Screens[scr]->ViewPort.Modes |= LACE;
- else Screens[scr]->ViewPort.Modes &= ~LACE;
- if (Gadget14.Flags & SELECTED) Screens[scr]->ViewPort.Modes |= SPRITES;
- else Screens[scr]->ViewPort.Modes &= ~SPRITES;
- if (Gadget15.Flags & SELECTED) Screens[scr]->ViewPort.Modes |= DUALPF;
- else Screens[scr]->ViewPort.Modes &= ~DUALPF;
- if (Gadget16.Flags & SELECTED) Screens[scr]->ViewPort.Modes |= HAM;
- else Screens[scr]->ViewPort.Modes &= ~HAM;
- if (Gadget17.Flags & SELECTED) Screens[scr]->ViewPort.Modes |= EXTRA_HALFBRITE;
- else Screens[scr]->ViewPort.Modes &= ~EXTRA_HALFBRITE;
- RemakeDisplay();
- if (Screens[scr]->Flags & SHOWTITLE) ShowTitle(Screens[scr],TRUE);
- }
-
- updatestats()
- {
- int i,j;
-
- sprintf(Gadget3SIBuff,"%-d",Screens[scr]->LeftEdge);
- sprintf(Gadget4SIBuff,"%-d",Screens[scr]->TopEdge);
- sprintf(Gadget5SIBuff,"%-d",Screens[scr]->Width);
- sprintf(Gadget6SIBuff,"%-d",Screens[scr]->Height);
- sprintf(Gadget7SIBuff,"%-d",Screens[scr]->DetailPen);
- sprintf(Gadget8SIBuff,"%-d",Screens[scr]->BlockPen);
- strcpy(Gadget9SIBuff,Screens[scr]->Title);
- strcpy(Gadget10SIBuff,Screens[scr]->DefaultTitle);
- strcpy(Gadget11SIBuff,(STRPTR)Screens[scr]->Font.ta_Name);
- strcpy(origtitle,Screens[scr]->DefaultTitle);
- origheight=Screens[scr]->Height;
- origwidth=Screens[scr]->Width;
- SetAPen(rport,0);
- for (i=0; i<2; i++) {
- for (j=0; j<3; j++)
- RectFill(rport,357+j*97,132+i*16,357+76+j*97,132+8+i*16);
- }
- if (VMODES & HIRES) Gadget12.Flags |= SELECTED;
- else Gadget12.Flags &= ~SELECTED;
- if (VMODES & LACE) Gadget13.Flags |= SELECTED;
- else Gadget13.Flags &= ~SELECTED;
- if (VMODES & SPRITES) Gadget14.Flags |= SELECTED;
- else Gadget14.Flags &= ~SELECTED;
- if (VMODES & DUALPF) Gadget15.Flags |= SELECTED;
- else Gadget15.Flags &= ~SELECTED;
- if (VMODES & HAM) Gadget16.Flags |= SELECTED;
- else Gadget16.Flags &= ~SELECTED;
- if (VMODES & EXTRA_HALFBRITE) Gadget17.Flags |= SELECTED;
- else Gadget17.Flags &= ~SELECTED;
- RefreshGadgets(&Gadget3,Window,NULL);
- displaysname(scr,3,1);
- }
-
- screenlist()
- {
- int done=0,i;
-
- count=0;
-
- Screens[0]=IntuitionBase->FirstScreen;
-
- do {
- Screens[count+1]=Screens[count]->NextScreen;
- if (Screens[count+1]==NULL) done=1;
- count++;
- if (count==17) done=1;
- } while (done==0);
-
- for (i=0; i<count; i++)
- displaysname(i,1,0);
- }
-
- displaysname(i,a,b)
- int i,a,b;
- {
- char tempstring[15];
-
- SetAPen(rport,a); SetBPen(rport,b);
- sprintf(string,"%-30s",Screens[i]->Title);
- string[30]=' ';string[31]='\0';
- if (Screens[i]->Title[0]=='\0') strcpy(string,"** NO NAME ** ");
- sprintf(tempstring,"%4dX%-4d",Screens[i]->Width,Screens[i]->Height);
- strcat(string,tempstring);
- Move(rport,15,35+i*10);
- Text(rport,string,strlen(string));
- }
-
- openstuff()
- {
- if((IntuitionBase=OpenLibrary("intuition.library",0L))==NULL)
- exit(1);
- if((GfxBase=OpenLibrary("graphics.library",0L))==NULL)
- exit(1);
- }
-
- opendisplay()
- {
- if(!(Screen=OpenScreen(&NewScreenStructure))) {
- puts("Can't open screen!");
- closestuff();
- exit(1);
- }
-
- NewWindowStructure1.Screen=Screen;
-
- if (!(Window=OpenWindow(&NewWindowStructure1))) {
- puts("Cannot open the window.");
- closestuff();
- exit(1);
- }
- vport=&Screen->ViewPort;
-
- LoadRGB4(vport,&Palette[0],PaletteColorCount);
-
- rport=Window->RPort;
- PrintIText(rport,&IntuiTextList1,0,0);
- DrawBorder(rport,&BorderList1,0,0);
- SetMenuStrip(Window,&MenuList1);
- }
-
- closestuff()
- {
- if (Window) ClearMenuStrip(Window);
- if (Window) CloseWindow(Window);
- if (Screen) CloseScreen(Screen);
- if (IntuitionBase) CloseLibrary(IntuitionBase);
- if (GfxBase) CloseLibrary(GfxBase);
- }
-