home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / FGDEMO40.ZIP / SOURCE.COM / FILE.C < prev    next >
Text File  |  1995-02-12  |  15KB  |  518 lines

  1. /**********************************************************************\
  2. *                                                                      *
  3. *  file.c -- routines for performing the functions on the FILE menu    *
  4. *                                                                      *
  5. \**********************************************************************/
  6.  
  7. #include "defs.h"
  8.  
  9. /**********************************************************************\
  10. *                                                                      *
  11. *  about_demo -- information about this demo program                   *
  12. *                                                                      *
  13. \**********************************************************************/
  14.  
  15. int about_demo()
  16. {
  17.    static char *string[] = {
  18.    "About This Demo",
  19.    "This demonstration program was written by",
  20.    "Diana Gruber, using Fastgraph from Ted Gruber",
  21.    "Software. You may distribute this program",
  22.    "freely, but please do not distribute any modified",
  23.    "versions. This program is distributed with",
  24.    "source code. You may use this source code",
  25.    "in your Fastgraph applications.",
  26.    "",
  27.    "    Copyright 1991-1995 Ted Gruber Software."
  28.    };
  29.  
  30.    /* clear the screen and display the info window */
  31.  
  32.    fg_mousevis(OFF);
  33.    fg_restore(0,xlimit,menu_bottom,ylimit);
  34.    info_window(130,510,60,string,10);
  35.  
  36.    /* wait for a keystroke or mouse button */
  37.  
  38.    fg_mousevis(ON);
  39.    wait_for_keystroke();
  40.  
  41.    /* restore the screen and return to the menu */
  42.  
  43.    fg_mousevis(OFF);
  44.    fg_restore(0,xlimit,menu_bottom,ylimit);
  45.  
  46.    fg_mousevis(ON);
  47.    redraw = TRUE;
  48.  
  49.    return(OK);
  50. }
  51.  
  52. /**********************************************************************\
  53. *                                                                      *
  54. *  about_docs -- information about this Fastgraph Documentation        *
  55. *                                                                      *
  56. \**********************************************************************/
  57.  
  58. int about_docs()
  59. {
  60.    static char *string[] = {
  61.    "Fastgraph Documentation",
  62.    "Fastgraph 4.0 comes with an extensive 750 page",
  63.    "soft-cover manual. Detailed explanations of",
  64.    "graphics concepts and copious examples will",
  65.    "help even novice programmers get off to a",
  66.    "fast start.",
  67.    };
  68.  
  69.    /* clear the screen and display the info window */
  70.  
  71.    fg_mousevis(OFF);
  72.    fg_restore(0,xlimit,menu_bottom,ylimit);
  73.    info_window(130,510,60,string,6);
  74.  
  75.    /* wait for a keystroke or mouse button */
  76.  
  77.    fg_mousevis(ON);
  78.    wait_for_keystroke();
  79.  
  80.    /* clear the screen and return to the menu */
  81.  
  82.    fg_mousevis(OFF);
  83.    fg_restore(0,xlimit,menu_bottom,ylimit);
  84.  
  85.    fg_mousevis(ON);
  86.    redraw = TRUE;
  87.  
  88.    return(OK);
  89. }
  90.  
  91. /**********************************************************************\
  92. *                                                                      *
  93. *  about_fgl -- display about Fastgraph/Light information              *
  94. *                                                                      *
  95. \**********************************************************************/
  96.  
  97. int about_fgl()
  98. {
  99.    static char *string[] = {
  100.    "Fastgraph/Light",
  101.    "Fastgraph/Light, the shareware version of Fastgraph, is",
  102.    "available for download on our BBS at (702) 796-7134. It",
  103.    "is fully functional and fully documented, but it uses a",
  104.    "runtime TSR driver. Programs written with Fastgraph/Light",
  105.    "require only a relink to work with Fastgraph. You may",
  106.    "register Fastgraph/Light for $49 and apply the entire ",
  107.    "amount to the purchase of Fastgraph."
  108.    };
  109.  
  110.    /* clear the screen and display the info window */
  111.  
  112.    fg_mousevis(OFF);
  113.    fg_restore(0,xlimit,menu_bottom,ylimit);
  114.    info_window(96,544,60,string,8);
  115.  
  116.    /* wait for a keystroke or mouse button */
  117.  
  118.    fg_mousevis(ON);
  119.    wait_for_keystroke();
  120.  
  121.    /* clear the screen and return to the menu */
  122.  
  123.    fg_mousevis(OFF);
  124.    fg_restore(0,xlimit,menu_bottom,ylimit);
  125.  
  126.    fg_mousevis(ON);
  127.    redraw = TRUE;
  128.  
  129.    return(OK);
  130. }
  131.  
  132. /**********************************************************************\
  133. *                                                                      *
  134. *  about_fg -- display about Fastgraph information                     *
  135. *                                                                      *
  136. \**********************************************************************/
  137.  
  138. int about_fg()
  139. {
  140.    static char *string[] = {
  141.    "About Fastgraph",
  142.    "Fastgraph 4.0 is the latest version of the popular",
  143.    "graphics library used by gamers and professional",
  144.    "programmers to handle demanding graphics tasks.",
  145.    "",
  146.    "Fastgraph includes more than 275 functions, from",
  147.    "simple pixel display to building blocks for complex",
  148.    "animation sequences. Libraries are provided for",
  149.    "real mode, plus 16-bit and 32-bit protected mode.",
  150.    "",
  151.    "Use the protected mode libraries with one of the",
  152.    "supported DOS extenders to write DOS applications",
  153.    "that break the 640K barrier!",
  154.    "",
  155.    "Other parts of this demo will show you just a few",
  156.    "things Fastgraph can do for you."
  157.    };
  158.  
  159.    /* clear the screen and display the info window */
  160.  
  161.    fg_mousevis(OFF);
  162.    fg_restore(0,xlimit,menu_bottom,ylimit);
  163.    info_window(120,520,60,string,16);
  164.  
  165.    /* wait for a keystroke or mouse button */
  166.  
  167.    fg_mousevis(ON);
  168.    wait_for_keystroke();
  169.  
  170.    /* clear the screen and return to the menu */
  171.  
  172.    fg_mousevis(OFF);
  173.    fg_restore(0,xlimit,menu_bottom,ylimit);
  174.  
  175.    fg_mousevis(ON);
  176.    redraw = TRUE;
  177.  
  178.    return(OK);
  179. }
  180.  
  181. /**********************************************************************\
  182. *                                                                      *
  183. *  about_order -- information about ordering by phone                  *
  184. *                                                                      *
  185. \**********************************************************************/
  186.  
  187. int about_order()
  188. {
  189.    static char *string[] = {
  190.    "Order by Phone/FAX",
  191.    "Fastgraph version 4.0 is available for $249 as",
  192.    "of September 1994. To order Fastgraph, call our",
  193.    "orders/info line at (702) 735-1980, or FAX your",
  194.    "order to (702) 735-4603.",
  195.    "",
  196.    "You can also use these numbers for more",
  197.    "information or to request the Fastgraph/Light",
  198.    "evaluation kit.",
  199.    "",
  200.    "We accept Visa, MasterCard, and COD orders.",
  201.    "Purchase orders are welcome from most",
  202.    "companies, schools, and government agencies."
  203.    };
  204.  
  205.    /* clear the screen and display the info window */
  206.  
  207.    fg_mousevis(OFF);
  208.    fg_restore(0,xlimit,menu_bottom,ylimit);
  209.    info_window(130,510,60,string,13);
  210.  
  211.    /* wait for a keystroke or mouse button */
  212.  
  213.    fg_mousevis(ON);
  214.    wait_for_keystroke();
  215.  
  216.    /* clear the screen and return to the menu */
  217.  
  218.    fg_mousevis(OFF);
  219.    fg_restore(0,xlimit,menu_bottom,ylimit);
  220.  
  221.    fg_mousevis(ON);
  222.    redraw = TRUE;
  223.  
  224.    return(OK);
  225. }
  226.  
  227. /**********************************************************************\
  228. *                                                                      *
  229. *  about_site -- information about site licenses                       *
  230. *                                                                      *
  231. \**********************************************************************/
  232.  
  233. int about_site()
  234. {
  235.    static char *string[] = {
  236.    "Site Licenses",
  237.    "Site licenses for Fastgraph are available.",
  238.    "Please call, FAX, or write for details."
  239.    };
  240.  
  241.    /* clear the screen and display the info window */
  242.  
  243.    fg_mousevis(OFF);
  244.    fg_restore(0,xlimit,menu_bottom,ylimit);
  245.    info_window(152,488,60,string,3);
  246.  
  247.    /* wait for a keystroke or mouse button */
  248.  
  249.    fg_mousevis(ON);
  250.    wait_for_keystroke();
  251.  
  252.    /* clear the screen and return to the menu */
  253.  
  254.    fg_mousevis(OFF);
  255.    fg_restore(0,xlimit,menu_bottom,ylimit);
  256.  
  257.    fg_mousevis(ON);
  258.    redraw = TRUE;
  259.  
  260.    return(OK);
  261. }
  262.  
  263. /**********************************************************************\
  264. *                                                                      *
  265. *  about_source -- information about source code                       *
  266. *                                                                      *
  267. \**********************************************************************/
  268.  
  269. int about_source()
  270. {
  271.    static char *string[] = {
  272.    "Source Code",
  273.    "Source code is available for Fastgraph 4.0",
  274.    "at an additional charge. Please call, FAX,",
  275.    "or write for details."
  276.    };
  277.  
  278.    /* clear the screen and display the info window */
  279.  
  280.    fg_mousevis(OFF);
  281.    fg_restore(0,xlimit,menu_bottom,ylimit);
  282.    info_window(152,488,60,string,4);
  283.  
  284.    /* wait for a keystroke or mouse button */
  285.  
  286.    fg_mousevis(ON);
  287.    wait_for_keystroke();
  288.  
  289.    /* clear the screen and return to the menu */
  290.  
  291.    fg_mousevis(OFF);
  292.    fg_restore(0,xlimit,menu_bottom,ylimit);
  293.  
  294.    fg_mousevis(ON);
  295.    redraw = TRUE;
  296.  
  297.    return(OK);
  298. }
  299.  
  300. /**********************************************************************\
  301. *                                                                      *
  302. *  about_tech -- information about technical support                   *
  303. *                                                                      *
  304. \**********************************************************************/
  305.  
  306. int about_tech()
  307. {
  308.    static char *string[] = {
  309.    "Technical Support",
  310.    "Call Dust Devil BBS (702) 796-7134 for updates,",
  311.    "examples, source code, and echo mail support.",
  312.    "Check your local boards for the U'NI-net / US",
  313.    "Fastgraph support conference. For voice support",
  314.    "call Ted Gruber Software at (702) 735-1980.",
  315.    };
  316.  
  317.    /* clear the screen and display the info window */
  318.  
  319.    fg_mousevis(OFF);
  320.    fg_restore(0,xlimit,menu_bottom,ylimit);
  321.    info_window(120,520,60,string,6);
  322.  
  323.    /* wait for a keystroke or mouse button */
  324.  
  325.    fg_mousevis(ON);
  326.    wait_for_keystroke();
  327.  
  328.    fg_mousevis(OFF);
  329.    fg_restore(0,xlimit,menu_bottom,ylimit);
  330.  
  331.    fg_mousevis(ON);
  332.    redraw = TRUE;
  333.  
  334.    return(OK);
  335. }
  336.  
  337. /**********************************************************************\
  338. *                                                                      *
  339. *  exit_program -- exit to DOS if desired                              *
  340. *                                                                      *
  341. \**********************************************************************/
  342.  
  343. exit_program()
  344. {
  345.    int xmin, xmax, ymin, ymax;
  346.  
  347.    fg_mousevis(OFF);
  348.    fg_restore(0,xlimit,menu_bottom,ylimit);
  349.  
  350.    /* define the window extremes */
  351.  
  352.    xmin = 210;
  353.    xmax = 430;
  354.    ymin = 150;
  355.    ymax = 200;
  356.    if (mouse) ymax += 2 * PTSIZE;
  357.  
  358.    fg_mousevis(OFF);
  359.  
  360.    /* display the pop-up window */
  361.  
  362.    draw_window(xmin,xmax,ymin,ymax,"Exit");
  363.    fg_setcolor(0);
  364.    center_pstring("Exit to DOS?",xmin,xmax,ymin+row_offset(3));
  365.  
  366.    /* get the response and exit if desired */
  367.  
  368.    if (get_answer(xmin,xmax,ymin+row_offset(4))) terminate();
  369.  
  370.    /* otherwise, just clear the screen and return */
  371.  
  372.    fg_restore(0,xlimit,menu_bottom,ylimit);
  373.    redraw = TRUE;
  374.  
  375.    return(OK);
  376. }
  377.  
  378. /**********************************************************************\
  379. *                                                                      *
  380. *  print_form -- print the order form                                  *
  381. *                                                                      *
  382. \**********************************************************************/
  383.  
  384. int print_form()
  385. {
  386.    FILE *stream;
  387.    unsigned char key,aux;
  388.    char fstring[80];
  389.  
  390.    static char *string[] = {
  391.    "Print order form",
  392.    "Press ESC to stop printing"
  393.    };
  394.  
  395.    static char *string1[] = {
  396.    "Printer Error",
  397.    "Is the printer online?"
  398.    };
  399.  
  400.    static char *string2[] = {
  401.    "File Error",
  402.    "Missing file: ORDER.FRM"
  403.    };
  404.  
  405.    /* check that the printer is online */
  406.  
  407.    if (!printer_ready())
  408.    {
  409.       fg_mousevis(OFF);
  410.       fg_restore(0,xlimit,menu_bottom,ylimit);
  411.       info_window(120,520,60,string1,2);
  412.  
  413.       fg_mousevis(ON);
  414.       wait_for_keystroke();
  415.  
  416.       fg_mousevis(OFF);
  417.       fg_restore(0,xlimit,menu_bottom,ylimit);
  418.  
  419.       redraw = TRUE;
  420.       return(OK);
  421.    }
  422.  
  423.    /* check that the file can be opened */
  424.  
  425.    stream = fopen("order.frm","rt");
  426.    if (stream == NULL)
  427.    {
  428.       fg_mousevis(OFF);
  429.       fg_restore(0,xlimit,menu_bottom,ylimit);
  430.       info_window(120,520,60,string2,2);
  431.  
  432.       fg_mousevis(ON);
  433.       wait_for_keystroke();
  434.  
  435.       fg_mousevis(OFF);
  436.       fg_restore(0,xlimit,menu_bottom,ylimit);
  437.  
  438.       redraw = TRUE;
  439.       return(ERR);
  440.    }
  441.  
  442.    /* clear the screen and display the info window */
  443.  
  444.    fg_mousevis(OFF);
  445.    fg_restore(0,xlimit,menu_bottom,ylimit);
  446.    info_window(120,520,60,string,2);
  447.  
  448.    fg_mousevis(ON);
  449.  
  450.    /* print the file, one line at a time */
  451.  
  452.    for(;;)
  453.    {
  454.       if (fgets(fstring,80,stream) == NULL)
  455.          break;
  456.       fg_intkey(&key,&aux);
  457.       if (key == ESC)
  458.          break;
  459.       if (fprintf(stdprn,"%s\r",fstring) == 0)
  460.          break;
  461.    }
  462.  
  463.    /* print form feed */
  464.  
  465.    fprintf(stdprn,"\f");
  466.  
  467.    /* close the file and flush the printer buffer */
  468.  
  469.    fclose(stream);
  470.    fflush(stdprn);
  471.  
  472.    /* clear the screen and return to the menu */
  473.  
  474.    fg_mousevis(OFF);
  475.    fg_restore(0,xlimit,menu_bottom,ylimit);
  476.  
  477.    fg_mousevis(ON);
  478.    redraw = TRUE;
  479.  
  480.    return(OK);
  481. }
  482.  
  483. /**********************************************************************\
  484. *                                                                      *
  485. *  shell -- create a DOS command shell                                 *
  486. *                                                                      *
  487. \**********************************************************************/
  488.  
  489. shell()
  490. {
  491.    /* return to the original video mode */
  492.  
  493.    fg_mousepos(&xmouse,&ymouse,&buttons);
  494.    fg_setmode(old_mode);
  495.    fg_reset();
  496.  
  497.    /* spawn the DOS command shell */
  498.  
  499.    printf("\nEnter the command EXIT to return to the Fastgraph demo.");
  500.    spawnlp(P_WAIT,"COMMAND.COM",NULL);
  501.  
  502.    /* upon return from DOS, restore the video context */
  503.  
  504.    fg_setmode(16);
  505.    fg_sethpage(1);
  506.    visual = 0;
  507.    hidden = 1;
  508.  
  509.    /* redraw the screen */
  510.  
  511.    redraw = TRUE;
  512.    draw_screen(0);
  513.    fg_copypage(hidden,visual);
  514.    init_mouse();
  515.  
  516.    return(OK);
  517. }
  518.