/* vt100_plot.c really old C code */ #include "vt100_plot.h" #include #include static char PAGE[23][79]; /* offset +11, +39 */ void INITIALIZE() { int I,J; for(I=0; I<23; I++) { for(J=0; J<79; J++) { PAGE[I][J] = ' ' ; } } } void DRAW_CIRCLE ( float X, float Y, float R ) { int ROW, COL ; float T ; T = 0.0 ; while( T < 6.2832) { COL = (int)( X + sin(T) * R +0.5) ; ROW = (int)( Y + cos(T) * R +0.5) ; PAGE[ROW+11][COL+39] = '*' ; T = T + 0.03 ; } } void DRAW_ELIPSE ( float X, float Y, float XR, float YR ) { int ROW, COL ; float T ; T = 0.0 ; while( T < 6.2832) { COL = (int)( X + sin(T) * XR +0.5) ; ROW = (int)( Y + cos(T) * YR +0.5) ; PAGE[ROW+11][COL+39] = '*' ; T = T + 0.03 ; } } void DRAW_RECTANGLE ( float X, float Y, float W, float H ) { int ROW, COL ; float T ; T = 0.0; while( T < W ) { COL = (int)(X - W/2.0 + T +0.5); ROW = (int)(Y + H/2.0 +0.5); PAGE[ROW+11][COL+39] = '*' ; COL = (int)(X - W/2.0 + T +0.5); ROW = (int)(Y - H/2.0 +0.5); PAGE[ROW+11][COL+39] = '*' ; T = T + 0.2 ; } T = 0.0; while( T < H ) { COL = (int)(X + W/2.0 +0.5); ROW = (int)(Y - H/2.0 + T +0.5); PAGE[ROW+11][COL+39] = '*' ; COL = (int)(X - W/2.0 +0.5); ROW = (int)(Y - H/2.0 + T +0.5); PAGE[ROW+11][COL+39] = '*' ; T = T + 0.2 ; } } void DRAW_LINE ( float X1, float Y1, float X2, float Y2 ) { int ROW, COL ; float T ; if(X1 != X2) { T = X1; while( T < X2) { COL = (int)(T +0.5); ROW = (int)(Y1 + (T-X1)*((Y2-Y1)/(X2-X1))+0.5); PAGE[ROW+11][COL+39] = '*' ; T = T + 0.2 ; } } else { T = Y1; while( T < Y2) { ROW = (int)(T +0.5); COL = (int)(X1 + (T-Y1)*((X2-X1)/(Y2-Y1))+0.5); PAGE[ROW+11][COL+39] = '*' ; T = T + 0.2 ; } } } void WRITE_TEXT ( float X, float Y, char *TEXT ) { int ROW, COL ; int I ; ROW = (int)(Y +0.5) ; COL = (int)(X +0.5) ; for(I=0; TEXT[I]!=0; I++) { PAGE[ROW+11][COL+39+I] = TEXT[I]; } } void PRINT() { int I, J ; for(I=22; I>=0; I--) { for(J=0; J<79; J++) { printf("%c", PAGE[I][J]) ; } printf("\n"); } }