home *** CD-ROM | disk | FTP | other *** search
- #include "eg_grafx.h"
-
- int printer,direc,size,margin,vertspac,copies,ffeed,prtcolors,device,mode,k;
- int color[16] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
-
- main()
- {
-
- unsigned char banks;
- char str[20][70],*s[20];
- struct egstatus stat;
- int i;
-
- retry:
- fontquit();
- initgraf(3,0,0);
- printf(" This demo will prompt you to input the parameters to the\n");
- printf(" SCRNDUMP function and also ask you the graphics mode to choose.\n");
- printf("\n");
-
-
- printf(" Device Choices\n");
- printf("--------------------\n");
- printf("Enter 1 for IBM CGA\n");
- printf("Enter 2 for IBM EGA\n");
- printf("Enter 3 for IBM VGA\n");
- printf("Enter 4 for IBM MCGA\n");
- printf("Enter 5 for Hercules\n");
- printf("Enter 6 for Video 7 Extended VGA\n");
- printf("Enter 7 for Paradise Professional Extended VGA\n");
- printf("Enter 8 for IBM 8514\n");
- printf("Enter 9 for ATT Card 640x400 B & W only.\n");
- printf("Enter 10 for DEB Board 640x400 16 color.\n");
- printf("Enter 11 for Techmar card.\n");
- printf("Enter 12 Exit\n");
- printf("\n\n");
- printf("Enter device :");
- scanf("%d",&device);
-
- if (device == 12)
- goto done;
-
- if (!device || device > 12){
- printf("\nInvalid Response\n"); exit();
- }
-
- printf("Enter graphics mode, See manual for initgraf() function : ");
- scanf("%d",&mode);
-
- initgraf(3,0,0);
- printf("\n\n Printer Choices\n");
- printf("----------------------\n");
- printf(" 0 - EPSON FX\n");
- printf(" 1 - IBM or EPSON LX & MX\n");
- printf(" 2 - OKIDATA\n");
- printf(" 3 - LASERJET\n");
- printf(" 4 - Texas Instruments\n");
- printf(" 5 - Toshiba\n");
- printf("\n\nEnter the printer type : ");
- scanf("%d",&printer);
-
- if (printer > 5){
- printf("\nInvalid Response\n"); exit();
- }
-
- initgraf(3,0,0);
- printf("Enter the following parameters for SCRNDUMP()\n\n");
- printf("\n1) Enter 0 for a horizontal graph or 1 for a vertical graph : ");
- scanf("%d",&direc);
- printf("\n2) Enter the graph size : ");
- scanf("%d",&size);
- printf("\n3) Enter the horizontal margin for the left side of the paper : ");
- scanf("%d",&margin);
- printf("\n4) Enter the vertical margin : ");
- scanf("%d",&vertspac);
- printf("\n5) Enter 1 for a form feed or 0 for no form feed : ");
- scanf("%d",&ffeed);
- printf("\n6) Enter the number of copies to make (1-99) : ");
- scanf("%d",&copies);
- printf("\n7) If you have a color printer, enter the number of colors\n");
- printf(" to use, else enter 0 : ");
- scanf("%d",&prtcolors);
-
-
- switch(device){
- case 1 : setibm(); break;
- case 2 : setega(); break;
- case 3 : setvga(); break;
- case 4 : setmcga(); break;
- case 5 : setherc(1); break;
- case 6 : set_vid7(); break;
- case 7 : set_pvga(); break;
- case 8 : set8514(); break;
- case 9 : setatt(); break;
- case 10: setdeb4(); break;
- case 11: settec(); break;
- }
- /* set 256 color modes if asked for */
- if (mode == 103 || mode == 102 || mode == 94 || mode == 95){
- set_256c();
- device = 3;
- }
- if (mode == 99)
- set_63h();
- menu:
-
- initgraf(mode,0,0);
- eg_status(&stat);
- fontinit();
- font_load(0,"ibmrom");
-
- strcpy(str[0],"Essential Graphics Scrndump Demo");
- strcpy(str[1],"--------------------------------");
- strcpy(str[2]," ");
- strcpy(str[3],"Hit Return To Display a Chart.");
- strcpy(str[4]," ");
- strcpy(str[5],"Hit 'P' To Print The Chart");
- strcpy(str[6]," ");
- strcpy(str[7],"Or Escape to Exit the Chart.");
- for (i = 0; i < 8; i++)
- s[i] = str[i];
- if (stat.avail_colors == 2){
- for (i = 1; i < 16; i++)
- color[i] = 1;
- eg_window(4,0,"ibmrom",10,10,8,s,color[1],color[0],1);
- }
- else{
- for (i = 0; i < 16; i++)
- color[i] = i;
- eg_window(4,0,"ibmrom",10,10,8,s,color[1],color[15],1);
- }
- getch();
- graph(mode);
- goto retry;
- done:
- initgraf(3,0,0);
- }
-
- graph(mode)
- int mode;
- {
- int i;
- struct egstatus s;
- int stack[20][3];
- int j,key,graph;
- int w,numpts,v1,v2,v3,v4;
- char colors[10];
- char labels[20][30],*l[20];
- char font1[20],font2[20],font3[20],title[50];
- char x_descrip_label[20];
- char y_descrip_label[20];
- GRAPH_INFO gg;
- EG_AXIS x_axis,y_axis;
-
- strcpy(title,"Scrndump() Demo Chart");
- eg_status(&s);
- initgraf(mode,0,0);
-
- /* initialize data for the graphs */
-
- stack[0][0] = 30; stack[0][1] = 20; stack[0][2] = 10;
- stack[1][0] = 40; stack[1][1] = 20; stack[1][2] = 30;
- stack[2][0] = 10; stack[2][1] = 8; stack[2][2] = 6;
- stack[3][0] = 60; stack[3][1] = 40; stack[3][2] = 5;
- stack[4][0] = 35; stack[4][1] = 40; stack[4][2] = 20;
- stack[5][0] = 12; stack[5][1] = 45; stack[5][2] = 22;
- stack[6][0] = 24; stack[6][1] = 24; stack[6][2] = 14;
- stack[7][0] = 30; stack[7][1] = 18; stack[7][2] = 46;
- stack[8][0] = 40; stack[8][1] = 40; stack[8][2] = 20;
- stack[9][0] = 60; stack[9][1] = 40; stack[9][2] = 5;
- stack[10][0] = 30; stack[10][1] = 10; stack[10][2] = 5;
- stack[11][0] = 70; stack[11][1] = 31; stack[11][2] = 5;
-
- if (device > 2 && device != 4){
- strcpy(labels[0],"January"); strcpy(labels[1],"February");
- strcpy(labels[2],"March"); strcpy(labels[3],"April");
- strcpy(labels[4],"May"); strcpy(labels[5],"June");
- strcpy(labels[6],"July"); strcpy(labels[7],"August");
- strcpy(labels[8],"September");strcpy(labels[9],"October");
- strcpy(labels[10],"November");strcpy(labels[11],"December");
- strcpy(labels[12],"January"); strcpy(labels[13],"February");
- strcpy(labels[14],"March");
- }
- else{
- strcpy(labels[0],"Jan"); strcpy(labels[1],"Feb");
- strcpy(labels[2],"Mar"); strcpy(labels[3],"Apr");
- strcpy(labels[4],"May"); strcpy(labels[5],"Jun");
- strcpy(labels[6],"Jul"); strcpy(labels[7],"Aug");
- strcpy(labels[8],"Sep"); strcpy(labels[9],"Oct");
- strcpy(labels[10],"Nov"); strcpy(labels[11],"Dec");
- strcpy(labels[12],"Jan"); strcpy(labels[13],"Feb");
- strcpy(labels[14],"Mar");
- }
- if (font_load(1,"vga8x16")){
- printf("VGA8X16 font not available !!!\n");
- exit(0);
- }
- if (font_load(2,"roman3.sms")){
- printf("ROMAN3.SMS font not available !!!\n");
- exit(0);
- }
- if (font_load(3,"ega8x14")){
- printf("ega8x14 font not available !!!\n");
- exit(0);
- }
- if (font_load(4,"sbo.sms")){
- printf("SBO.SMS font not available !!!\n");
- exit(0);
- }
- if (font_load(5,"micprint.sms")){
- printf("IBMROM font not available !!!\n");
- exit(0);
- }
-
- font_change(0,-1,-1,-1,0,-1);
- x_axis.label_type = MANUAL_SET;
- y_axis.label_type = AUTO_SET;
- gg.title_loc = TOP;
- gg.bar_mid_value = -1;
- gg.bar_type = 0; /* default bar type to 0 */
- numpts = 12; /* number of points = 10 */
- strcpy(x_descrip_label,"Months For 1989");
- strcpy(y_descrip_label,"Gross Profits");
- x_axis.descrip_label = x_descrip_label;
- y_axis.descrip_label = y_descrip_label;
-
- x_axis.axis_width = 1;
- x_axis.axis_style = 0xffff;
- x_axis.label_color = color[15];
- x_axis.descrip_color = color[11];
- x_axis.grid_color = color[15];
- x_axis.tick_gap = -1;
- x_axis.tick_size = -1;
- x_axis.grid_width = 1;
- x_axis.num_labels = 12;
- x_axis.num_grids = 11;
- x_axis.grid_style = 0xffff;
- x_axis.num_ticks = 11;
- x_axis.tick_color = color[15];
-
- y_axis.axis_width = 1;
- y_axis.axis_style = 0xffff;
- y_axis.label_color = color[14];
- y_axis.descrip_color = color[12];
- y_axis.grid_color = color[7];
- y_axis.tick_gap = -1;
- y_axis.tick_size = -1;
- y_axis.grid_width = 1;
- y_axis.grid_style = 0xffff;
- y_axis.num_labels = 11;
- y_axis.num_grids = 10;
- y_axis.num_ticks = 10;
- y_axis.tick_color = color[15];
-
- gg.frame_back = color[0]; /* frame background is color 7 */
- gg.frame_color = color[15]; /* frame color is color 15 */
- gg.frame_width = 1;
- gg.frame_style = 0xffff;
- gg.title_gap = -1;
- x_axis.axis_gap = -1;
- y_axis.axis_gap = -1;
- gg.line_width = 3;
- gg.title_color = color[15];
- gg.title_label = title;
- gg.symbol_fill = 1; /* default to filled symbols */
- gg.symbol_size = -1; /* auto set */
- gg.item_color = color[1]; gg.symbol_color = color[2];
-
- for (i = 0; i < numpts; i++)
- l[i] = labels[i];
- x_axis.labels = l;
- y_axis.labels = l;
-
- switch(device){
- case 1 : color[4] = 2; color[5] = 3; color[15] = 3;
- color[9] = 1; color[10] = 2; color[11] = 3;
- color[13] = 2;
- x_axis.grid_color = gg.title_color = 3;
- x_axis.label_color = x_axis.tick_color = 3;
- y_axis.label_color = y_axis.tick_color = 3;
- x_axis.descrip_color = y_axis.descrip_color = 3;
- gg.frame_back = color[0];
- gg.frame_color = 3;
- x_axis.grid_color = y_axis.grid_color = color[3];
- /* use the ibmrom font for labels */
- x_axis.descrip_font = y_axis.descrip_font = 0;
- x_axis.axis_font = y_axis.axis_font = 5;
- gg.title_font = 0;
- x_axis.axis_font = 0; y_axis.axis_font = 0;
- gg.line_width = 1;
- gg.title_color = color[3];
- gg.item_color = color[2]; gg.symbol_color = color[3];
- if (mode == 6)
- mono_hatch();
- else
- color_hatch();
- break;
- case 2 : color_hatch();
- x_axis.descrip_font = y_axis.descrip_font = 0;
- x_axis.axis_font = y_axis.axis_font = 4;
- /* use the rman3.sms font for the title */
- gg.title_font = 2;
- gg.bar_mid_width = 2;
- break;
- case 3 : gg.bar_mid_width = 3;
- color_hatch();
- x_axis.descrip_font = y_axis.descrip_font = 4;
- x_axis.axis_font = y_axis.axis_font = 1;
- gg.title_font = 2;
- break;
- case 4 : /* use the ibmrom font for labels */
- x_axis.descrip_font = y_axis.descrip_font = 0;
- x_axis.axis_font = y_axis.axis_font = 5;
- gg.title_font = 0;
- x_axis.axis_font = 0; y_axis.axis_font = 0;
- gg.line_width = 1;
- color_hatch();
- break;
- case 5 : color[1] = color[2] = color[3] = color[4] = color[5] = 1;
- x_axis.descrip_color = x_axis.tick_color = color[1];
- y_axis.descrip_color = y_axis.tick_color = color[1];
- x_axis.label_color = y_axis.label_color = color[1];
- gg.frame_back = color[0];
- gg.frame_color = color[1];
- x_axis.grid_color = y_axis.grid_color = color[1];
- x_axis.descrip_font = y_axis.descrip_font = 4;
- x_axis.axis_font = y_axis.axis_font = 0;
- gg.title_font = 2;
- gg.line_width = 1;
- gg.title_color = x_axis.tick_color = color[1];
- y_axis.tick_color = color[1];
- gg.item_color = gg.symbol_color = color[1];
- mono_hatch();
- gg.bar_mid_width = 3;
- break;
- case 6 : gg.line_width = 6;
- x_axis.descrip_font = y_axis.descrip_font = 4;
- x_axis.axis_font = y_axis.axis_font = 1;
- /* use the rman3.sms font for the title */
- gg.title_font = 2;
- gg.bar_mid_width = 5;
- color_hatch();
- break;
- case 7 : gg.line_width = 5;
- gg.bar_mid_width = 5;
- x_axis.descrip_font = y_axis.descrip_font = 4;
- x_axis.axis_font = y_axis.axis_font = 1;
- /* use the roman3.sms font for the title */
- gg.title_font = 2;
- color_hatch();
- break;
- case 8 : gg.line_width = 6;
- x_axis.descrip_font = y_axis.descrip_font = 4;
- x_axis.axis_font = y_axis.axis_font = 1;
- /* use the rman3.sms font for the title */
- gg.title_font = 2;
- gg.bar_mid_width = 5;
- color_hatch();
- break;
- case 9 : color_hatch();
- x_axis.descrip_font = y_axis.descrip_font = 0;
- x_axis.axis_font = y_axis.axis_font = 4;
- /* use the rman3.sms font for the title */
- gg.title_font = 2;
- gg.bar_mid_width = 2;
- break;
- case 10 : color_hatch();
- x_axis.descrip_font = y_axis.descrip_font = 0;
- x_axis.axis_font = y_axis.axis_font = 4;
- /* use the rman3.sms font for the title */
- gg.title_font = 2;
- gg.bar_mid_width = 2;
- break;
- case 11 : color_hatch();
- x_axis.descrip_font = y_axis.descrip_font = 0;
- x_axis.axis_font = y_axis.axis_font = 4;
- /* use the rman3.sms font for the title */
- gg.title_font = 2;
- gg.bar_mid_width = 2;
- break;
- case 13 : gg.line_width = 5;
- gg.bar_mid_width = 5;
- x_axis.descrip_font = y_axis.descrip_font = 4;
- x_axis.axis_font = y_axis.axis_font = 1;
- /* use the roman3.sms font for the title */
- gg.title_font = 2;
- color_hatch();
- break;
- }
- if (mode == 13 || mode == 14){ /* use the ibmrom font for labels */
- x_axis.descrip_font = y_axis.descrip_font = 0;
- x_axis.axis_font = y_axis.axis_font = 5;
- gg.title_font = 0;
- x_axis.axis_font = 0; y_axis.axis_font = 0;
- }
-
- setview(0,0,s.x_res-1,s.y_res-1);
- gg.graph_type = STACK_BAR_GRAPH; gg.bar_type = VERT_BARS;
- gg.stack_bars = 3;
- if (s.avail_colors == 2){
- colors[0] = 5; colors[1] = 1; colors[2] = 6;
- }
- else{
- colors[0] = color[4]; colors[1] = color[15]; colors[2] = color[1];
- }
- gg.stack_colors = colors;
- numpts = 12;
- gg.series_bars = 1; gg.num_series = 0;
- gg.bar_mid_width = -1;
- x_axis.num_grids = 11; y_axis.num_grids = 11;
- x_axis.num_ticks = 11; y_axis.num_ticks = 11;
- x_axis.low = 0; x_axis.high = numpts;
- y_axis.low = 0; y_axis.high = 110;
- gg.frame_type = FULL_FRAME;
- strcpy(x_descrip_label,"Months For 1989");
- strcpy(y_descrip_label,"Gross Profits");
- gg.item_color = color[2];
- eg_graph(numpts,stack,WHOLE_GRAPH,gg,x_axis,y_axis);
- eg_rectangle(0,0,s.x_res-1,s.y_res-1,1,0,-1);
- i = esgetkey(&k);
- if (k == 112){
- i = scrndump(printer,direc,size,margin,vertspac,ffeed,copies,prtcolors);
- printf("Scrndump return code = %d\n",i);
- getch();
- }
- }
-
-
-
- eg_window(horz_pad,wait,font,startx,starty,lines,str,forg,back,center)
- int horz_pad; /* number of characters to pad window */
- int wait; /* 0 - no keystroke wait, 1 - wait for keystroke */
- char *font; /* font to load */
- int startx,starty; /* starting locs */
- int lines; /* number of text lines */
- char *str[]; /* text strings */
- int forg,back; /* colors */
- int center; /* 1 - center box, 0 - no center */
- {
-
- int i,j,border,l,size;
- int w_height,w_width,largest;
- int c,h,ch,lf,vsize,hsize,baseline;
- struct egstatus s;
-
- worldon(0);
- clipoff();
- eg_status(&s);
-
- font_load(7,font);
- font_info(7,&c,&h,&ch,&lf,&vsize,&hsize,&baseline);
-
- largest = 0;
- for (i = 0; i < lines; i++){
- size = fontpixn(7,str[i],0,strlen(str[i]));
- if (size > largest)
- largest = size;
- }
-
- w_width = largest+(hsize*horz_pad);
- w_height = vsize*(lines+2);
-
- if (center){
- startx = (s.x_res - w_width)/2;
- starty = (s.y_res - w_height)/2;
- }
-
- border = 5;
- eg_rectangle(startx,starty,startx+w_width+border,starty+w_height+border,back,1,-1);
-
- for (i = 0; i < border; i++,starty++,startx++,border--)
- eg_rectangle(startx,starty,startx+w_width+1+border-i,
- starty+w_height+border-i,forg,0,-1);
-
- for (i = 0,j = 1; i < lines; i++,j++){
- size = fontpixn(7,str[i],0,strlen(str[i]));
- fhatsay(7,str[i],forg,startx+(w_width-size)/2,starty+j*vsize+vsize/2);
- }
- if (wait)
- esgetkey(&i);
- font_unload(7);
- }
-