home *** CD-ROM | disk | FTP | other *** search
/ Fish 'n' More 2 / fishmore-publicdomainlibraryvol.ii1991xetec.iso / dirs / pointerlib_446.lzh / PointerLib / src / UsePointer.c < prev    next >
C/C++ Source or Header  |  1991-01-28  |  4KB  |  163 lines

  1.  
  2. /*    UsePointer.c    */
  3. /*    This is an example program to show how to use the pointer.library    */
  4. /*    Any portion of this program may be used freely                       */
  5. /*  by Luke Wood -- BIX: luke.wood                                      */
  6.  
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <exec/exec.h>
  10. #include <proto/exec.h>
  11. #include <intuition/intuition.h>
  12. #include <proto/intuition.h>
  13. #include <proto/graphics.h>
  14. #include "Pointer.h"
  15. #include "Pointer_proto.h"
  16. #include "Pointer_pragmas.h"
  17. #include <error.h>
  18.  
  19. struct NewWindow MyNewWindow = 
  20. {
  21.     0,0,300,100,
  22.     0,1,
  23.     MOUSEBUTTONS | CLOSEWINDOW,
  24.     ACTIVATE | NOCAREREFRESH | WINDOWCLOSE | WINDOWDRAG | WINDOWDEPTH | WINDOWSIZING,
  25.     NULL,NULL,
  26.     "MyWindow",
  27.     NULL,NULL,
  28.     25,20,32767,32767,
  29.     WBENCHSCREEN
  30. };
  31.  
  32. struct IntuitionBase *IntuitionBase = NULL;
  33. struct Library*    PointerBase;
  34. struct Pointer* CrossHair;
  35.  
  36. int main( int argc, char** argv );
  37. int main( int argc, char** argv )
  38. {
  39. int done;
  40. int class;
  41. int code;
  42. int busy;
  43. struct Window* MyWindow;
  44. struct IntuiMessage* mesg;
  45. int X, Y;
  46.  
  47.     busy = 0;
  48.     done = FALSE;
  49.     GfxBase = (struct GfxBase *)
  50.         OpenLibrary( "graphics.library", 33L );
  51.     if( GfxBase == NULL )
  52.     {
  53.         printf( "Graphics Open failed\n" );
  54.         goto end;
  55.     }
  56.  
  57.     IntuitionBase = (struct IntuitionBase *)
  58.         OpenLibrary( "intuition.library", 33L );
  59.     if( IntuitionBase == NULL )
  60.     {
  61.         printf( "Intuition Open failed\n" );
  62.         goto end;
  63.     }
  64.  
  65.  
  66. /*    Open the Pointer library    */
  67.  
  68.     PointerBase = OpenLibrary( "pointer.library", 33L );
  69.     printf( "result of InitPointerLib = %d.\n", PointerBase );
  70.     if( PointerBase == NULL )
  71.     {
  72.         printf( "Pointer Library failed to open\n" );
  73.         goto end;
  74.     }
  75.  
  76. /*    Load a Custom Pointer    */
  77.     /*CrossHair = LoadPointer( "SYS:Prefs/presets/CrossHair.ilbm" );*/
  78.     CrossHair = LoadPointer( "Pointer.ilbm" );
  79.  
  80.     MyWindow = OpenWindow( &MyNewWindow );
  81.     if( MyWindow == NULL )
  82.     {
  83.         printf( "Window failed to open" );
  84.         goto end;
  85.     }
  86.  
  87.     SetAPen( MyWindow->RPort, 1 );
  88.     Move( MyWindow->RPort, 0,50 );
  89.     Draw( MyWindow->RPort, 300,50 );
  90.     Move( MyWindow->RPort, 150,0 );
  91.     Draw( MyWindow->RPort, 150,100 );
  92.  
  93.     Move( MyWindow->RPort, 190, 33 );
  94.     Text( MyWindow->RPort, "Normal", 6 );
  95.     Move( MyWindow->RPort, 52, 80 );
  96.     Text( MyWindow->RPort, "Normal", 6 );
  97.     Move( MyWindow->RPort, 55, 32 );
  98.     Text( MyWindow->RPort, "Busy", 4 );
  99.     Move( MyWindow->RPort, 180, 80 );
  100.     Text( MyWindow->RPort, "CrossHair", 9 );
  101.     
  102.     while( !done )
  103.     {
  104.         Wait( 1 << MyWindow->UserPort->mp_SigBit );
  105.         mesg = (struct IntuiMessage*)GetMsg( MyWindow->UserPort );
  106.         if( mesg )
  107.         {
  108.             class = mesg->Class;
  109.             code = mesg->Code;
  110.             X = mesg->MouseX-150;
  111.             Y = mesg->MouseY-50;
  112.             ReplyMsg( (struct Message*)mesg );
  113.             if( class == CLOSEWINDOW )
  114.             {
  115.                 printf( "message CLOSEWINDOW.\n" );
  116.                 done = TRUE;
  117.             }
  118.             else
  119.             {
  120.                 if( code == SELECTDOWN )
  121.                 {
  122.                     printf( "X:%d, Y:%d\n", X, Y );
  123.  
  124.                     if( (X*Y) < 0 )
  125.                     {
  126.                         printf( "Normal Pointer\n" );
  127.                         ClearPointer( MyWindow );
  128.                         continue;
  129.                     }
  130.                     if( X < 0 )
  131.                     {
  132.                         printf( "Busy Pointer\n" );
  133.                         SetBusyPointer( MyWindow );
  134.                     }
  135.                     else
  136.                     {
  137.                         /*    Ask Intuition to Turn on the        */
  138.                         /*    custom Pointer we Loaded earlier    */
  139.                         if( CrossHair )
  140.                         {
  141.                             printf( "CrossHair Pointer\n" );
  142.                             SetPointer( MyWindow, CrossHair->Data,
  143.                                 CrossHair->Height, CrossHair->Width,
  144.                                 CrossHair->XOff, CrossHair->YOff );
  145.                         }
  146.                     }
  147.                 }
  148.             }
  149.         }
  150.     }
  151.  
  152. end:
  153.     if( CrossHair )
  154.         FreePointer( CrossHair );
  155.     if( MyWindow )
  156.         CloseWindow( MyWindow );
  157.     if( PointerBase )
  158.         CloseLibrary( PointerBase );
  159.     if( IntuitionBase )
  160.         CloseLibrary( (struct Library*)IntuitionBase );
  161. }
  162.  
  163.