home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
PIXELD.ZIP
/
HPCOS2.C
< prev
next >
Wrap
C/C++ Source or Header
|
1989-09-22
|
2KB
|
74 lines
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <string.h>
#define INCL_BASE
#define INCL_NOPM
#include <os2.h>
#include "pixeldll.h"
#define IN_ARG 1
#define PLOT_ARG 2
main (int argc, char *argv [])
{
float pi = (float) 3.14159;
float a,h,b,r,x0,y0,x,y,ang;
int new_color;
int bk_color;
int file_counter;
if (argc != 3)
{
printf ("\nUSAGE : HPCOS2 <graphfile> <# of graphs>\n");
exit (0);
}
for (file_counter = 0; file_counter < atoi (argv [PLOT_ARG]); file_counter++)
{
printf ("\ncircle ratio (>=1): ");
scanf ("%f",&r);
printf ("\npen position > 1): ");
scanf ("%f",&h);
printf("\ncolor for graph? : ");
scanf("%d", &new_color);
printf("\ncolor for bkgrnd? <works on 1st graph only> : ");
scanf("%d", &bk_color);
CliOpenVGA ();
if (file_counter)
{
if (!PgrRestoreScreenVGA (argv [IN_ARG]))
{
CliCloseVGA ();
printf ("\nCould not restore screen from %s\n", argv [IN_ARG]);
exit (0);
}
}
else
{
PgrClrScrVGA (bk_color);
}
x0 = (float) (640/2 - 1);
y0 = (float) (480/2 - 1);
a = (float) 0.5*r*480/(r+h-1);
b = a/r;
h *= b;
ang = (float) 0;
while (!kbhit())
{
ang = ang + 2*pi/250;
x = x0+(a-b)*cos(ang)+h*cos(ang*(a-b)/b);
y = y0-(a-b)*sin(ang)+h*sin(ang*(a-b)/b);
PgrGraph (_PIXEL, (SHORT) x, (SHORT) y, new_color);
}
PgrSaveScreenVGA (argv [IN_ARG]);
DosBeep (260, 30);
CliCloseVGA ();
}
return (TRUE);
}
/****************************************************************************/