home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / vol_300 / 344_02 / windows.c < prev    next >
Text File  |  1979-12-31  |  8KB  |  351 lines

  1. #include "graphics.h"
  2. #include "conio.h"
  3. #include "stdio.h"
  4. #include "stdlib.h"
  5. #include "time.h"
  6. #include "math.h"
  7. #include "string.h"
  8.  
  9.  
  10. unsigned size;
  11. float z1, a1, a2, a3;
  12. int driver = DETECT, mode;
  13. int b, c, x, y, x1, y1, x2, y2, x3, y3, r1, r2, r3, windows[6][5];
  14. char k, *wintext[6][11], *head[5];
  15. void *window_1, *st_window_1, *window_2, *st_window_2;
  16. void *window_3, *st_window_3, *window_4, *st_window_4;
  17. void *window_5, *st_window_5, *inv_head, *inv_text, *clear_screen;
  18.  
  19.  
  20. int fnpx(int c)
  21. {
  22.   int pixels;
  23.  
  24.   pixels = (c - 1) * 8 + 1;
  25.   return(pixels);
  26. }
  27.  
  28.  
  29. void calculations()
  30. {
  31.   x1 = fnpx(windows[x][1]) - 3;
  32.   y1 = fnpx(windows[x][2]) - 3;
  33.   x2 = fnpx(windows[x][1] + windows[x][3] - 1) + 7;
  34.   y2 = fnpx(windows[x][2] + windows[x][4] - 1) + 7;
  35.   x3 = fnpx(windows[x][1] + windows[x][3] - 1) + 5;
  36.   y3 = fnpx(windows[x][2]) + 5;
  37. }
  38.  
  39.  
  40. void initialization_routine()
  41. {
  42.   gotoxy(1,22);
  43.   printf("%s","INITIALIZING...");
  44.  
  45.   head[1] = "ITEM";
  46.   windows[1][1] = 5;
  47.   windows[1][2] = 3;
  48.   windows[1][3] = 11;
  49.   windows[1][4] = 3;
  50.   wintext[1][1] = "ORDER ENTRY";
  51.   wintext[1][2] = "INVENTORY";
  52.   wintext[1][3] = "PAYROLL";
  53.  
  54.   head[2] = "CASH";
  55.   windows[2][1] = 10;
  56.   windows[2][2] = 3;
  57.   windows[2][3] = 19;
  58.   windows[2][4] = 4;
  59.   wintext[2][1] = "ACCOUNTS PAYABLE";
  60.   wintext[2][2] = "ACCOUNTS RECEIVABLE";
  61.   wintext[2][3] = "GENERAL LEDGER";
  62.   wintext[2][4] = "SYSTEM SECURITY";
  63.  
  64.   head[3] = "PROG";
  65.   windows[3][1] = 15;
  66.   windows[3][2] = 3;
  67.   windows[3][3] = 10;
  68.   windows[3][4] = 10;
  69.   wintext[3][1] = " PROGRAM 1";
  70.   wintext[3][2] = "*PROGRAM 2";
  71.   wintext[3][3] = " PROGRAM 3";
  72.   wintext[3][4] = " PROGRAM 4";
  73.   wintext[3][5] = "*PROGRAM 5";
  74.   wintext[3][6] = "*PROGRAM 6";
  75.   wintext[3][7] = " PROGRAM 7";
  76.   wintext[3][8] = " PROGRAM 8";
  77.   wintext[3][9] = " PROGRAM 9";
  78.   wintext[3][10] = " PROGRAM A";
  79.  
  80.   head[4] = "EXIT";
  81.   windows[4][1] = 20;
  82.   windows[4][2] = 3;
  83.   windows[4][3] = 4;
  84.   windows[4][4] = 2;
  85.   wintext[4][1] = "REDO";
  86.   wintext[4][2] = "EXIT";
  87.  
  88.   head[5] = "PAGE";
  89.   windows[5][1] = 25;
  90.   windows[5][2] = 3;
  91.   windows[5][3] = 10;
  92.   windows[5][4] = 8;
  93.   wintext[5][1] = "SET UP";
  94.   wintext[5][2] = "OPEN PAGE";
  95.   wintext[5][3] = "CLOSE PAGE";
  96.   wintext[5][4] = "PRINT PAGE";
  97.   wintext[5][5] = "SAVE PAGE";
  98.   wintext[5][6] = "MOVE PAGE";
  99.   wintext[5][7] = "EDIT PAGE";
  100.   wintext[5][8] = "PURGE PAGE";
  101.  
  102.   for (x = 1; x <= 5; x++) {
  103.     setgraphmode(CGAC3);
  104.     calculations();
  105.     setcolor(15);
  106.     rectangle(x1, y1, x2, y2);
  107.     for (y = 1; y <= windows[x][4]; y++) {
  108.       gotoxy(windows[x][1], windows[x][2] + y - 1);
  109.       printf("%s",wintext[x][y]);
  110.       if (y == windows[x][4])
  111.     break;
  112.     }
  113.     switch(x) {
  114.       case 1 :
  115.     size = imagesize(x1, y1, x2, y2);
  116.     window_1 = malloc(size);
  117.     getimage(x1, y1, x2, y2, window_1);
  118.         break;
  119.       case 2 :
  120.     size = imagesize(x1, y1, x2, y2);
  121.     window_2 = malloc(size);
  122.     getimage(x1, y1, x2, y2, window_2);
  123.     break;
  124.       case 3 :
  125.     size = imagesize(x1, y1, x2, y2);
  126.     window_3 = malloc(size);
  127.     getimage(x1, y1, x2, y2, window_3);
  128.     break;
  129.       case 4 :
  130.     size = imagesize(x1, y1, x2, y2);
  131.     window_4 = malloc(size);
  132.     getimage(x1, y1, x2, y2, window_4);
  133.     break;
  134.       case 5 :
  135.     size = imagesize(x1, y1, x2, y2);
  136.     window_5 = malloc(size);
  137.     getimage(x1, y1, x2, y2, window_5);
  138.     break;
  139.     }
  140.   }
  141.   setgraphmode(CGAC3);
  142.   setfillstyle(SOLID_FILL, 15);
  143.   setcolor(15);
  144.   rectangle(100, 100, 150, 120);
  145.   floodfill(102, 102, 15);
  146.   size = imagesize(100, 100, 133, 107);
  147.   inv_head = malloc(size);
  148.   getimage(100, 100, 133, 107, inv_head);
  149. }
  150.  
  151.  
  152. void get_graphics_under_a_window()
  153. {
  154.   calculations();
  155.   switch(x) {
  156.     case 1 :
  157.       size = imagesize(x1, y1, x2, y2);
  158.       st_window_1 = malloc(size);
  159.       getimage(x1, y1, x2, y2, st_window_1);
  160.       break;
  161.     case 2 :
  162.       size = imagesize(x1, y1, x2, y2);
  163.       st_window_2 = malloc(size);
  164.       getimage(x1, y1, x2, y2, st_window_2);
  165.       break;
  166.     case 3 :
  167.       size = imagesize(x1, y1, x2, y2);
  168.       st_window_3 = malloc(size);
  169.       getimage(x1, y1, x2, y2, st_window_3);
  170.       break;
  171.     case 4 :
  172.       size = imagesize(x1, y1, x2, y2);
  173.       st_window_4 = malloc(size);
  174.       getimage(x1, y1, x2, y2, st_window_4);
  175.       break;
  176.     case 5 :
  177.       size = imagesize(x1, y1, x2, y2);
  178.       st_window_5 = malloc(size);
  179.       getimage(x1, y1, x2, y2, st_window_5);
  180.       break;
  181.   }
  182.   for (b = y1; b <= y3; b++) {
  183.     setcolor(0);
  184.     line (x1, b, x3, b);
  185.   }
  186.   free(inv_text);
  187.   setcolor(15);
  188.   setfillstyle(SOLID_FILL,15);
  189.   rectangle(x1, y1, x2, y2);
  190.   rectangle(x1, y1, x3, y3);
  191.   floodfill(x1 + 2, y1 + 2, 15);
  192.   size = imagesize(x1, y1, x3, y3);
  193.   inv_text = malloc(size);
  194.   getimage(x1, y1, x3, y3, inv_text);
  195. }
  196.  
  197.  
  198. void put_menu_window_on_the_screen()
  199. {
  200.   calculations();
  201.   switch(x) {
  202.     case 1 :
  203.       putimage(x1, y1, window_1, COPY_PUT);
  204.       break;
  205.     case 2 :
  206.       putimage(x1, y1, window_2, COPY_PUT);
  207.       break;
  208.     case 3 :
  209.       putimage(x1, y1, window_3, COPY_PUT);
  210.       break;
  211.     case 4 :
  212.       putimage(x1, y1, window_4, COPY_PUT);
  213.       break;
  214.     case 5 :
  215.       putimage(x1, y1, window_5, COPY_PUT);
  216.       break;
  217.   }
  218. }
  219.  
  220.  
  221. void put_graphics_back_on_screen()
  222. {
  223.   calculations();
  224.   switch(x) {
  225.     case 1 :
  226.       putimage(x1, y1, st_window_1, COPY_PUT);
  227.       free(st_window_1);
  228.       break;
  229.     case 2 :
  230.       putimage(x1, y1, st_window_2, COPY_PUT);
  231.       free(st_window_2);
  232.       break;
  233.     case 3 :
  234.       putimage(x1, y1, st_window_3, COPY_PUT);
  235.       free(st_window_3);
  236.       break;
  237.     case 4 :
  238.       putimage(x1, y1, st_window_4, COPY_PUT);
  239.       free(st_window_4);
  240.       break;
  241.     case 5 :
  242.       putimage(x1, y1, st_window_5, COPY_PUT);
  243.       free(st_window_5);
  244.       break;
  245.   }
  246. }
  247.  
  248.  
  249. void inverse_character_routine_i()
  250. {
  251.   int icr1, icr2;
  252.  
  253.   icr1 = fnpx(windows[x][1]) - 2;
  254.   icr2 = fnpx(windows[x][2]) - 2 + (y - 1) * 8;
  255.   putimage (icr1, icr2, inv_text, XOR_PUT);
  256. }
  257.  
  258.  
  259. void inverse_character_routine_ii()
  260. {
  261.   putimage(fnpx(windows[x][1]) - 2, 0, inv_head, XOR_PUT);
  262. }
  263.  
  264.  
  265. main()
  266. {
  267.   initgraph(&driver, &mode, "");
  268.   setgraphmode(CGAC3);
  269.   setcolor(15);
  270.   randomize();
  271.   initialization_routine();
  272. begin:
  273.   randomize();
  274.   setgraphmode(CGAC3);
  275.   for (x = 1; x <= 5; x++) {
  276.     gotoxy(x * 5, 1);
  277.     printf("%s",head[x]);
  278.   }
  279.   r1 = random(20) + 5;
  280.   r2 = random(20) + 5;
  281.   r3 = random(30) + 10;
  282.   for (z1 = 12; z1 <= 199; z1+=.5) {
  283.     a1 = 160 + sin(z1 / r1) * 100;
  284.     a2 = abs(cos(z1 / r3)) * 639;
  285.     a3 = sin(z1 / r2) * 80 + 100;
  286.     line (a1, z1, a2, a3);
  287.   }
  288.   x = 1;
  289.   inverse_character_routine_ii();
  290.   get_graphics_under_a_window();
  291.   put_menu_window_on_the_screen();
  292.   y = 1;
  293.   inverse_character_routine_i();
  294.   do {
  295.     k = getch();
  296.     gotoxy(1,1);
  297.     switch(k) {
  298.       case '\r' :
  299.     if (x == 4)
  300.       if (y == 1)
  301.         goto begin;
  302.       else
  303.         exit(1);
  304.       case '\x1B' :
  305.     closegraph();
  306.     clrscr();
  307.     gotoxy(30,11);
  308.     printf("%s","THAT'S ALL FOLKS....");
  309.     exit(1);
  310.       case '\x48' :
  311.     inverse_character_routine_i();
  312.     y-=1;
  313.         if (y < 1)
  314.       y = windows[x][4];
  315.     inverse_character_routine_i();
  316.     break;
  317.       case '\x50' :
  318.     inverse_character_routine_i();
  319.     y+=1;
  320.     if (y > windows[x][4])
  321.       y = 1;
  322.     inverse_character_routine_i();
  323.     break;
  324.       case '\x4D' :
  325.     put_graphics_back_on_screen();
  326.     inverse_character_routine_ii();
  327.     x+=1;
  328.     if (x > 5)
  329.       x = 1;
  330.     inverse_character_routine_ii();
  331.     get_graphics_under_a_window();
  332.     put_menu_window_on_the_screen();
  333.     y = 1;
  334.     inverse_character_routine_i();
  335.     break;
  336.       case '\x4B' :
  337.     put_graphics_back_on_screen();
  338.     inverse_character_routine_ii();
  339.     x-=1;
  340.     if (x < 1)
  341.       x = 5;
  342.     inverse_character_routine_ii();
  343.     get_graphics_under_a_window();
  344.     put_menu_window_on_the_screen();
  345.     y = 1;
  346.     inverse_character_routine_i();
  347.     break;
  348.     }
  349.   } while (k != 'n');
  350.   closegraph();
  351. }