home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / graf / fract3.zip / HELP.C < prev    next >
C/C++ Source or Header  |  1989-12-24  |  6KB  |  253 lines

  1. /*
  2.     FRACTINT Help routines
  3. */
  4.  
  5. #include "fractint.h"
  6. #include <stdio.h>
  7.  
  8.     /* the actual message text is defined in FARMSG.ASM */
  9. extern char far helpmessagetitle[];
  10. extern char far helpmessageauthors[];
  11. extern char far helpmessagecredits[];
  12. extern char far helpmessagemenu[];
  13. extern char far *helpmessagemain[];
  14. extern char far *helpmessagecycling[];
  15. extern char far *helpmessagemouse[];
  16. extern char far *helpmessagecmdline[];
  17. extern char far *helpmessagefractals[];
  18. extern char far helpmessageformoreinfo[];
  19. extern char far helpmessagemoretext[];
  20. extern char far helpmessageendtext[];
  21. extern char far helpmessagevideo[];
  22.  
  23. extern    void    helpmessage(unsigned char far *);
  24.  
  25. extern int adapter;
  26.  
  27. extern int    lookatmouse;    /* used to activate non-button mouse movement */
  28.  
  29. helptitle()
  30. {
  31. home();                    /* home the cursor        */
  32. setclear();                /* clear the screen        */
  33. helpmessage(helpmessagetitle);
  34.  
  35. }
  36.  
  37. help()
  38. {
  39. int mode, key;
  40. int oldlookatmouse;
  41.  
  42. oldlookatmouse = lookatmouse;
  43. lookatmouse = 0;            /* de-activate full mouse checking */
  44.  
  45. mode = helpmode;
  46.  
  47. if (mode == HELPAUTHORS) {
  48.     int toprow, botrow, i, j, delaymax;
  49.     char oldchar;
  50.     int authors[100];        /* this should be enough for awhile */
  51.     
  52.     toprow = 10;
  53.     botrow = 21;
  54.     j = 0;
  55.     authors[j] = 0;            /* find the start of each credit-line */
  56.     for (i = 0; helpmessagecredits[i] != 0; i++)
  57.         if (helpmessagecredits[i] == 10)
  58.             authors[++j] = i+1;
  59.     authors[j+1] = i;
  60.     helptitle();
  61.     helpmessage(helpmessageauthors);
  62.     movecursor(toprow,0);
  63.     i = botrow - toprow;
  64.     oldchar = helpmessagecredits[authors[i+1]];
  65.     helpmessagecredits[authors[i+1]] = 0;
  66.     helpmessage(helpmessagecredits);
  67.     helpmessagecredits[authors[i+1]] = oldchar;
  68.     delaymax = 10;
  69.     while (! keypressed()) {
  70.         for (j = 0; j < delaymax && !(keypressed()); j++)
  71.             delay(100);
  72.         if (keypressed() == 32) {    /* spacebar pauses */
  73.             getakey();
  74.             while (!keypressed()) ;
  75.             if (keypressed() == 32)
  76.                 getakey();
  77.             }
  78.         delaymax = 15;
  79.         scrollup(toprow, botrow);
  80.         movecursor(botrow,0);
  81.         i++;
  82.         if (helpmessagecredits[authors[i]] == 0) i = 0;
  83.         oldchar = helpmessagecredits[authors[i+1]];
  84.         helpmessagecredits[authors[i+1]] = 0;
  85.         helpmessage(&helpmessagecredits[authors[i]]);
  86.         helpmessagecredits[authors[i+1]] = oldchar;
  87.         }
  88.     lookatmouse = oldlookatmouse;        /* restore the mouse-checking */
  89.     return(0);
  90.     }
  91.  
  92. setfortext();
  93. while (mode != HELPEXIT) {
  94.     if (mode == HELPMENU) {
  95.         while (mode == HELPMENU) {
  96.             helptitle();
  97.             helpmessage(helpmessagemenu);
  98.             key = getakey();
  99.             switch (key) {
  100.                 case '1':
  101.                     mode = HELPMAIN;
  102.                     break;
  103.                 case '2':
  104.                     mode = HELPCYCLING;
  105.                     break;
  106.                 case '3':
  107.                     mode = HELPMOUSE;
  108.                     break;
  109.                 case '4':
  110.                     mode = HELPCMDLINE;
  111.                     break;
  112.                 case '5':
  113.                     mode = HELPFRACTALS;
  114.                     break;
  115.                 case '6':
  116.                     mode = HELPVIDEO;
  117.                     break;
  118.                 case '7':
  119.                     mode = HELPMOREINFO;
  120.                     break;
  121.                 case 27:
  122.                     mode = HELPEXIT;
  123.                     break;
  124.                 default:
  125.                     buzzer(2);
  126.                     break;
  127.                 }
  128.             }
  129.         }
  130.  
  131.     switch (mode) {
  132.         case HELPMAIN:
  133.             key = helppage(helpmessagemain);
  134.             break;
  135.         case HELPCYCLING:
  136.             key = helppage(helpmessagecycling);
  137.             break;
  138.         case HELPMOUSE:
  139.             key = helppage(helpmessagemouse);
  140.             break;
  141.         case HELPCMDLINE:
  142.             key = helppage(helpmessagecmdline);
  143.             break;
  144.         case HELPFRACTALS:
  145.             key = helppage(helpmessagefractals);
  146.             break;
  147.         case HELPVIDEO:
  148.             key = helpvideo();
  149.             break;
  150.         case HELPMOREINFO:
  151.             key = helppage(helpmessageformoreinfo);
  152.             break;
  153.         default:
  154.             key = 27;
  155.             break;
  156.         }
  157.     if (key != 27
  158.         && key != 'h' && key != 'H'
  159.         && key != '?' && key != '/') {
  160.         setforgraphics();
  161.         lookatmouse = oldlookatmouse;        /* restore the mouse-checking */
  162.         return(key);
  163.         }
  164.     if (key == 27)
  165.         mode = HELPEXIT;
  166.     else 
  167.         mode = HELPMENU;
  168.     }
  169.  
  170. setforgraphics();
  171. lookatmouse = oldlookatmouse;        /* restore the mouse-checking */
  172. return(0);
  173. }
  174.  
  175. helppage(char far * helppages[])
  176. {
  177. int key, page;
  178.  
  179. if (helppages[1] == NULL) {
  180.     helptitle();
  181.     helpmessage(helppages[0]);
  182.     movecursor(22,0);
  183.     helpmessage(helpmessageendtext);
  184.     return(getakey());
  185.     }
  186.     
  187. key = 13;
  188. page = 1;
  189.  
  190. while (key == 13) {
  191.     helptitle();
  192.     helpmessage(helppages[page-1]);
  193.     movecursor(21,0);
  194.     helpmessage(helpmessagemoretext);
  195.     helpmessage(helpmessageendtext);
  196.     if (helppages[++page-1] == NULL) page = 1;
  197.     key = getakey();
  198.     }
  199. return(key);
  200. }
  201.  
  202. extern int hasconfig;
  203. extern char *fkeys[];
  204.  
  205. helpvideo()
  206. {
  207. int key, i ,j;
  208. char accessmethod[2];
  209.  
  210. j = -12;
  211. key = 13;
  212.  
  213. while (key == 13) {
  214.     helptitle();
  215.     printf("\n");
  216.     j += 12;    /* display next page */
  217.     if (j >= maxvideomode) j = 0;    /* (or 1st page)     */
  218.     printf("The current list of supported Video Adapters and Modes includes:\n");
  219.     if (hasconfig == 0)
  220.         printf("   <<NOTE>> The default list has been replaced by a FRACTINT.CFG file.\n");
  221.     else
  222.         printf("\n");
  223.     printf("       %-25s  Resolution Colors %-25s\n\n",
  224.     "Video Adapter & Mode", "     Comments");
  225.     for (i = j; i < maxvideomode && i < j + 12; i++) {
  226.         fromvideotable(i);
  227.     strcpy(accessmethod," ");
  228.     if (videoentry.dotmode == 1)
  229.         accessmethod[0] = 'B';
  230. #ifdef __TURBOC__
  231.         printf("%-6.6s %-25.25s%5d x%4d%5d %1.1s  %-25.25s\n",
  232. #else
  233.         printf("%-6s %-25s%5d x%4d%5d %1s  %-25s\n",
  234. #endif
  235.             fkeys[i],
  236.             videoentry.name,
  237.             videoentry.xdots,
  238.             videoentry.ydots,
  239.             videoentry.colors,
  240.             accessmethod,
  241.             videoentry.comment
  242.             );
  243.         }
  244.     for (; i <= j+12; i++) printf("\n");
  245.     helpmessage(helpmessagevideo);
  246.     fromvideotable(adapter);
  247.  
  248.     key = getakey();
  249.     }
  250. return(key);
  251. }
  252.  
  253.