72 lines
1.4 KiB
C
72 lines
1.4 KiB
C
/*
|
|
* Copyright (c) 1980 Regents of the University of California.
|
|
* All rights reserved. The Berkeley software License Agreement
|
|
* specifies the terms and conditions for redistribution.
|
|
*/
|
|
|
|
#ifndef lint
|
|
static char sccsid[] = "@(#)linemod.c 1.1 94/10/31 SMI"; /* from UCB 5.1 5/7/85 */
|
|
#endif not lint
|
|
|
|
#include "gigi.h"
|
|
|
|
linemod( line )
|
|
char *line;
|
|
{
|
|
/*
|
|
* Note that the bit patterns could be compacted using the
|
|
* repeat field conventions. They aren't for clarity.
|
|
* Examples of almost identical packed patterns are in the
|
|
* comments.
|
|
* If linemod is changed really often, a ~15% savings
|
|
* could be achieved.
|
|
*/
|
|
if ( *(line) == 's' ) {
|
|
if ( *(++line) == 'o' ) {
|
|
/*
|
|
* solid mode 1
|
|
*/
|
|
printf( "W(P1)" );
|
|
return;
|
|
}
|
|
else if ( *(line) == 'h' ) {
|
|
/*
|
|
* shortdashed mode 4
|
|
* printf( "W(P000111)" );
|
|
*/
|
|
printf( "W(P00011100)" );
|
|
return;
|
|
}
|
|
}
|
|
else if ( *(line) == 'd' ) {
|
|
if ( *(++line) == 'o' && *(++line) == 't' ) {
|
|
if ( *(++line) == 't' ) {
|
|
/*
|
|
* dotted mode 2
|
|
* printf( "W(P00001)" );
|
|
*/
|
|
printf( "W(P10000000)" );
|
|
return;
|
|
}
|
|
else if ( *(line) == 'd' ) {
|
|
/*
|
|
* dotdashed mode 3
|
|
* printf( "W(P0110010)" );
|
|
*/
|
|
printf( "W(P10001100)" );
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
else if ( *(line) == 'l' ) {
|
|
/*
|
|
* longdashed mode 5
|
|
* printf( "W(P11100)" );
|
|
*/
|
|
printf( "W(P11111100)" );
|
|
return;
|
|
}
|
|
printf( "W(P1)" ); /* default to solid */
|
|
return;
|
|
}
|