Category : Files from Magazines
Archive   : CUJ9301.ZIP
Filename : 1101029A

 
Output of file : 1101029A contained in archive : CUJ9301.ZIP
#include

#define PENUP() pen_up=1
#define PENDOWN() pen_up=0
#define SETCOLOR(x) color=x
#define SETWIDTH(x) width=x
#define BLACK 0
#define RED 1
#define GREEN 2
#define BLUE 3
#define FAT 0
#define MEDIUM 1
#define THIN 2

#define TRUE 1
#define FALSE 0

int pen_up;
int color;
int width;
int x1, x2, y1, y2;
int gotx1, gotx2, goty1, goty2;

/* Function Draw - demonstrates use of the Simple Drawing Language
Does not actually draw lines, simple parses the first parameter and
prints commands on screen */

Draw (char *str, int val)
{
int *pval=&val; //points to optional parameters
//restore defaults
gotx1=goty1=gotx2=goty2=FALSE;
x1=x2=y1=y2=0;
pen_up=1;
color = BLACK;
width=MEDIUM;
//loop to parse the command string
while (TRUE)
{
switch (*str++)
{
case 'p': PENUP(); break; //pick pen up
case 'P': PENDOWN(); break; //put pen down
case 'c': //set color
switch (*str++)
{
case 'R': SETCOLOR(RED); printf ("Color set to red\n");break;
case 'G': SETCOLOR(GREEN); printf ("Color set to green\n");break;
case 'B': SETCOLOR(BLUE); printf ("Color set to blue\n");break;
case 'b': SETCOLOR(BLACK); printf ("Color set to black\n");break;
default: return -1;
} //End switch (on character)
break;
case 'w': //set width
switch (*str++)
{
case 'T': SETWIDTH(THIN); printf ("Width set to thin\n");break;
case 'M': SETWIDTH(MEDIUM); printf ("Width set to medium\n");break;
case 'F': SETWIDTH(FAT); printf ("Width set to fat\n");break;
default: return -1;
} //End switch (on character)
break;
case '%': //get next optional parameter
switch (*str++)
{
case 'x': //set x coordinate
if (gotx2) {x1=x2; x2=*pval++; break;}
if (!gotx1) {x1=*pval++; gotx1=TRUE; break;}
if (!gotx2) {x2=*pval++; gotx2=TRUE; break;}
break;
case 'y': //set y coordinate
if (goty2) {y1=y2; y2=*pval++; break;}
if (!goty1) {y1=*pval++; goty1=TRUE; break;}
if (!goty2) {y2=*pval++; goty2=TRUE; break;}
break;
default: return -1;
} //End switch (token)
//do we have enough info to draw the line?
if (gotx2 && goty2 && !pen_up)
{
printf ("Drawing line <%d,%d>-<%d,%d>\n", x1,y1,x2,y2);
x1 = x2;
y1 = y2;
goty2 = FALSE;
gotx2 = FALSE;
} //end if (got both coordinates - draw line)
break;
case '\0': //end of command string
return 0;
default: return -1;
} //End switch (on character)
} //End while (TRUE)
return 0;
} //End function (Draw)
WRAP_EOF


  3 Responses to “Category : Files from Magazines
Archive   : CUJ9301.ZIP
Filename : 1101029A

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/