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 >
Wrap
Text File
|
1979-12-31
|
8KB
|
351 lines
#include "graphics.h"
#include "conio.h"
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
#include "math.h"
#include "string.h"
unsigned size;
float z1, a1, a2, a3;
int driver = DETECT, mode;
int b, c, x, y, x1, y1, x2, y2, x3, y3, r1, r2, r3, windows[6][5];
char k, *wintext[6][11], *head[5];
void *window_1, *st_window_1, *window_2, *st_window_2;
void *window_3, *st_window_3, *window_4, *st_window_4;
void *window_5, *st_window_5, *inv_head, *inv_text, *clear_screen;
int fnpx(int c)
{
int pixels;
pixels = (c - 1) * 8 + 1;
return(pixels);
}
void calculations()
{
x1 = fnpx(windows[x][1]) - 3;
y1 = fnpx(windows[x][2]) - 3;
x2 = fnpx(windows[x][1] + windows[x][3] - 1) + 7;
y2 = fnpx(windows[x][2] + windows[x][4] - 1) + 7;
x3 = fnpx(windows[x][1] + windows[x][3] - 1) + 5;
y3 = fnpx(windows[x][2]) + 5;
}
void initialization_routine()
{
gotoxy(1,22);
printf("%s","INITIALIZING...");
head[1] = "ITEM";
windows[1][1] = 5;
windows[1][2] = 3;
windows[1][3] = 11;
windows[1][4] = 3;
wintext[1][1] = "ORDER ENTRY";
wintext[1][2] = "INVENTORY";
wintext[1][3] = "PAYROLL";
head[2] = "CASH";
windows[2][1] = 10;
windows[2][2] = 3;
windows[2][3] = 19;
windows[2][4] = 4;
wintext[2][1] = "ACCOUNTS PAYABLE";
wintext[2][2] = "ACCOUNTS RECEIVABLE";
wintext[2][3] = "GENERAL LEDGER";
wintext[2][4] = "SYSTEM SECURITY";
head[3] = "PROG";
windows[3][1] = 15;
windows[3][2] = 3;
windows[3][3] = 10;
windows[3][4] = 10;
wintext[3][1] = " PROGRAM 1";
wintext[3][2] = "*PROGRAM 2";
wintext[3][3] = " PROGRAM 3";
wintext[3][4] = " PROGRAM 4";
wintext[3][5] = "*PROGRAM 5";
wintext[3][6] = "*PROGRAM 6";
wintext[3][7] = " PROGRAM 7";
wintext[3][8] = " PROGRAM 8";
wintext[3][9] = " PROGRAM 9";
wintext[3][10] = " PROGRAM A";
head[4] = "EXIT";
windows[4][1] = 20;
windows[4][2] = 3;
windows[4][3] = 4;
windows[4][4] = 2;
wintext[4][1] = "REDO";
wintext[4][2] = "EXIT";
head[5] = "PAGE";
windows[5][1] = 25;
windows[5][2] = 3;
windows[5][3] = 10;
windows[5][4] = 8;
wintext[5][1] = "SET UP";
wintext[5][2] = "OPEN PAGE";
wintext[5][3] = "CLOSE PAGE";
wintext[5][4] = "PRINT PAGE";
wintext[5][5] = "SAVE PAGE";
wintext[5][6] = "MOVE PAGE";
wintext[5][7] = "EDIT PAGE";
wintext[5][8] = "PURGE PAGE";
for (x = 1; x <= 5; x++) {
setgraphmode(CGAC3);
calculations();
setcolor(15);
rectangle(x1, y1, x2, y2);
for (y = 1; y <= windows[x][4]; y++) {
gotoxy(windows[x][1], windows[x][2] + y - 1);
printf("%s",wintext[x][y]);
if (y == windows[x][4])
break;
}
switch(x) {
case 1 :
size = imagesize(x1, y1, x2, y2);
window_1 = malloc(size);
getimage(x1, y1, x2, y2, window_1);
break;
case 2 :
size = imagesize(x1, y1, x2, y2);
window_2 = malloc(size);
getimage(x1, y1, x2, y2, window_2);
break;
case 3 :
size = imagesize(x1, y1, x2, y2);
window_3 = malloc(size);
getimage(x1, y1, x2, y2, window_3);
break;
case 4 :
size = imagesize(x1, y1, x2, y2);
window_4 = malloc(size);
getimage(x1, y1, x2, y2, window_4);
break;
case 5 :
size = imagesize(x1, y1, x2, y2);
window_5 = malloc(size);
getimage(x1, y1, x2, y2, window_5);
break;
}
}
setgraphmode(CGAC3);
setfillstyle(SOLID_FILL, 15);
setcolor(15);
rectangle(100, 100, 150, 120);
floodfill(102, 102, 15);
size = imagesize(100, 100, 133, 107);
inv_head = malloc(size);
getimage(100, 100, 133, 107, inv_head);
}
void get_graphics_under_a_window()
{
calculations();
switch(x) {
case 1 :
size = imagesize(x1, y1, x2, y2);
st_window_1 = malloc(size);
getimage(x1, y1, x2, y2, st_window_1);
break;
case 2 :
size = imagesize(x1, y1, x2, y2);
st_window_2 = malloc(size);
getimage(x1, y1, x2, y2, st_window_2);
break;
case 3 :
size = imagesize(x1, y1, x2, y2);
st_window_3 = malloc(size);
getimage(x1, y1, x2, y2, st_window_3);
break;
case 4 :
size = imagesize(x1, y1, x2, y2);
st_window_4 = malloc(size);
getimage(x1, y1, x2, y2, st_window_4);
break;
case 5 :
size = imagesize(x1, y1, x2, y2);
st_window_5 = malloc(size);
getimage(x1, y1, x2, y2, st_window_5);
break;
}
for (b = y1; b <= y3; b++) {
setcolor(0);
line (x1, b, x3, b);
}
free(inv_text);
setcolor(15);
setfillstyle(SOLID_FILL,15);
rectangle(x1, y1, x2, y2);
rectangle(x1, y1, x3, y3);
floodfill(x1 + 2, y1 + 2, 15);
size = imagesize(x1, y1, x3, y3);
inv_text = malloc(size);
getimage(x1, y1, x3, y3, inv_text);
}
void put_menu_window_on_the_screen()
{
calculations();
switch(x) {
case 1 :
putimage(x1, y1, window_1, COPY_PUT);
break;
case 2 :
putimage(x1, y1, window_2, COPY_PUT);
break;
case 3 :
putimage(x1, y1, window_3, COPY_PUT);
break;
case 4 :
putimage(x1, y1, window_4, COPY_PUT);
break;
case 5 :
putimage(x1, y1, window_5, COPY_PUT);
break;
}
}
void put_graphics_back_on_screen()
{
calculations();
switch(x) {
case 1 :
putimage(x1, y1, st_window_1, COPY_PUT);
free(st_window_1);
break;
case 2 :
putimage(x1, y1, st_window_2, COPY_PUT);
free(st_window_2);
break;
case 3 :
putimage(x1, y1, st_window_3, COPY_PUT);
free(st_window_3);
break;
case 4 :
putimage(x1, y1, st_window_4, COPY_PUT);
free(st_window_4);
break;
case 5 :
putimage(x1, y1, st_window_5, COPY_PUT);
free(st_window_5);
break;
}
}
void inverse_character_routine_i()
{
int icr1, icr2;
icr1 = fnpx(windows[x][1]) - 2;
icr2 = fnpx(windows[x][2]) - 2 + (y - 1) * 8;
putimage (icr1, icr2, inv_text, XOR_PUT);
}
void inverse_character_routine_ii()
{
putimage(fnpx(windows[x][1]) - 2, 0, inv_head, XOR_PUT);
}
main()
{
initgraph(&driver, &mode, "");
setgraphmode(CGAC3);
setcolor(15);
randomize();
initialization_routine();
begin:
randomize();
setgraphmode(CGAC3);
for (x = 1; x <= 5; x++) {
gotoxy(x * 5, 1);
printf("%s",head[x]);
}
r1 = random(20) + 5;
r2 = random(20) + 5;
r3 = random(30) + 10;
for (z1 = 12; z1 <= 199; z1+=.5) {
a1 = 160 + sin(z1 / r1) * 100;
a2 = abs(cos(z1 / r3)) * 639;
a3 = sin(z1 / r2) * 80 + 100;
line (a1, z1, a2, a3);
}
x = 1;
inverse_character_routine_ii();
get_graphics_under_a_window();
put_menu_window_on_the_screen();
y = 1;
inverse_character_routine_i();
do {
k = getch();
gotoxy(1,1);
switch(k) {
case '\r' :
if (x == 4)
if (y == 1)
goto begin;
else
exit(1);
case '\x1B' :
closegraph();
clrscr();
gotoxy(30,11);
printf("%s","THAT'S ALL FOLKS....");
exit(1);
case '\x48' :
inverse_character_routine_i();
y-=1;
if (y < 1)
y = windows[x][4];
inverse_character_routine_i();
break;
case '\x50' :
inverse_character_routine_i();
y+=1;
if (y > windows[x][4])
y = 1;
inverse_character_routine_i();
break;
case '\x4D' :
put_graphics_back_on_screen();
inverse_character_routine_ii();
x+=1;
if (x > 5)
x = 1;
inverse_character_routine_ii();
get_graphics_under_a_window();
put_menu_window_on_the_screen();
y = 1;
inverse_character_routine_i();
break;
case '\x4B' :
put_graphics_back_on_screen();
inverse_character_routine_ii();
x-=1;
if (x < 1)
x = 5;
inverse_character_routine_ii();
get_graphics_under_a_window();
put_menu_window_on_the_screen();
y = 1;
inverse_character_routine_i();
break;
}
} while (k != 'n');
closegraph();
}