Lines Matching refs:reader

30  * The implementation of the HPGL reader.                              *
46 int hpgs_reader_do_AD (hpgs_reader *reader)
48 while (!reader->eoc)
51 if (hpgs_reader_read_int(reader,&kind)) return -1;
52 if (reader->eoc) return -1;
57 if (hpgs_reader_read_int(reader,&reader->alternate_encoding))
61 if (hpgs_reader_read_int(reader,&reader->alternate_spacing))
65 if (hpgs_reader_read_double(reader,&reader->alternate_pitch))
69 if (hpgs_reader_read_double(reader,&reader->alternate_height))
73 if (hpgs_reader_read_int(reader,&reader->alternate_posture))
77 if (hpgs_reader_read_int(reader,&reader->alternate_weight))
81 if (hpgs_reader_read_int(reader,&reader->alternate_face))
94 int hpgs_reader_do_SD (hpgs_reader *reader)
96 while (!reader->eoc)
99 if (hpgs_reader_read_int(reader,&kind)) return -1;
100 if (reader->eoc) return -1;
105 if (hpgs_reader_read_int(reader,&reader->default_encoding))
109 if (hpgs_reader_read_int(reader,&reader->default_spacing))
113 if (hpgs_reader_read_double(reader,&reader->default_pitch))
117 if (hpgs_reader_read_double(reader,&reader->default_height))
121 if (hpgs_reader_read_int(reader,&reader->default_posture))
125 if (hpgs_reader_read_int(reader,&reader->default_weight))
129 if (hpgs_reader_read_int(reader,&reader->default_face))
142 int hpgs_reader_do_CP (hpgs_reader *reader)
145 double lines=reader->current_text_line ? 1.0 : -1.0;
150 if (hpgs_reader_checkpath(reader)) return -1;
152 if (reader->eoc)
153 reader->current_point = reader->cr_point;
156 if (hpgs_reader_read_double(reader,&spaces)) return -1;
157 if (hpgs_reader_read_double(reader,&lines)) return -1;
161 reader->current_char_size.x ? (1.5 * reader->current_char_size.x) :
162 (72.0 / (reader->alternate_font ?
163 reader->alternate_pitch :
164 reader->default_pitch ));
167 reader->current_char_size.y ? reader->current_char_size.y :
168 (reader->alternate_font ?
169 reader->alternate_height :
170 reader->default_height );
172 ca = cos(reader->current_label_angle);
173 sa = sin(reader->current_label_angle);
175 switch (reader->current_text_path % 4)
178 space_vec.x = ca * (1.0+reader->current_extra_space.x) * w;
179 space_vec.y = sa * (1.0+reader->current_extra_space.x) * w;
180 lf_vec.x = sa * (HPGS_LF_FAC+reader->current_extra_space.y) * h;
181 lf_vec.y = -ca * (HPGS_LF_FAC+reader->current_extra_space.y) * h;
184 space_vec.x = sa * (HPGS_VSPACE_FAC+reader->current_extra_space.y) * h;
185 space_vec.y = -ca * (HPGS_VSPACE_FAC+reader->current_extra_space.y) * h;
186 lf_vec.x = -ca * (HPGS_LF_FAC+reader->current_extra_space.x) * w;
187 lf_vec.y = -sa * (HPGS_LF_FAC+reader->current_extra_space.x) * w;
190 space_vec.x = -ca * (1.0+reader->current_extra_space.x) * w;
191 space_vec.y = -sa * (1.0+reader->current_extra_space.x) * w;
192 lf_vec.x = -sa * (HPGS_LF_FAC+reader->current_extra_space.y) * h;
193 lf_vec.y = ca * (HPGS_LF_FAC+reader->current_extra_space.y) * h;
196 space_vec.x = -sa * (HPGS_VSPACE_FAC+reader->current_extra_space.y) * h;
197 space_vec.y = ca * (HPGS_VSPACE_FAC+reader->current_extra_space.y) * h;
198 lf_vec.x = ca * (HPGS_LF_FAC+reader->current_extra_space.x) * w;
199 lf_vec.y = sa * (HPGS_LF_FAC+reader->current_extra_space.x) * w;
202 if (reader->current_text_line)
205 reader->current_point.x += space_vec.x * spaces;
206 reader->current_point.y += space_vec.y * spaces;
207 reader->current_point.x += lf_vec.x * lines;
208 reader->current_point.y += lf_vec.y * lines;
216 int hpgs_reader_do_DI (hpgs_reader *reader)
221 if (!reader->eoc)
223 if (hpgs_reader_read_double(reader,&run)) return -1;
224 if (hpgs_reader_read_double(reader,&rise)) return -1;
227 reader->current_label_angle = atan2(rise,run);
235 int hpgs_reader_do_DR (hpgs_reader *reader)
240 if (!reader->eoc)
242 if (hpgs_reader_read_double(reader,&run)) return -1;
243 if (hpgs_reader_read_double(reader,&rise)) return -1;
246 run *= (reader->P2.x - reader->P1.x);
247 rise *= (reader->P2.y - reader->P1.y);
249 reader->current_label_angle = atan2(rise,run);
257 int hpgs_reader_do_DV (hpgs_reader *reader)
259 reader->current_text_path = 0;
260 reader->current_text_line = 0;
262 if (!reader->eoc &&
263 hpgs_reader_read_int(reader,&reader->current_text_path)) return -1;
265 if (!reader->eoc &&
266 hpgs_reader_read_int(reader,&reader->current_text_line)) return -1;
274 int hpgs_reader_do_ES (hpgs_reader *reader)
276 reader->current_extra_space.x = 0.0;
277 reader->current_extra_space.y = 0.0;
279 if (!reader->eoc &&
280 hpgs_reader_read_double(reader,&reader->current_extra_space.x)) return -1;
282 if (!reader->eoc &&
283 hpgs_reader_read_double(reader,&reader->current_extra_space.y)) return -1;
291 int hpgs_reader_do_LO (hpgs_reader *reader)
293 reader->current_label_origin = 1;
295 if (!reader->eoc &&
296 hpgs_reader_read_int(reader,&reader->current_label_origin)) return -1;
304 int hpgs_reader_do_SI (hpgs_reader *reader)
306 reader->current_char_size.x = 0.0;
307 reader->current_char_size.y = 0.0;
309 if (reader->eoc) return 0;
311 if (hpgs_reader_read_double(reader,&reader->current_char_size.x)) return -1;
312 if (hpgs_reader_read_double(reader,&reader->current_char_size.y)) return -1;
314 reader->current_char_size.x *= 72.0 / 2.54;
315 reader->current_char_size.y *= 72.0 / 2.54;
323 int hpgs_reader_do_SR (hpgs_reader *reader)
325 reader->current_char_size.x = 0.0;
326 reader->current_char_size.y = 0.0;
328 if (reader->eoc) return 0;
330 if (hpgs_reader_read_double(reader,&reader->current_char_size.x)) return -1;
331 if (hpgs_reader_read_double(reader,&reader->current_char_size.y)) return -1;
333 reader->current_char_size.x *= (reader->P2.x-reader->P1.x) * 0.01 * HP_TO_PT;
334 reader->current_char_size.y *= (reader->P2.y-reader->P1.y) * 0.01 * HP_TO_PT;
342 int hpgs_reader_do_SL (hpgs_reader *reader)
344 reader->current_slant = 0.0;
346 if (!reader->eoc &&
347 hpgs_reader_read_double(reader,&reader->current_slant)) return -1;
355 int hpgs_reader_do_SA (hpgs_reader *reader)
357 reader->alternate_font = 1;
364 int hpgs_reader_do_SS(hpgs_reader *reader)
366 reader->alternate_font = 0;
373 int hpgs_reader_do_DT (hpgs_reader *reader)
375 reader->bytes_ignored = 0;
377 reader->last_byte = hpgs_getc(reader->in);
378 if (reader->last_byte == EOF)
381 if (reader->last_byte == ';')
383 reader->label_term = '\003';
384 reader->label_term_ignore = 1;
385 reader->eoc = 1;
390 reader->label_term = reader->last_byte;
391 reader->last_byte = hpgs_getc(reader->in);
392 if (reader->last_byte == EOF)
396 if (reader->last_byte == ',')
398 reader->label_term_ignore = 0;
400 while (isspace(reader->last_byte = hpgs_getc(reader->in))) ;
402 while (isdigit(reader->last_byte = hpgs_getc(reader->in)))
403 if (reader->last_byte != '0')
404 reader->label_term_ignore = 1;
406 if (reader->last_byte == EOF)
410 reader->label_term_ignore = 1;
412 while (isspace(reader->last_byte)) reader->last_byte = hpgs_getc(reader->in);
414 if (isalpha(reader->last_byte) || reader->last_byte == HPGS_ESC)
415 reader->bytes_ignored = 1;
418 if (reader->last_byte != ';')
421 reader->bytes_ignored = 0;
424 reader->eoc = 1;
431 int hpgs_reader_do_SM (hpgs_reader *reader)
433 reader->bytes_ignored = 0;
435 if (reader->eoc)
438 reader->last_byte = hpgs_getc(reader->in);
439 if (reader->last_byte == EOF)
442 return hpgs_reader_check_param_end(reader);
448 int hpgs_reader_do_LB (hpgs_reader *reader)
461 if (hpgs_reader_read_label_string(reader,str)) return -1;
463 if (hpgs_reader_checkpath(reader)) return -1;
466 reader->current_char_size.x ? (1.5 * reader->current_char_size.x) :
467 (72.0 / (reader->alternate_font ?
468 reader->alternate_pitch :
469 reader->default_pitch ));
472 reader->current_char_size.y ? reader->current_char_size.y :
473 (reader->alternate_font ?
474 reader->alternate_height :
475 reader->default_height );
477 ca = cos(reader->current_label_angle);
478 sa = sin(reader->current_label_angle);
483 up_vec.x = (reader->current_slant * ca - sa) * h;
484 up_vec.y = (reader->current_slant * sa + ca) * h;
486 switch (reader->current_text_path % 4)
489 space_vec.x = ca * (1.0+reader->current_extra_space.x) * w;
490 space_vec.y = sa * (1.0+reader->current_extra_space.x) * w;
491 lf_vec.x = sa * (HPGS_LF_FAC+reader->current_extra_space.y) * h;
492 lf_vec.y = -ca * (HPGS_LF_FAC+reader->current_extra_space.y) * h;
497 space_vec.x = sa * (HPGS_VSPACE_FAC+reader->current_extra_space.y) * h;
498 space_vec.y = -ca * (HPGS_VSPACE_FAC+reader->current_extra_space.y) * h;
499 lf_vec.x = -ca * (HPGS_LF_FAC+reader->current_extra_space.x) * w;
500 lf_vec.y = -sa * (HPGS_LF_FAC+reader->current_extra_space.x) * w;
505 space_vec.x = -ca * (1.0+reader->current_extra_space.x) * w;
506 space_vec.y = -sa * (1.0+reader->current_extra_space.x) * w;
507 lf_vec.x = -sa * (HPGS_LF_FAC+reader->current_extra_space.y) * h;
508 lf_vec.y = ca * (HPGS_LF_FAC+reader->current_extra_space.y) * h;
513 space_vec.x = -sa * (HPGS_VSPACE_FAC+reader->current_extra_space.y) * h;
514 space_vec.y = ca * (HPGS_VSPACE_FAC+reader->current_extra_space.y) * h;
515 lf_vec.x = ca * (HPGS_LF_FAC+reader->current_extra_space.x) * w;
516 lf_vec.y = sa * (HPGS_LF_FAC+reader->current_extra_space.x) * w;
521 if (reader->current_text_line)
527 hpgs_matrix_scale(&left_vec, &reader->page_matrix,&left_vec );
528 hpgs_matrix_scale(&up_vec, &reader->page_matrix,&up_vec );
529 hpgs_matrix_scale(&space_vec,&reader->page_matrix,&space_vec);
530 hpgs_matrix_scale(&lf_vec, &reader->page_matrix,&lf_vec );
531 hpgs_matrix_scale(&adj_vec, &reader->page_matrix,&adj_vec );
540 if (ipos == 0 && reader->current_label_origin % 10 > 1)
557 if (nchars && (reader->current_text_path % 2))
558 nchars -= reader->current_extra_space.y / (1.0 + reader->current_extra_space.y);
560 nchars -= reader->current_extra_space.x / (1.0 + reader->current_extra_space.x);
562 x_adj = -0.5 * nchars * ((reader->current_label_origin % 10 - 1) / 3);
563 y_adj = -0.5 * ((reader->current_label_origin % 10 - 1) % 3);
565 if (reader->current_label_origin / 10)
567 x_adj -= 0.25 * ((reader->current_label_origin % 10 - 1) / 3 - 1);
568 y_adj -= 0.25 * ((reader->current_label_origin % 10 - 1) % 3 - 1);
576 switch (reader->current_text_path % 4)
595 reader->current_point.x += adj.x;
596 reader->current_point.y += adj.y;
599 hpgs_reader_label(reader,str+i0,i-i0,
600 reader->alternate_font ?
601 reader->alternate_face :
602 reader->default_face,
603 reader->alternate_font ?
604 reader->alternate_encoding :
605 reader->default_encoding,
606 reader->alternate_font ?
607 reader->alternate_posture :
608 reader->default_posture,
609 reader->alternate_font ?
610 reader->alternate_weight :
611 reader->default_weight,
617 reader->current_point.x -= adj.x;
618 reader->current_point.y -= adj.y;
630 reader->current_point.x -= space_vec.x;
631 reader->current_point.y -= space_vec.y;
635 reader->current_point.x += space_vec.x * (8 - ipos % 8);
636 reader->current_point.y += space_vec.y * (8 - ipos % 8);
641 reader->cr_point.x += lf_vec.x;
642 reader->cr_point.y += lf_vec.y;
643 reader->current_point.x += lf_vec.x;
644 reader->current_point.y += lf_vec.y;
648 reader->current_point.x = reader->cr_point.x;
649 reader->current_point.y = reader->cr_point.y;
654 reader->alternate_font = 1;
658 reader->alternate_font = 0;
662 if (reader->verbosity >= 1)
674 int hpgs_reader_do_MG (hpgs_reader *reader)
678 if (reader->eoc) return 0;
680 if (hpgs_reader_read_new_string(reader,str)) return -1;
682 if (reader->verbosity >= 1)