Lines Matching refs:reader

30  * The implementation of the HPGL reader.                              *
38 int hpgs_reader_check_param_end(hpgs_reader *reader)
42 reader->last_byte = hpgs_getc(reader->in);
43 if (reader->last_byte == EOF)
46 while (isspace(reader->last_byte));
48 reader->bytes_ignored = 0;
50 if (reader->last_byte == ';')
52 reader->bytes_ignored = 0;
53 reader->eoc = 1;
56 if (reader->last_byte == ',')
60 reader->last_byte = hpgs_getc(reader->in);
61 if (reader->last_byte == EOF)
64 while (isspace(reader->last_byte));
66 if (isalpha(reader->last_byte) || reader->last_byte == HPGS_ESC)
68 reader->bytes_ignored = 1;
69 reader->eoc = 1;
74 hpgs_ungetc(reader->last_byte,reader->in);
75 reader->bytes_ignored = 0;
76 reader->eoc = 0;
80 if (reader->last_byte == '"' || reader->last_byte == '\'' ||
81 isdigit(reader->last_byte) ||
82 reader->last_byte == '+' || reader->last_byte == '-' ||
83 reader->last_byte == '.')
85 hpgs_ungetc(reader->last_byte,reader->in);
86 reader->bytes_ignored = 0;
87 reader->eoc = 0;
90 if (isalpha(reader->last_byte) || reader->last_byte == HPGS_ESC)
92 reader->bytes_ignored = 1;
93 reader->eoc = 1;
104 int hpgs_reader_read_pcl_int(hpgs_reader *reader, int *x, int *sign)
109 reader->last_byte = hpgs_getc(reader->in);
110 if (reader->last_byte == EOF)
113 if (reader->last_byte == '-')
114 { *sign = -1; reader->last_byte=hpgs_getc(reader->in); }
115 else if (reader->last_byte == '+')
116 { *sign = 1; reader->last_byte=hpgs_getc(reader->in); }
118 if (reader->last_byte == EOF)
121 if (!isdigit(reader->last_byte))
122 { hpgs_ungetc(reader->last_byte,reader->in); return 0; }
126 *x = 10 * (*x) + (reader->last_byte-'0');
128 reader->last_byte = hpgs_getc(reader->in);
129 if (reader->last_byte == EOF)
132 while (isdigit(reader->last_byte));
134 hpgs_ungetc(reader->last_byte,reader->in);
146 int hpgs_reader_read_int(hpgs_reader *reader, int *x)
150 if (reader->eoc) return -1;
156 reader->last_byte = hpgs_getc(reader->in);
157 if (reader->last_byte == EOF)
160 while (isspace(reader->last_byte) || reader->last_byte==',');
162 if (reader->last_byte == '-')
164 else if (reader->last_byte == '+')
166 else if (isdigit(reader->last_byte))
167 hpgs_ungetc(reader->last_byte,reader->in);
173 reader->last_byte = hpgs_getc(reader->in);
174 if (reader->last_byte == EOF)
177 if (isdigit(reader->last_byte))
178 *x = 10 * (*x) + (reader->last_byte-'0');
183 hpgs_ungetc(reader->last_byte,reader->in);
185 return hpgs_reader_check_param_end(reader);
193 int hpgs_reader_read_double(hpgs_reader *reader, double *x)
197 if (reader->eoc) return -1;
203 reader->last_byte = hpgs_getc(reader->in);
204 if (reader->last_byte == EOF)
207 while (isspace(reader->last_byte) || reader->last_byte==',');
209 if (reader->last_byte == '-')
211 else if (reader->last_byte == '+')
213 else if (!isdigit(reader->last_byte) && reader->last_byte != '.')
216 if (isdigit(reader->last_byte))
217 hpgs_ungetc(reader->last_byte,reader->in);
219 if (reader->last_byte != '.')
222 reader->last_byte = hpgs_getc(reader->in);
223 if (reader->last_byte == EOF)
226 if (isdigit(reader->last_byte))
227 *x = 10.0 * (*x) + (reader->last_byte-'0');
232 if (reader->last_byte == '.')
238 reader->last_byte = hpgs_getc(reader->in);
239 if (reader->last_byte == EOF)
244 if (isdigit(reader->last_byte))
245 *x += xx * (reader->last_byte-'0');
251 hpgs_ungetc(reader->last_byte,reader->in);
255 return hpgs_reader_check_param_end(reader);
258 int hpgs_reader_read_point(hpgs_reader *reader, hpgs_point *p, int xform)
260 if (hpgs_reader_read_double(reader,&p->x)) return -1;
261 if (reader->eoc) return -1;
262 if (hpgs_reader_read_double(reader,&p->y)) return -1;
267 hpgs_matrix_xform (p,&reader->total_matrix,p);
270 hpgs_matrix_scale (p,&reader->total_matrix,p);
284 int hpgs_reader_read_new_string(hpgs_reader *reader, char *str)
289 if (reader->eoc) return -1;
293 reader->last_byte = hpgs_getc(reader->in);
294 if (reader->last_byte == EOF)
297 while (isspace(reader->last_byte));
299 if (reader->last_byte == '\'' || reader->last_byte=='"')
300 term = reader->last_byte;
302 str[i++] = reader->last_byte;
306 reader->last_byte = hpgs_getc(reader->in);
307 if (reader->last_byte == EOF)
311 str[i] = reader->last_byte;
315 if (term == ',' && reader->last_byte == ';') break;
317 while (reader->last_byte != term);
322 return hpgs_reader_check_param_end(reader);
325 int hpgs_reader_read_label_string(hpgs_reader *reader, char *str)
329 if (reader->eoc) return -1;
331 reader->bytes_ignored = 0;
335 reader->last_byte = hpgs_getc(reader->in);
336 if (reader->last_byte == EOF)
340 str[i] = reader->last_byte;
344 while (reader->last_byte != reader->label_term);
346 if (reader->label_term_ignore && i)
351 return hpgs_reader_check_param_end(reader);