home *** CD-ROM | disk | FTP | other *** search
- /****************************************/
- /* Pointerz */
- /* - a little demo that uses */
- /* SetPointer() to create four */
- /* animated pointers. */
- /* */
- /* Blake Freymann 4/2/87 */
- /* CIS 73657,67 */
- /* */
- /****************************************/
-
-
-
- #include <intuall.h>
-
- #define NUMWINS 4
-
- struct IntuitionBase *IntuitionBase;
- struct IntuiMessage *GetMsg();
- struct IntuiMessage *message;
- struct Window *OpenWindow();
- struct InputEvent *Intuition();
- struct Window *MyWindow[NUMWINS];
-
- short i, mm, win;
- ULONG Signals; /* for Wait() */
- void findwindow();
-
- /*******************************************************************/
- /* Image Data (sprites) */
- /*******************************************************************/
-
- /* bird1.c */
-
- UWORD Bird1Data[] =
- {
- 0x0000,0x0000,
-
- 0x0000,0x0000,
- 0x0000,0x0000,
- 0x0000,0x0000,
- 0x0000,0x0000,
- 0x0000,0x0000,
- 0x0000,0x0000,
- 0x0000,0x0000,
- 0x0000,0x0000,
- 0x07F0,0x0000,
- 0x0FF8,0x3000,
- 0x2FFC,0x57E0,
- 0x0FFE,0xF7F0,
- 0x07FA,0x83F0,
- 0x03FA,0x27F8,
- 0x01F8,0x19F8,
- 0x01F8,0x29F8,
- 0x01F8,0x01F8,
- 0x01F8,0x01F8,
- 0x0150,0x0150,
- 0x02A0,0x02A0,
- 0x0000,0x0000,
-
- 0x0000,0x0000
- };
-
- /* bird2.c */
-
- UWORD Bird2Data[] =
- {
- 0x0000,0x0000,
-
- 0x0000,0x0000,
- 0x0000,0x0000,
- 0x0000,0x0000,
- 0x0000,0x0000,
- 0x0000,0x0000,
- 0x0000,0x0000,
- 0x0000,0x0000,
- 0x0000,0x0000,
- 0x07F0,0x0000,
- 0x0FF8,0x37F0,
- 0x2FFC,0x57F8,
- 0x0FFE,0xF7F8,
- 0x07FE,0x83FC,
- 0x01FE,0x25FE,
- 0x00FF,0x18FF,
- 0x0000,0x2800,
- 0x0000,0x0000,
- 0x0000,0x0000,
- 0x0000,0x0000,
- 0x0000,0x0000,
- 0x0000,0x0000,
-
- 0x0000,0x0000
- };
-
-
- /* bird3.c */
-
- UWORD Bird3Data[] =
- {
- 0x0000,0x0000,
-
- 0x0000,0x0000,
- 0x0000,0x0000,
- 0x0000,0x0000,
- 0x0000,0x0000,
- 0x0000,0x0000,
- 0x0000,0x0000,
- 0x001F,0x001F,
- 0x00FE,0x00FE,
- 0x07FE,0x03FE,
- 0x0FFC,0x37FC,
- 0x2FFC,0x57FC,
- 0x0FFE,0xF3F8,
- 0x07FA,0x8000,
- 0x0002,0x2400,
- 0x0000,0x1800,
- 0x0000,0x2800,
- 0x0000,0x0000,
- 0x0000,0x0000,
- 0x0000,0x0000,
- 0x0000,0x0000,
- 0x0000,0x0000,
-
- 0x0000,0x0000
- };
-
-
- UWORD Bird4Data[] =
- {
- 0x0000,0x0000,
-
- 0x03E0,0x03E0,
- 0x03F0,0x03F0,
- 0x01F8,0x01F8,
- 0x01F8,0x01F8,
- 0x01F8,0x01F8,
- 0x01F8,0x01F8,
- 0x01F8,0x01F8,
- 0x01F8,0x01F8,
- 0x07F0,0x03F0,
- 0x0FF0,0x33F0,
- 0x2FFE,0x50E0,
- 0x0FFC,0xF000,
- 0x07F0,0x8000,
- 0x0000,0x2400,
- 0x0000,0x1800,
- 0x0000,0x2800,
- 0x0000,0x0000,
- 0x0000,0x0000,
- 0x0000,0x0000,
- 0x0000,0x0000,
- 0x0000,0x0000,
-
- 0x0000,0x0000
- };
-
-
- USHORT Face1Data[] =
- {
-
- 0x0000,0x0000,
-
- 0x07C0,0x0000,
- 0x0FE0,0x0000,
- 0x1FF0,0x0000,
- 0x2388,0x1C70,
- 0x4104,0x3EF8,
- 0x0000,0x638C,
- 0x2288,0x638C,
- 0x8002,0x638C,
- 0xC106,0x3EF8,
- 0xE38E,0x1C70,
- 0xFFFE,0x0000,
- 0xF93E,0x0000,
- 0xF93E,0x0000,
- 0xFFFE,0x7838,
- 0x7FFC,0x3FF8,
- 0x77DC,0x1FF0,
- 0x783C,0x1FF0,
- 0x3FF8,0x0FE0,
- 0x1FF0,0x0380,
- 0x0FE0,0x0000,
- 0x07C0,0x0000,
-
- 0x0000,0x0000
-
- };
-
-
- USHORT Face2Data[] =
- {
- 0x0000,0x0000,
-
- 0x07C0,0x0000,
- 0x0FE0,0x0000,
- 0x1FF0,0x0000,
- 0x2388,0x1C70,
- 0x4104,0x3EF8,
- 0x1860,0x7BEC,
- 0x3AE8,0x7BEC,
- 0x8002,0x638C,
- 0xC106,0x3EF8,
- 0xE38E,0x1C70,
- 0xFFFE,0x0000,
- 0xF93E,0x0000,
- 0xF93E,0x0000,
- 0xFFFE,0x0000,
- 0x7FFC,0x0FE0,
- 0x7FFC,0x1FF0,
- 0x783C,0x1FF0,
- 0x3FF8,0x0FE0,
- 0x1FF0,0x0380,
- 0x0FE0,0x0000,
- 0x0700,0x0000,
-
- 0x0000,0x0000
- };
-
-
- USHORT Face3Data[] =
- {
- 0x0000,0x0000,
-
- 0x07C0,0x0000,
- 0x0FE0,0x0000,
- 0x1FF0,0x0000,
- 0x2388,0x1C70,
- 0x4104,0x3EF8,
- 0x0C30,0x6FBC,
- 0x1E78,0x5F7C,
- 0x8002,0x638C,
- 0xC106,0x3EF8,
- 0xE38E,0x1C70,
- 0xFFFE,0x0000,
- 0xF93E,0x0000,
- 0xF93E,0x0000,
- 0xFFFE,0x0000,
- 0x7FFC,0x0FE0,
- 0x7FFC,0x1C70,
- 0x783C,0x3FF8,
- 0x3FF8,0x3FF8,
- 0x1FF0,0x0380,
- 0x0FE0,0x0000,
- 0x07C0,0x0000,
-
- 0x0000,0x0000
-
- };
-
- USHORT Face4Data[] =
- {
-
- 0x0000,0x0000,
-
- 0x07C0,0x0000,
- 0x0FE0,0x0000,
- 0x1FF0,0x0000,
- 0x2388,0x1C70,
- 0x4104,0x3EF8,
- 0x0410,0x679C,
- 0x0E38,0x4F3C,
- 0x8C32,0x6FBC,
- 0xC106,0x3EF8,
- 0xE38E,0x1C70,
- 0xFFFE,0x0000,
- 0xF93E,0x0000,
- 0xF11E,0x0280,
- 0xFFFE,0x0000,
- 0x7FFC,0x0FE0,
- 0x7FFC,0x1FF0,
- 0x7FFC,0x1830,
- 0x3838,0x1FF0,
- 0x1FF0,0x0FE0,
- 0x0FE0,0x0000,
- 0x07C0,0x0000,
-
- 0x0000,0x0000
-
- };
-
-
- USHORT Fish1Data[] =
- {
- 0x0000,0x0000,
-
- 0x0000,0x0000,
- 0x0000,0x0000,
- 0xF800,0xF800,
- 0xF700,0xCF00,
- 0xE780,0xDF80,
- 0xC7C0,0xFFC0,
- 0xFFE0,0xFFE0,
- 0xFFF0,0xFFF0,
- 0x7FF0,0x0070,
- 0x7FF0,0x7FF0,
- 0x3FF0,0x01F0,
- 0x3FF0,0x3FF0,
- 0x1FE0,0x03E0,
- 0x0FC0,0x0FC0,
- 0x07FF,0x07FF,
- 0x007F,0x0003,
- 0x007E,0x007E,
- 0x007C,0x000C,
- 0x0078,0x0078,
- 0x0070,0x0030,
- 0x0060,0x0060,
-
- 0x0000,0x0000
- };
-
- USHORT Fish2Data[] =
- {
- 0x0000,0x0000,
-
- 0xF800,0xF800,
- 0xFF00,0xFF00,
- 0xF780,0xCF80,
- 0xE7C0,0xDFC0,
- 0xC7E0,0xFFE0,
- 0xFFF0,0xFFF0,
- 0x7FF0,0x0070,
- 0x7FF0,0x7FF0,
- 0x3FF0,0x01F0,
- 0x3FFF,0x3FFF,
- 0x1FFF,0x0383,
- 0x0FFE,0x0FFE,
- 0x07FC,0x078C,
- 0x0078,0x0078,
- 0x0070,0x0030,
- 0x0060,0x0060,
- 0x0040,0x0040,
- 0x0000,0x0000,
- 0x0000,0x0000,
- 0x0000,0x0000,
- 0x0000,0x0000,
-
- 0x0000,0x0000
- };
-
- USHORT Fish3Data[] =
- {
- 0x0000,0x0000,
-
- 0x0000,0x0000,
- 0x0000,0x0000,
- 0x1F00,0x1F00,
- 0x7F80,0x7F80,
- 0xF7C0,0xEFC0,
- 0xE7C0,0xDFC0,
- 0xE7E0,0xDFE0,
- 0xDFF0,0xF870,
- 0xFFF0,0xE7F0,
- 0xFFF0,0x99F0,
- 0x7FF0,0x67F0,
- 0x3FF8,0x1BB8,
- 0x3FFE,0x27C6,
- 0x0FFF,0x0FBB,
- 0x007F,0x004F,
- 0x007C,0x003C,
- 0x0070,0x0070,
- 0x0060,0x0060,
- 0x0000,0x0000,
- 0x0000,0x0000,
- 0x0000,0x0000,
-
- 0x0000,0x0000
-
- };
-
- USHORT Fish4Data[] =
- {
- 0x0000,0x0000,
-
- 0x0000,0x0000,
- 0x001F,0x001F,
- 0x00EF,0x00F3,
- 0x01E7,0x01FB,
- 0x03E3,0x03FF,
- 0x07FF,0x07FF,
- 0x0FFF,0x0FFF,
- 0x0FFE,0x0E00,
- 0x0FFE,0x0FFE,
- 0x0FFC,0x0F80,
- 0x0FFC,0x0FFC,
- 0x07F8,0x07C0,
- 0x03F0,0x03F0,
- 0xFFE0,0xFFE0,
- 0xFE00,0xC000,
- 0x7E00,0x7E00,
- 0x3E00,0x3000,
- 0x1E00,0x1E00,
- 0x0E00,0x0C00,
- 0x0600,0x0600,
- 0x0000,0x0000,
-
- 0x0000,0x0000
-
- };
-
-
- USHORT Dodo1Data[] =
- {
- 0x0000,0x0000,
-
- 0x1FE0,0x1C00,
- 0x7E60,0x7F80,
- 0xFE70,0xFF80,
- 0xFFF0,0xFE00,
- 0x7FE0,0x7E00,
- 0x1FC0,0x1800,
- 0x1FF0,0x0000,
- 0x3FF8,0x0000,
- 0x3DF8,0x0200,
- 0x7CFC,0x0300,
- 0x79FC,0x0600,
- 0x73FC,0x0C00,
- 0x73FC,0x0C00,
- 0x7804,0x07F8,
- 0x3FF8,0x0000,
- 0x3FF8,0x0600,
- 0x1FF0,0x0C00,
- 0x1FE0,0x1800,
- 0xF83C,0xF83C,
- 0xA83A,0xA83A,
- 0x2C29,0x2C29,
-
- 0x0000,0x0000
-
- };
-
- USHORT Dodo2Data[] =
- {
- 0x0000,0x0000,
-
- 0x0FF0,0x0C00,
- 0x1F30,0x1FC0,
- 0x7F38,0x7FC0,
- 0x7FF8,0x7F00,
- 0x3FF0,0x3F00,
- 0x0FE0,0x0C00,
- 0x07F0,0x0000,
- 0x3FF8,0x0000,
- 0x3DF8,0x0200,
- 0x7CFC,0x0300,
- 0x79FC,0x0600,
- 0x73FC,0x0C00,
- 0x73FC,0x0C00,
- 0x7804,0x07F8,
- 0x3FF8,0x0000,
- 0x3FF8,0x0200,
- 0x1FF0,0x0600,
- 0x1FF0,0x0C10,
- 0x1F7C,0x1F7C,
- 0x1554,0x1554,
- 0x1554,0x1554,
-
- 0x0000,0x0000
-
- };
-
- USHORT Dodo3Data[] =
- {
- 0x0000,0x0000,
-
- 0x03FC,0x0300,
- 0x07CE,0x07F0,
- 0x1FCE,0x1FF0,
- 0x1FFE,0x1FC0,
- 0x0FFC,0x0F80,
- 0x03F8,0x0300,
- 0x07F0,0x0000,
- 0x3FF8,0x0000,
- 0x3DF8,0x0200,
- 0x7CFC,0x0300,
- 0x79FC,0x0600,
- 0x73FC,0x0C00,
- 0x73FC,0x0C00,
- 0x7804,0x07F8,
- 0x3FF8,0x0000,
- 0x3FF8,0x0200,
- 0x1FF0,0x0200,
- 0x1FF0,0x0200,
- 0x07F0,0x07F0,
- 0x05D0,0x05D0,
- 0x05D0,0x05D0,
-
- 0x0000,0x000
- };
-
-
- USHORT Dodo4Data[] =
- {
- 0x0000,0x0000,
-
- 0x07FC,0x0000,
- 0x18E2,0x07FC,
- 0x18E2,0x07FC,
- 0x1FFE,0x01F0,
- 0x0FFC,0x03F8,
- 0x07F8,0x01F0,
- 0x0FF0,0x00E0,
- 0x3FF8,0x0040,
- 0x3FF8,0x0000,
- 0x7F3C,0x00C0,
- 0x7F3C,0x00C0,
- 0x7F7C,0x0080,
- 0x7EFC,0x0100,
- 0x7E04,0x01F8,
- 0x3FF8,0x0000,
- 0x3FF8,0x0000,
- 0x1FF0,0x0810,
- 0x3FF8,0x3008,
- 0x500A,0x500A,
- 0xA815,0xA815,
- 0x2414,0x2414,
-
- 0x0000,0x0000
-
- };
-
- /* four pointers - each pointer has four images */
- UWORD *BirdData[]={Bird1Data,Bird2Data,Bird3Data,Bird4Data};
- UWORD *FaceData[]={Face1Data,Face2Data,Face3Data,Face4Data};
- UWORD *FishData[]={Fish1Data,Fish2Data,Fish3Data,Fish2Data};
- UWORD *DodoData[]={Dodo1Data,Dodo2Data,Dodo3Data,Dodo4Data};
-
- UWORD **Data[]={BirdData,FaceData,FishData,DodoData};
-
- /*******************************************************************/
- /* struct for all four windows. individual titles and pointerimage */
- /* filled in below. */
- /*******************************************************************/
- struct NewWindow nw = {
- 0, 0, /* start position */
- 172, 40, /* width, height */
- -1, -1, /* detail pen, block pen */
- CLOSEWINDOW|MOUSEMOVE|ACTIVEWINDOW|INACTIVEWINDOW,
- /* IDCMP flags */
- WINDOWDEPTH|WINDOWCLOSE|REPORTMOUSE|ACTIVATE|WINDOWDRAG,
- /* window flags */
- NULL, /* pointer to first user gadget */
- NULL, /* pointer to user checkmark */
- NULL, /* window titles filled in below */
- NULL, /* pointer to screen */
- NULL, /* pointer to superbitmap */
- 0,0,0,0, /* UNsized window */
- WBENCHSCREEN /* type of screen in which to open */
- };
-
-
- main()
- {
-
- if ((IntuitionBase = (struct IntuitionBase *)
- OpenLibrary("intuition.library", 0)) == 0){
- printf("Couldn't open intuition.library!");
- mycleanup();
- }
-
- /*******************************************************************/
- /* fill in each window position and title, and open it. */
- /*******************************************************************/
-
- for (win=0;win<NUMWINS;++win){
- switch(win){
- case(0):
- nw.LeftEdge=40;
- nw.TopEdge=40;
- nw.Title="BirdPointer";
- break;
- case(1):
- nw.LeftEdge=nw.LeftEdge+nw.Width+10;
- nw.Title="FacePointer";
- break;
-
- case(2):
- nw.LeftEdge=40;
- nw.TopEdge=nw.TopEdge+50;
- nw.Title="FishPointer";
- break;
- case(3):
- nw.LeftEdge=nw.LeftEdge+nw.Width+10;
- nw.Title="DodoPointer";
- break;
- default:
- break;
- }
-
- if ((MyWindow[win] = (struct Window *)OpenWindow(&nw))==0){
- printf("Couldn't open a window.");
- mycleanup();
- }
- }
-
- /* start with Dodo window active */
-
- win=3;
- SetPointer(MyWindow[win],Data[win][i],21,16,0,-7);
-
- /*******************************************************************/
- /* forever deal with mouse activities */
- /*******************************************************************/
- for(;;){
- Wait(1<<MyWindow[win]->UserPort->mp_SigBit);
- while (message=GetMsg(MyWindow[win]->UserPort)){
- switch(message->Class){
- case(CLOSEWINDOW):
- ReplyMsg(message);
- mycleanup();
- break;
- case(MOUSEMOVE):
- mm=1;
- ReplyMsg(message);
- break;
- case(INACTIVEWINDOW): /* mouse clicked elsewhere! */
- ReplyMsg(message);
- findwindow();
- break;
- default:
- ReplyMsg(message);
- break;
- }
- }
- /*******************************************************************/
- /* no more messages - if mouse moved, change the pointer image! */
- /*******************************************************************/
- if(mm==1){
- i=(i+1)%4;
- SetPointer(MyWindow[win],Data[win][i],21,16,0,-7);
- mm=0;
- }
- } /*for(;;)*/
- } /*main*/
-
- /*******************************************************************/
- /* Wait until mouse is clicked on one of our windows. */
- /*******************************************************************/
- void findwindow(){
- for(;;){
- Signals=Wait((1 << MyWindow[0]->UserPort->mp_SigBit)|
- (1 << MyWindow[1]->UserPort->mp_SigBit)|
- (1 << MyWindow[2]->UserPort->mp_SigBit)|
- (1 << MyWindow[3]->UserPort->mp_SigBit));
-
- for(win=0;win<NUMWINS;++win){
- while((Signals)&(1 << MyWindow[win]->UserPort->mp_SigBit)){
- if(((message=GetMsg(MyWindow[win]->UserPort))->Class)==ACTIVEWINDOW){
- ReplyMsg(message);
- return;
- }
- else ReplyMsg(message);
- }
- }
- }/*for(;;)*/
- }/*findwindow()*/
-
- /*******************************************************************/
- /* Clean up loose ends (most done by intuition?) */
- /*******************************************************************/
- mycleanup(){
- for(win=0;win<NUMWINS;win++){
- while(message=GetMsg(MyWindow[win]->UserPort))ReplyMsg(message);
- ClearPointer(MyWindow[win]);
- if (MyWindow[win]) CloseWindow(MyWindow[win]);
- }
- if (IntuitionBase) CloseLibrary (IntuitionBase);
- exit();
- }
-
-
-