home *** CD-ROM | disk | FTP | other *** search
/ Amiga Elysian Archive / AmigaElysianArchive.iso / newc_dev / billbrd.lha / bb.c < prev    next >
C/C++ Source or Header  |  1992-10-18  |  4KB  |  153 lines

  1. /* Billboard v2.0 Copyright © 1992 Todd J. Petit */
  2.  
  3. #include <intuition/intuition.h>
  4. #include <string.h>
  5. #include <graphics/text.h>
  6. #include <stdlib.h>
  7.  
  8. #define ok_exit 0
  9. #define failure_exit 20
  10. #define error_exit 10
  11. #define warning_exit 5
  12.  
  13. struct IntuitionBase *IntuitionBase;
  14. struct DosBase *DosBase;
  15. struct GfxBase *GfxBase;
  16. struct NewWindow MyWindow = 
  17.        {160,50,300,60,0,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,10,10,
  18.         0xFFFF,0xFFFF,WBENCHSCREEN};
  19.  
  20. /* graphic data "bored_man_pic", "speaker_pic", "logo_pic" */
  21. #include "bbpics.h"
  22.  
  23. struct Image picture = {NULL,NULL,NULL,NULL,2,NULL,0x0003,0x0000,NULL};
  24.  
  25. /* --------------------------------------------------------------------- */
  26.  
  27. char opts[]="";
  28. main(int argc, char *argv[])
  29. {
  30.   struct Window *wind;
  31.   struct Rastport *rp;
  32.   char option,*odata;
  33.   int next = 1;
  34.   int seconds = 0;
  35.   int image_number = 1;
  36.   int offset, linelen, pixellen, printline;
  37.   char line[3][40] = { {"Welcome"},
  38.                        {"to"},
  39.                        {"Amiga!"} };;
  40.       
  41.   /* parse options */
  42.   for(; (odata = argopt(argc,argv,opts,&next,&option)) != NULL;)
  43.   { if (option == 's')
  44.       seconds = atoi(odata);
  45.       
  46.     if (option == 'i')
  47.       image_number = atoi(odata);   
  48.       
  49.     if (option == 'p')
  50.     { strcpy(line[1], odata); 
  51.       strcpy(line[0], "Loading");
  52.       strcpy(line[2], "please wait...");
  53.     }
  54.     
  55.     if (option == '1')
  56.       strcpy(line[0], odata);
  57.     if (option == '2')
  58.       strcpy(line[1], odata);
  59.     if (option == '3')
  60.       strcpy(line[2], odata);
  61.   }
  62.   
  63.   /* User wants info */
  64.   for(; next < argc; next++)
  65.   { if (!strcmp(argv[next], "?"))
  66.      { puts("Billboard v2.0 Copyright © 1992 Todd J. Petit");
  67.        puts("Usage: bb [-i<image#>] [-s<seconds>] [-p<program>]");
  68.        puts("          [-1<string>] [-2<string>]  [-3<string>]");
  69.        puts(" ");
  70.        puts("where <image#>  is 1 (Commodore logo)");
  71.        puts("                   2 (bored man)");
  72.        puts("                   3 (speaker)");
  73.        puts("      <seconds> is number of seconds to display (default is 5)");
  74.        puts("      <program> is name of program to display with 'Loading'");
  75.        puts("                   'please wait...' message");
  76.        puts("      <string>  is text string to display on this line number");
  77.        puts("                   (to display a string with imbedded spaces");
  78.        puts("                    enclose it, with switch, in double quotes)");
  79.        exit(warning_exit);
  80.      }
  81.   }     
  82.   
  83.   /* set seconds to default if User didn't set a time */
  84.   if (seconds < 1) seconds = 5;
  85.   
  86.   /* Open libraries, exit on failure */
  87.   if(!(IntuitionBase=
  88.     (struct IntuitionBase *)OpenLibrary("intuition.library",0)))
  89.     exit(failure_exit);
  90.   if(!(DosBase=
  91.     (struct DosBase *)OpenLibrary("dos.library",0)))
  92.     exit(failure_exit);
  93.   if(!(GfxBase=
  94.     (struct GfxBase *)OpenLibrary("graphics.library",0)))
  95.     exit(failure_exit);    
  96.  
  97.   /* Open window, paste graphic into window */
  98.   if(!(wind = (struct Window *) OpenWindow(&MyWindow)))
  99.     exit (error_exit);
  100.   rp = wind->RPort;
  101.   switch (image_number)
  102.   { default:
  103.       picture.ImageData = logo_pic;
  104.       picture.LeftEdge = 15;
  105.       picture.TopEdge = 5;
  106.       picture.Width = 112;
  107.       picture.Height = 48;
  108.       break;
  109.     case 2:
  110.       picture.ImageData = bored_man_pic;
  111.       picture.LeftEdge = 15;
  112.       picture.TopEdge = 4;
  113.       picture.Width = 96;
  114.       picture.Height = 51;
  115.       break;
  116.     case 3:
  117.       picture.ImageData = speaker_pic;
  118.       picture.LeftEdge = 15;
  119.       picture.TopEdge = 2;
  120.       picture.Width = 80;
  121.       picture.Height = 54;
  122.       break;
  123.   }    
  124.   DrawImage(rp,&picture,1,1);
  125.  
  126.   /* Write 3 lines of centered, italic, shadowed text */
  127.   for(printline = 0; printline < 3; printline++)
  128.   { linelen = strlen(line[printline]);
  129.     pixellen = (linelen * 8);
  130.     offset = (((200 - pixellen) / 2) + 100);
  131.     SetDrMd(rp,0);
  132.     SetSoftStyle(rp,FSF_ITALIC,FSF_ITALIC);
  133.     SetAPen(rp,1); /* black */
  134.     Move(rp,(offset+2),(23 + (printline * 10)));
  135.     Text(rp,line[printline],linelen);
  136.     SetAPen(rp,2); /* white */
  137.     Move(rp,offset,(22 + (printline * 10)));
  138.     Text(rp,line[printline],linelen);
  139.   }  
  140.   
  141.   /* Hold window open for requested number of seconds */
  142.   Delay(seconds * 50);
  143.  
  144.   /* Close all windows, libraries */
  145.   CloseWindow(wind);
  146.   CloseLibrary(IntuitionBase);
  147.   CloseLibrary(DosBase);
  148.   CloseLibrary(GfxBase);
  149.   
  150.   exit(ok_exit);
  151. }
  152. /* End of Program Source */
  153.