home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 11 / 11.iso / m / m242 / 4.ddi / DEMOS2.ZIP / DEMODUMP.C next >
Encoding:
C/C++ Source or Header  |  1989-12-23  |  14.8 KB  |  484 lines

  1. #include "eg_grafx.h"
  2.  
  3. int printer,direc,size,margin,vertspac,copies,ffeed,prtcolors,device,mode,k;
  4. int color[16]     = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
  5.  
  6. main()
  7. {
  8.  
  9.     unsigned char banks;
  10.     char str[20][70],*s[20];
  11.     struct egstatus stat;
  12.     int i;
  13.  
  14. retry:
  15.     fontquit();
  16.     initgraf(3,0,0);
  17.     printf("   This demo will prompt you to input the parameters to the\n");
  18.     printf("   SCRNDUMP function and also ask you the graphics mode to choose.\n");
  19.     printf("\n");
  20.  
  21.  
  22.     printf("   Device Choices\n");
  23.     printf("--------------------\n");
  24.     printf("Enter 1  for IBM CGA\n");
  25.     printf("Enter 2  for IBM EGA\n");
  26.     printf("Enter 3  for IBM VGA\n");
  27.     printf("Enter 4  for IBM MCGA\n");
  28.     printf("Enter 5  for Hercules\n");
  29.     printf("Enter 6  for Video 7 Extended VGA\n");
  30.     printf("Enter 7  for Paradise Professional Extended VGA\n");
  31.     printf("Enter 8  for IBM 8514\n");
  32.     printf("Enter 9  for ATT Card 640x400 B & W only.\n");
  33.     printf("Enter 10 for DEB Board 640x400 16 color.\n");
  34.     printf("Enter 11 for Techmar card.\n");
  35.     printf("Enter 12 Exit\n");
  36.     printf("\n\n");
  37.     printf("Enter device :");
  38.     scanf("%d",&device);
  39.  
  40.     if (device == 12) 
  41.         goto done;
  42.  
  43.     if (!device || device > 12){ 
  44.      printf("\nInvalid Response\n"); exit(); 
  45.     }
  46.     
  47.     printf("Enter graphics mode, See manual for initgraf() function : ");
  48.     scanf("%d",&mode);
  49.  
  50.     initgraf(3,0,0);
  51.     printf("\n\n    Printer Choices\n");
  52.     printf("----------------------\n");
  53.     printf("   0 - EPSON FX\n");
  54.     printf("   1 - IBM or EPSON LX & MX\n");
  55.     printf("   2 - OKIDATA\n");
  56.     printf("   3 - LASERJET\n");
  57.     printf("   4 - Texas Instruments\n");
  58.     printf("   5 - Toshiba\n");
  59.     printf("\n\nEnter the printer type : ");
  60.     scanf("%d",&printer);
  61.  
  62.     if (printer > 5){ 
  63.      printf("\nInvalid Response\n"); exit(); 
  64.     }
  65.  
  66.     initgraf(3,0,0);
  67.     printf("Enter the following parameters for SCRNDUMP()\n\n");
  68.     printf("\n1) Enter 0 for a horizontal graph or 1 for a vertical graph : ");
  69.     scanf("%d",&direc);
  70.     printf("\n2) Enter the graph size : ");
  71.     scanf("%d",&size);
  72.     printf("\n3) Enter the horizontal margin for the left side of the paper : ");
  73.     scanf("%d",&margin);
  74.     printf("\n4) Enter the vertical margin : ");
  75.     scanf("%d",&vertspac);
  76.     printf("\n5) Enter 1 for a form feed or 0 for no form feed : ");
  77.     scanf("%d",&ffeed);
  78.     printf("\n6) Enter the number of copies to make (1-99) : ");   
  79.     scanf("%d",&copies);
  80.     printf("\n7) If you have a color printer, enter the number of colors\n");
  81.     printf("   to use, else enter 0 : ");   
  82.     scanf("%d",&prtcolors);
  83.  
  84.  
  85.     switch(device){
  86.         case 1 : setibm(); break;
  87.         case 2 : setega(); break;
  88.         case 3 : setvga(); break;
  89.         case 4 : setmcga(); break;
  90.         case 5 : setherc(1); break;
  91.         case 6 : set_vid7(); break;
  92.         case 7 : set_pvga(); break;
  93.         case 8 : set8514(); break;
  94.         case 9 : setatt(); break;
  95.         case 10: setdeb4(); break;
  96.         case 11: settec(); break;
  97.     }
  98. /* set 256 color modes if asked for */
  99.     if (mode == 103 || mode == 102 || mode == 94 || mode == 95){
  100.         set_256c();
  101.         device = 3;
  102.     }
  103.     if (mode == 99)
  104.         set_63h();
  105. menu:
  106.  
  107.     initgraf(mode,0,0);
  108.     eg_status(&stat);
  109.     fontinit();
  110.     font_load(0,"ibmrom");
  111.  
  112.     strcpy(str[0],"Essential Graphics Scrndump Demo");
  113.     strcpy(str[1],"--------------------------------");
  114.     strcpy(str[2]," ");
  115.     strcpy(str[3],"Hit Return To Display a Chart.");
  116.     strcpy(str[4]," ");
  117.     strcpy(str[5],"Hit 'P' To Print The Chart");
  118.     strcpy(str[6]," ");
  119.     strcpy(str[7],"Or Escape to Exit the Chart.");
  120.     for (i = 0; i < 8; i++)
  121.             s[i] = str[i];
  122.     if (stat.avail_colors == 2){
  123.         for (i = 1; i < 16; i++)
  124.                 color[i] = 1;
  125.         eg_window(4,0,"ibmrom",10,10,8,s,color[1],color[0],1);
  126.     }
  127.     else{
  128.         for (i = 0; i < 16; i++)
  129.                 color[i] = i;
  130.         eg_window(4,0,"ibmrom",10,10,8,s,color[1],color[15],1);
  131.     }
  132.     getch();
  133.    graph(mode); 
  134.     goto retry;
  135. done:
  136.     initgraf(3,0,0);
  137. }
  138.  
  139. graph(mode)
  140.     int mode;
  141. {
  142.     int i;
  143.     struct egstatus s;
  144.     int stack[20][3];
  145.     int j,key,graph;
  146.     int w,numpts,v1,v2,v3,v4;
  147.     char colors[10];
  148.     char labels[20][30],*l[20];
  149.     char font1[20],font2[20],font3[20],title[50];
  150.     char x_descrip_label[20];
  151.     char y_descrip_label[20];
  152.     GRAPH_INFO gg;
  153.     EG_AXIS x_axis,y_axis;
  154.  
  155.     strcpy(title,"Scrndump() Demo Chart");
  156.     eg_status(&s);
  157.     initgraf(mode,0,0);
  158.  
  159. /* initialize data for the graphs */
  160.  
  161.     stack[0][0] = 30;     stack[0][1] = 20;     stack[0][2] = 10;
  162.     stack[1][0] = 40;     stack[1][1] = 20;     stack[1][2] = 30;
  163.     stack[2][0] = 10;     stack[2][1] =  8;     stack[2][2] =  6;
  164.     stack[3][0] = 60;     stack[3][1] = 40;     stack[3][2] = 5;
  165.     stack[4][0] = 35;     stack[4][1] = 40;     stack[4][2] = 20;
  166.     stack[5][0] = 12;     stack[5][1] = 45;     stack[5][2] = 22;
  167.     stack[6][0] = 24;     stack[6][1] = 24;     stack[6][2] = 14;
  168.     stack[7][0] = 30;     stack[7][1] = 18;     stack[7][2] = 46;
  169.     stack[8][0] = 40;     stack[8][1] = 40;     stack[8][2] = 20;
  170.     stack[9][0] = 60;     stack[9][1] = 40;     stack[9][2] = 5;
  171.     stack[10][0] = 30;     stack[10][1] = 10;     stack[10][2] = 5;
  172.     stack[11][0] = 70;     stack[11][1] = 31;     stack[11][2] = 5;
  173.     
  174.     if (device > 2 && device != 4){    
  175.         strcpy(labels[0],"January");    strcpy(labels[1],"February");
  176.         strcpy(labels[2],"March");         strcpy(labels[3],"April");
  177.         strcpy(labels[4],"May");         strcpy(labels[5],"June");
  178.         strcpy(labels[6],"July");         strcpy(labels[7],"August");
  179.         strcpy(labels[8],"September");strcpy(labels[9],"October");
  180.         strcpy(labels[10],"November");strcpy(labels[11],"December");
  181.         strcpy(labels[12],"January");    strcpy(labels[13],"February");
  182.         strcpy(labels[14],"March");
  183.     }
  184.     else{
  185.         strcpy(labels[0],"Jan");    strcpy(labels[1],"Feb");
  186.         strcpy(labels[2],"Mar");    strcpy(labels[3],"Apr");
  187.         strcpy(labels[4],"May");      strcpy(labels[5],"Jun");
  188.         strcpy(labels[6],"Jul");     strcpy(labels[7],"Aug");
  189.         strcpy(labels[8],"Sep");    strcpy(labels[9],"Oct");
  190.         strcpy(labels[10],"Nov");    strcpy(labels[11],"Dec");
  191.         strcpy(labels[12],"Jan");    strcpy(labels[13],"Feb");
  192.         strcpy(labels[14],"Mar");
  193.     }
  194.     if (font_load(1,"vga8x16")){
  195.          printf("VGA8X16 font not available !!!\n");
  196.          exit(0);
  197.     }
  198.     if (font_load(2,"roman3.sms")){
  199.          printf("ROMAN3.SMS font not available !!!\n");
  200.          exit(0);
  201.     }
  202.     if (font_load(3,"ega8x14")){
  203.          printf("ega8x14 font not available !!!\n");
  204.          exit(0);
  205.     }
  206.     if (font_load(4,"sbo.sms")){
  207.          printf("SBO.SMS font not available !!!\n");
  208.          exit(0);
  209.     }
  210.     if (font_load(5,"micprint.sms")){
  211.          printf("IBMROM font not available !!!\n");
  212.          exit(0);
  213.     }
  214.  
  215.     font_change(0,-1,-1,-1,0,-1);
  216.     x_axis.label_type = MANUAL_SET;
  217.     y_axis.label_type = AUTO_SET;
  218.    gg.title_loc = TOP;
  219.     gg.bar_mid_value = -1;
  220.     gg.bar_type = 0;                        /* default bar type to 0 */
  221.     numpts = 12;                            /* number of points = 10 */
  222.      strcpy(x_descrip_label,"Months For 1989");
  223.     strcpy(y_descrip_label,"Gross   Profits");
  224.     x_axis.descrip_label = x_descrip_label;
  225.     y_axis.descrip_label = y_descrip_label;
  226.  
  227.     x_axis.axis_width = 1;    
  228.     x_axis.axis_style = 0xffff;
  229.     x_axis.label_color = color[15];    
  230.     x_axis.descrip_color = color[11];    
  231.     x_axis.grid_color = color[15];
  232.     x_axis.tick_gap = -1;     
  233.     x_axis.tick_size = -1;
  234.     x_axis.grid_width = 1;    
  235.     x_axis.num_labels = 12;
  236.     x_axis.num_grids  = 11;      
  237.     x_axis.grid_style = 0xffff;
  238.     x_axis.num_ticks = 11;    
  239.     x_axis.tick_color = color[15];    
  240.  
  241.     y_axis.axis_width = 1;    
  242.     y_axis.axis_style = 0xffff;
  243.     y_axis.label_color = color[14];    
  244.     y_axis.descrip_color = color[12];    
  245.     y_axis.grid_color = color[7];
  246.     y_axis.tick_gap = -1;     
  247.     y_axis.tick_size = -1;
  248.     y_axis.grid_width = 1;    
  249.     y_axis.grid_style = 0xffff;
  250.     y_axis.num_labels = 11;
  251.     y_axis.num_grids  = 10;      
  252.     y_axis.num_ticks = 10;    
  253.     y_axis.tick_color = color[15];    
  254.  
  255.     gg.frame_back  =     color[0];        /* frame background is color 7 */    
  256.     gg.frame_color =     color[15];        /* frame color is color 15 */    
  257.     gg.frame_width = 1;
  258.     gg.frame_style = 0xffff;
  259.     gg.title_gap = -1;    
  260.     x_axis.axis_gap = -1; 
  261.     y_axis.axis_gap = -1;
  262.     gg.line_width = 3;
  263.     gg.title_color = color[15];
  264.     gg.title_label = title;
  265.     gg.symbol_fill = 1;                    /* default to filled symbols */
  266.     gg.symbol_size = -1;                /* auto set */
  267.     gg.item_color = color[1]; gg.symbol_color = color[2];
  268.  
  269.     for (i = 0; i < numpts; i++)
  270.           l[i] = labels[i];
  271.     x_axis.labels = l;
  272.     y_axis.labels = l;
  273.  
  274.     switch(device){
  275.         case 1 : color[4] = 2; color[5] = 3; color[15] = 3;
  276.                     color[9] = 1; color[10] = 2; color[11] = 3;
  277.                     color[13] = 2;                        
  278.                     x_axis.grid_color = gg.title_color = 3;
  279.                     x_axis.label_color = x_axis.tick_color = 3; 
  280.                     y_axis.label_color = y_axis.tick_color = 3; 
  281.                     x_axis.descrip_color =    y_axis.descrip_color =    3;
  282.                     gg.frame_back  =      color[0];
  283.                     gg.frame_color =     3;
  284.                     x_axis.grid_color = y_axis.grid_color = color[3];
  285.             /* use the ibmrom font for labels */
  286.                     x_axis.descrip_font = y_axis.descrip_font = 0; 
  287.                     x_axis.axis_font = y_axis.axis_font = 5;  
  288.                     gg.title_font = 0; 
  289.                     x_axis.axis_font = 0;  y_axis.axis_font = 0;  
  290.                     gg.line_width = 1;
  291.                     gg.title_color = color[3];
  292.                     gg.item_color = color[2]; gg.symbol_color = color[3];
  293.                     if (mode == 6)
  294.                         mono_hatch();
  295.                     else
  296.                         color_hatch();
  297.                     break;
  298.         case 2 : color_hatch();
  299.                     x_axis.descrip_font = y_axis.descrip_font = 0; 
  300.                     x_axis.axis_font = y_axis.axis_font = 4;  
  301.             /* use the rman3.sms font for the title */
  302.                     gg.title_font = 2; 
  303.                     gg.bar_mid_width = 2;
  304.                     break;
  305.         case 3 : gg.bar_mid_width = 3;
  306.                     color_hatch();
  307.                     x_axis.descrip_font = y_axis.descrip_font = 4; 
  308.                     x_axis.axis_font = y_axis.axis_font = 1;  
  309.                     gg.title_font = 2; 
  310.                     break;
  311.         case 4 :    /* use the ibmrom font for labels */
  312.                     x_axis.descrip_font = y_axis.descrip_font = 0; 
  313.                     x_axis.axis_font = y_axis.axis_font = 5;  
  314.                     gg.title_font = 0; 
  315.                     x_axis.axis_font = 0;  y_axis.axis_font = 0;  
  316.                     gg.line_width = 1;
  317.                     color_hatch();
  318.                     break;
  319.         case 5 : color[1] = color[2] = color[3] = color[4] = color[5] = 1;
  320.                     x_axis.descrip_color = x_axis.tick_color = color[1]; 
  321.                     y_axis.descrip_color = y_axis.tick_color = color[1]; 
  322.                     x_axis.label_color =    y_axis.label_color =    color[1];
  323.                     gg.frame_back  =      color[0];
  324.                     gg.frame_color =     color[1];
  325.                     x_axis.grid_color = y_axis.grid_color = color[1];
  326.                     x_axis.descrip_font = y_axis.descrip_font = 4; 
  327.                     x_axis.axis_font = y_axis.axis_font = 0;  
  328.                     gg.title_font = 2; 
  329.                     gg.line_width = 1;
  330.                     gg.title_color = x_axis.tick_color = color[1];
  331.                     y_axis.tick_color = color[1];
  332.                     gg.item_color = gg.symbol_color = color[1];
  333.                     mono_hatch();
  334.                     gg.bar_mid_width = 3;
  335.                     break;
  336.         case 6 : gg.line_width = 6;
  337.                     x_axis.descrip_font = y_axis.descrip_font = 4; 
  338.                     x_axis.axis_font = y_axis.axis_font = 1;  
  339.             /* use the rman3.sms font for the title */
  340.                     gg.title_font = 2; 
  341.                     gg.bar_mid_width = 5;
  342.                     color_hatch();
  343.                     break;
  344.         case 7 : gg.line_width = 5;
  345.                     gg.bar_mid_width = 5;
  346.                     x_axis.descrip_font = y_axis.descrip_font = 4; 
  347.                     x_axis.axis_font = y_axis.axis_font = 1;  
  348.             /* use the roman3.sms font for the title */
  349.                     gg.title_font = 2; 
  350.                     color_hatch();
  351.                     break;
  352.         case 8 : gg.line_width = 6;
  353.                     x_axis.descrip_font = y_axis.descrip_font = 4; 
  354.                     x_axis.axis_font = y_axis.axis_font = 1;  
  355.             /* use the rman3.sms font for the title */
  356.                     gg.title_font = 2; 
  357.                     gg.bar_mid_width = 5;
  358.                     color_hatch();
  359.                     break;
  360.         case 9 : color_hatch();
  361.                     x_axis.descrip_font = y_axis.descrip_font = 0; 
  362.                     x_axis.axis_font = y_axis.axis_font = 4;  
  363.             /* use the rman3.sms font for the title */
  364.                     gg.title_font = 2; 
  365.                     gg.bar_mid_width = 2;
  366.                     break;
  367.         case 10 : color_hatch();
  368.                     x_axis.descrip_font = y_axis.descrip_font = 0; 
  369.                     x_axis.axis_font = y_axis.axis_font = 4;  
  370.             /* use the rman3.sms font for the title */
  371.                     gg.title_font = 2; 
  372.                     gg.bar_mid_width = 2;
  373.                     break;
  374.         case 11 : color_hatch();
  375.                     x_axis.descrip_font = y_axis.descrip_font = 0; 
  376.                     x_axis.axis_font = y_axis.axis_font = 4;  
  377.             /* use the rman3.sms font for the title */
  378.                     gg.title_font = 2; 
  379.                     gg.bar_mid_width = 2;
  380.                     break;
  381.         case 13 : gg.line_width = 5;
  382.                     gg.bar_mid_width = 5;
  383.                     x_axis.descrip_font = y_axis.descrip_font = 4; 
  384.                     x_axis.axis_font = y_axis.axis_font = 1;  
  385.             /* use the roman3.sms font for the title */
  386.                     gg.title_font = 2; 
  387.                     color_hatch();
  388.                     break;
  389.     }
  390.     if (mode == 13 || mode == 14){    /* use the ibmrom font for labels */
  391.         x_axis.descrip_font = y_axis.descrip_font = 0; 
  392.         x_axis.axis_font = y_axis.axis_font = 5;  
  393.         gg.title_font = 0; 
  394.         x_axis.axis_font = 0;  y_axis.axis_font = 0;  
  395.     }
  396.  
  397.     setview(0,0,s.x_res-1,s.y_res-1);
  398.     gg.graph_type = STACK_BAR_GRAPH; gg.bar_type = VERT_BARS;
  399.     gg.stack_bars = 3;
  400.     if (s.avail_colors == 2){
  401.         colors[0] = 5; colors[1] = 1; colors[2] = 6;
  402.     }
  403.     else{
  404.         colors[0] = color[4]; colors[1] = color[15]; colors[2] = color[1];
  405.     }
  406.     gg.stack_colors = colors;
  407.     numpts = 12;
  408.     gg.series_bars = 1;    gg.num_series = 0;
  409.     gg.bar_mid_width = -1;
  410.     x_axis.num_grids  = 11;      y_axis.num_grids  = 11;
  411.     x_axis.num_ticks = 11;      y_axis.num_ticks = 11;
  412.     x_axis.low = 0;    x_axis.high = numpts;
  413.     y_axis.low = 0;    y_axis.high = 110;
  414.     gg.frame_type = FULL_FRAME;
  415.     strcpy(x_descrip_label,"Months For 1989");
  416.     strcpy(y_descrip_label,"Gross   Profits");
  417.     gg.item_color = color[2]; 
  418.     eg_graph(numpts,stack,WHOLE_GRAPH,gg,x_axis,y_axis); 
  419.     eg_rectangle(0,0,s.x_res-1,s.y_res-1,1,0,-1);
  420.     i = esgetkey(&k);
  421.     if (k == 112){
  422.         i = scrndump(printer,direc,size,margin,vertspac,ffeed,copies,prtcolors);
  423.         printf("Scrndump return code = %d\n",i);
  424.         getch(); 
  425.     }
  426. }
  427.  
  428.  
  429.  
  430. eg_window(horz_pad,wait,font,startx,starty,lines,str,forg,back,center)
  431.     int horz_pad;            /* number of characters to pad window */
  432.     int wait;                /* 0 - no keystroke wait, 1 - wait for keystroke */
  433.     char *font;                /* font to load */
  434.     int startx,starty;    /* starting locs */
  435.     int lines;                /* number of text lines */
  436.     char *str[];            /* text strings */
  437.     int forg,back;            /* colors */
  438.     int center;                /* 1 - center box, 0 - no center */
  439. {
  440.  
  441.     int i,j,border,l,size;
  442.      int w_height,w_width,largest;
  443.     int c,h,ch,lf,vsize,hsize,baseline;
  444.     struct egstatus s;
  445.     
  446.     worldon(0);
  447.     clipoff();
  448.     eg_status(&s);
  449.  
  450.     font_load(7,font);
  451.     font_info(7,&c,&h,&ch,&lf,&vsize,&hsize,&baseline);
  452.  
  453.     largest = 0; 
  454.     for (i = 0; i < lines; i++){
  455.           size = fontpixn(7,str[i],0,strlen(str[i]));
  456.           if (size > largest)
  457.                 largest = size;
  458.     }
  459.  
  460.     w_width = largest+(hsize*horz_pad);    
  461.     w_height = vsize*(lines+2);
  462.  
  463.     if (center){
  464.         startx = (s.x_res - w_width)/2;
  465.         starty = (s.y_res - w_height)/2;
  466.     }
  467.         
  468.     border = 5;
  469.     eg_rectangle(startx,starty,startx+w_width+border,starty+w_height+border,back,1,-1); 
  470.  
  471.     for (i = 0; i < border; i++,starty++,startx++,border--)
  472.          eg_rectangle(startx,starty,startx+w_width+1+border-i,
  473.                             starty+w_height+border-i,forg,0,-1);
  474.  
  475.     for (i = 0,j = 1; i < lines; i++,j++){
  476.           size = fontpixn(7,str[i],0,strlen(str[i]));    
  477.           fhatsay(7,str[i],forg,startx+(w_width-size)/2,starty+j*vsize+vsize/2);
  478.     }
  479.     if (wait)
  480.          esgetkey(&i);
  481.     font_unload(7);
  482. }
  483.  
  484.