11 PLDLLIMPEXP_DRIVER const char* plD_DEVICE_INFO_impress =
"imp:Impress File:0:impress:37:imp\n";
18 void plD_line_imp(
PLStream *,
short,
short,
short,
short );
34 #define BUFFLENG 2 * BUFFPTS
38 #define SET_HV_SYSTEM 0315
41 #define SET_ABS_H 0207
42 #define SET_ABS_V 0211
50 #define CREATE_PATH 0346
51 #define DRAW_PATH 0352
56 static int penchange = 0, penwidth = 1;
61 #ifndef ENABLE_DYNDRIVERS
112 LineBuff = (
int *) malloc( BUFFLENG *
sizeof (
int ) );
113 if ( LineBuff == NULL )
115 plexit(
"Error in memory alloc in plD_init_imp()." );
117 fprintf( pls->
OutFile,
"@Document(Language ImPress, jobheader off)" );
118 fprintf( pls->
OutFile,
"%c%c", SET_HV_SYSTEM, OPBYTE1 );
119 fprintf( pls->
OutFile,
"%c%c%c", SET_ABS_H, OPWORDH1, OPWORDH2 );
120 fprintf( pls->
OutFile,
"%c%c%c", SET_ABS_V, OPWORDV1, OPWORDV2 );
121 fprintf( pls->
OutFile,
"%c%c", SET_HV_SYSTEM, OPBYTE2 );
131 plD_line_imp(
PLStream *pls,
short x1a,
short y1a,
short x2a,
short y2a )
134 int x1 = x1a, y1 = y1a, x2 = x2a, y2 = y2a;
140 fprintf( pls->
OutFile,
"%c%c", SET_PEN, (
char) penwidth );
148 *( LineBuff +
count++ ) = x1;
149 *( LineBuff +
count++ ) = y1;
150 *( LineBuff +
count++ ) = x2;
151 *( LineBuff +
count++ ) = y2;
153 else if ( (
count + 2 ) < BUFFLENG && x1 == dev->
xold && y1 == dev->
yold )
157 *( LineBuff +
count++ ) = x2;
158 *( LineBuff +
count++ ) = y2;
165 fprintf( pls->
OutFile,
"%c%c%c", CREATE_PATH, (
char)
count / 256, (
char)
count % 256 );
166 fwrite( (
char *) LineBuff,
sizeof (
int ), 2 *
count, pls->
OutFile );
167 fprintf( pls->
OutFile,
"%c%c", DRAW_PATH, OPTYPE );
173 fprintf( pls->
OutFile,
"%c%c", SET_PEN, (
char) penwidth );
177 *( LineBuff +
count++ ) = x1;
178 *( LineBuff +
count++ ) = y1;
179 *( LineBuff +
count++ ) = x2;
180 *( LineBuff +
count++ ) = y2;
193 plD_polyline_imp(
PLStream *pls,
short *xa,
short *ya,
PLINT npts )
197 for ( i = 0; i < npts - 1; i++ )
198 plD_line_imp( pls, xa[i], ya[i], xa[i + 1], ya[i + 1] );
211 fprintf( pls->
OutFile,
"%c", ENDPAGE );
244 free( (
void *) LineBuff );
262 penwidth = pls->
width;
296 fprintf( pls->
OutFile,
"%c%c%c", CREATE_PATH, (
char)
count / 256, (
char)
count % 256 );
297 fwrite( (
char *) LineBuff,
sizeof (
int ), 2 *
count, pls->
OutFile );
298 fprintf( pls->
OutFile,
"%c%c", DRAW_PATH, OPTYPE );