/[public]/psiconv/trunk/lib/psiconv/parse_layout.c
ViewVC logotype

Diff of /psiconv/trunk/lib/psiconv/parse_layout.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 67 Revision 104
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18*/ 18*/
19 19
20#include "config.h" 20#include "config.h"
21#include "compat.h"
22
21#include <stdlib.h> 23#include <stdlib.h>
22#include <math.h> 24#include <math.h>
23 25
24#include "data.h"
25#include "parse_routines.h" 26#include "parse_routines.h"
27#include "error.h"
26 28
27int psiconv_parse_color(const psiconv_buffer buf, int lev, psiconv_u32 off, 29int psiconv_parse_color(const psiconv_buffer buf, int lev, psiconv_u32 off,
28 int *length, psiconv_color *result) 30 int *length, psiconv_color *result)
29{ 31{
30 int res = 0; 32 int res = 0;
161 163
162 psiconv_progress(lev+2,off+len,"Going to read border thickness"); 164 psiconv_progress(lev+2,off+len,"Going to read border thickness");
163 (*result)->thickness = psiconv_read_size(buf,lev+2,off+len,&leng,&res); 165 (*result)->thickness = psiconv_read_size(buf,lev+2,off+len,&leng,&res);
164 if (res) 166 if (res)
165 goto ERROR2; 167 goto ERROR2;
168#if 0
169 /* This seems no longer necessary to test? */
166 if (((*result)->kind != psiconv_border_solid) && 170 if (((*result)->kind != psiconv_border_solid) &&
167 ((*result)->kind != psiconv_border_double) && 171 ((*result)->kind != psiconv_border_double) &&
168 ((*result)->thickness != 0.0) && 172 ((*result)->thickness != 0.0) &&
169 (fabs((*result)->thickness - 1/20) >= 1/1000)) { 173 (fabs((*result)->thickness - 1/20) >= 1/1000)) {
170 psiconv_warn(lev+2,off, 174 psiconv_warn(lev+2,off,
171 "Border thickness specified for unlikely border type"); 175 "Border thickness specified for unlikely border type");
172 } 176 }
177#endif
173 psiconv_debug(lev+2,off+len,"Thickness: %f",(*result)->thickness); 178 psiconv_debug(lev+2,off+len,"Thickness: %f",(*result)->thickness);
174 len += leng; 179 len += leng;
175 180
176 psiconv_progress(lev+2,off+len,"Going to read the border color"); 181 psiconv_progress(lev+2,off+len,"Going to read the border color");
177 if ((psiconv_parse_color(buf,lev+2,off+len,&leng,&(*result)->color))) 182 if ((psiconv_parse_color(buf,lev+2,off+len,&leng,&(*result)->color)))
178 goto ERROR2; 183 goto ERROR2;
179 len += leng; 184 len += leng;
180 185
181 psiconv_progress(lev+2,off+len,"Going to read the final unknown byte " 186 psiconv_progress(lev+2,off+len,"Going to read the final unknown byte "
182 "(0x01 expected)"); 187 "(0x00 or 0x01 expected)");
183 temp = psiconv_read_u8(buf,lev+2,off + len,&res); 188 temp = psiconv_read_u8(buf,lev+2,off + len,&res);
184 if (res) 189 if (res)
185 goto ERROR3; 190 goto ERROR3;
186 if (temp != 0x01) { 191 if ((temp != 0x01) && (temp != 0x00)) {
187 psiconv_warn(lev+2,off,"Unknown last byte in border specification"); 192 psiconv_warn(lev+2,off,"Unknown last byte in border specification");
188 psiconv_debug(lev+2,off+len, "Last byte: read %02x, expected %02x", 193 psiconv_debug(lev+2,off+len, "Last byte: read %02x, expected %02x or %02x",
189 temp,0x01); 194 temp,0x00,0x01);
190 } 195 }
191 len ++; 196 len ++;
192 197
193 if (length) 198 if (length)
194 *length = len; 199 *length = len;
500 if ((res = psiconv_parse_bool(buf,lev+3,off+len,&leng, 505 if ((res = psiconv_parse_bool(buf,lev+3,off+len,&leng,
501 &result->no_widow_protection))) 506 &result->no_widow_protection)))
502 goto ERROR1; 507 goto ERROR1;
503 len += leng; 508 len += leng;
504 break; 509 break;
510 case 0x0f:
511 psiconv_progress(lev+3,off+len,"Going to read wrap to fit cell limits");
512 if ((res = psiconv_parse_bool(buf,lev+3,off+len,&leng,
513 &result->wrap_to_fit_cell)))
514 goto ERROR1;
515 len += leng;
516 break;
505 case 0x10: 517 case 0x10:
506 psiconv_progress(lev+3,off+len,"Going to read border distance to text"); 518 psiconv_progress(lev+3,off+len,"Going to read border distance to text");
507 result->border_distance = psiconv_read_length(buf,lev+3, 519 result->border_distance = psiconv_read_length(buf,lev+3,
508 off+len,&leng,&res); 520 off+len,&leng,&res);
509 if (res) 521 if (res)
636 if (res) 648 if (res)
637 goto ERROR1; 649 goto ERROR1;
638 psiconv_debug(lev+3,off+len,"Id: %02x",id); 650 psiconv_debug(lev+3,off+len,"Id: %02x",id);
639 len ++; 651 len ++;
640 switch(id) { 652 switch(id) {
653 case 0x18:
654 psiconv_progress(lev+3,off+len,"Going to skip an unknown setting");
655 len ++;
656 break;
641 case 0x19: 657 case 0x19:
642 psiconv_progress(lev+3,off+len,"Going to read text color"); 658 psiconv_progress(lev+3,off+len,"Going to read text color");
643 if ((res = psiconv_parse_color(buf,lev+3,off+len, &leng,&temp_color))) 659 if ((res = psiconv_parse_color(buf,lev+3,off+len, &leng,&temp_color)))
644 goto ERROR1; 660 goto ERROR1;
645 psiconv_free_color(result->color); 661 psiconv_free_color(result->color);
651 if ((res = psiconv_parse_color(buf,lev+2,off+len, &leng,&temp_color))) 667 if ((res = psiconv_parse_color(buf,lev+2,off+len, &leng,&temp_color)))
652 goto ERROR1; 668 goto ERROR1;
653 psiconv_free_color(result->back_color); 669 psiconv_free_color(result->back_color);
654 result->back_color = temp_color; 670 result->back_color = temp_color;
655 len += leng; 671 len += leng;
672 break;
673 case 0x1b:
674 psiconv_progress(lev+3,off+len,"Going to skip an unknown setting");
675 len ++;
656 break; 676 break;
657 case 0x1c: 677 case 0x1c:
658 psiconv_progress(lev+3,off+len,"Going to read font size"); 678 psiconv_progress(lev+3,off+len,"Going to read font size");
659 result->font_size = psiconv_read_size(buf,lev+3,off+len,&leng,&res); 679 result->font_size = psiconv_read_size(buf,lev+3,off+len,&leng,&res);
660 if (res) 680 if (res)
711 goto ERROR1; 731 goto ERROR1;
712 psiconv_free_font(result->font); 732 psiconv_free_font(result->font);
713 result->font = temp_font; 733 result->font = temp_font;
714 len += leng; 734 len += leng;
715 break; 735 break;
736 case 0x23:
737 psiconv_progress(lev+3,off+len,"Going to skip an unknown setting");
738 len ++;
739 break;
716 case 0x24: 740 case 0x24:
717 psiconv_progress(lev+3,off+len, 741 psiconv_progress(lev+3,off+len,
718 "Going to read unknown code 0x24 (%02x expected)", 0); 742 "Going to read unknown code 0x24 (%02x expected)", 0);
719 temp = psiconv_read_u8(buf,lev+3,off+len,&res); 743 temp = psiconv_read_u8(buf,lev+3,off+len,&res);
720 if (res) 744 if (res)

Legend:
Removed from v.67  
changed lines
  Added in v.104

frodo@frodo.looijaard.name
ViewVC Help
Powered by ViewVC 1.1.26