SMPlayC
/*includes*/
#include <stdio.h>
#include <exec/types.h>
#include <exec/nodes.h>
#include <exec/lists.h>
#include <intuition/intuition.h>
#include <proto/exec.h>
#include <proto/intuition.h>
#include <stdlib.h>
#define LOAD 1
#define PLAY 2
/*Global Variables & Structures*/
USHORT wakeup; /* Wake me up for event */
USHORT class; /* Intu event class */
USHORT code; /* Intu event code */
APTR IAddress;
int ecode;
USHORT gid;
struct Window *w;
struct IntuiMessage *message;
struct RastPort *WindowRastPort;
struct Gadget *GadgetPtr;
/************************* Procedures ***************************************/
void Quit(void)
{
CloseWindow(w);
exit(ecode);
}
void ReactGad(void)
{
gid = GadgetPtr->GadgetID;
switch(class)
case GADGETUP:
DisplayBeep(NULL);
printf("GadgetID = %d",gid);
}
/************************ Intuition Defines ***********************************/
/*box defenition*/
SHORT BoxCoords[] = {
0,0,94,0,94,59,0,59,0,0,
};
SHORT Box2Coords[] = {
94,0,0,0,0,59,
};
struct Border Box2 = {
0,0,2,3,0,3,Box2Coords,NULL,
};
struct Border Box = {
0,0,1,3,0,5,BoxCoords,&Box2,
};
/*Text defenitions*/
struct IntuiText mytext2 = {
1,0,1,0,0,0,(BYTE *)"By Henrik Stolpe",NULL,
};
struct IntuiText mytext = {
1,0,1,0,8,0,(BYTE *)"100% C!",&mytext2,
};
/*Gadget Text defenitions*/
struct IntuiText Gadget2text = {
3,0,1,22,1,0,(BYTE *)"SND",NULL,
};
struct IntuiText Gadgettext = {
3,0,1,22,1,0,(BYTE *)"LOAD",NULL,
};
/*Gadget Border defenitions*/
SHORT Hilitecoords[] = {
80,-2,-2,-2,-2,9,
};
struct Border HiliteBorder = {
0,0,2,3,JAM1,3,Hilitecoords,
};
SHORT BorderCoords[] = {
-2,-2,80,-2,80,9,-2,9,-2,-2,
};
struct Border GadgetBorder = {
0,0,1,3,JAM1,5,BorderCoords,&HiliteBorder,
};
/*Gadget defenitions*/
struct Gadget NextBoolGadget = {
&AnotherNextBoolGadget,
17,40,
80,9,
NULL,
RELVERIFY | GADGIMMEDIATE,
BOOLGADGET,
(APTR)&GadgetBorder,
NULL,
&Gadget2text,
NULL,
NULL,
SEND,
NULL,
};
struct Gadget BoolGadget = {
&NextBoolGadget,
17,20,
80,9,
NULL,
RELVERIFY | GADGIMMEDIATE,
BOOLGADGET,
(APTR)&GadgetBorder,
NULL,
&Gadgettext,
NULL,
NULL,
LOAD,
NULL,
};
/*Window defenition*/
struct NewWindow nw = {
365,15, /* Starting corner */
264,100, /* Width, height */
1,2, /* detail, block pens */
CLOSEWINDOW | GADGETUP,
ACTIVATE |
WINDOWDEPTH | WINDOWDRAG | WINDOWCLOSE,
/* Window flags */
&BoolGadget, /* Pointer to first gadget */
NULL, /* Pointer to checkmark */
"TRANSMITTER V0.9 ", /* title */
NULL, /* screen pointer */
NULL, /* bitmap pointer */
100,50,640,200, /* window not sized */
WBENCHSCREEN /* type of screen */
};
/************************ Main procedure ******************************/
void main(void)
{
int event;
event=0;
/************************ Set-Up GUI **********************************/
w = OpenWindow(&nw);
WindowRastPort = w->RPort;
PrintIText(WindowRastPort, &mytext,10L,80L);
DrawBorder(WindowRastPort, &Box,9L,14L);
/************************ Main Loop ***********************************/
FOREVER
{
/*Get Intuition Message*/
if ((message = (struct IntuiMessage *)
GetMsg(w->UserPort)) == NULL)
{
Wait(1L<<w->UserPort->mp_SigBit);
continue;
}
class = message->Class;
code = message->Code;
GadgetPtr = (struct Gadget *)message->IAddress;
ReplyMsg((struct Message *)message);
/*React On Message*/
switch(class)
case CLOSEWINDOW:
Quit();
ReactGad();
}
}