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

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

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

Revision 170 Revision 174
1/* 1/*
2
2 generate_image.c - Part of psiconv, a PSION 5 file formats converter 3 generate_image.c - Part of psiconv, a PSION 5 file formats converter
3 Copyright (c) 1999, 2000 Frodo Looijaard <frodol@dds.nl> 4 Copyright (c) 1999, 2000 Frodo Looijaard <frodol@dds.nl>
4 5
5 This program is free software; you can redistribute it and/or modify 6 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 7 it under the terms of the GNU General Public License as published by
84 }; 85 };
85 86
86 87
87int psiconv_write_paint_data_section(const psiconv_config config, 88int psiconv_write_paint_data_section(const psiconv_config config,
88 psiconv_buffer buf, 89 psiconv_buffer buf,
89 const psiconv_paint_data_section value) 90 const psiconv_paint_data_section value,
91 int is_clipart)
90{ 92{
91 int res,colordepth,i; 93 int res,colordepth,i;
92 psiconv_pixel_ints ints; 94 psiconv_pixel_ints ints;
93 psiconv_pixel_floats_t floats,palet; 95 psiconv_pixel_floats_t floats,palet;
94 psiconv_list bytes; 96 psiconv_list bytes;
144 if ((res = psiconv_write_u32(config,buf,0))) 146 if ((res = psiconv_write_u32(config,buf,0)))
145 goto ERROR3; 147 goto ERROR3;
146 /* Encoding: no RLE for now */ 148 /* Encoding: no RLE for now */
147 if ((res = psiconv_write_u32(config,buf,0))) 149 if ((res = psiconv_write_u32(config,buf,0)))
148 goto ERROR3; 150 goto ERROR3;
151 if (is_clipart) {
152 if ((res = psiconv_write_u32(config,buf,0xffffffff)))
153 goto ERROR3;
154 if ((res = psiconv_write_u32(config,buf,0x00000044)))
155 goto ERROR3;
156 }
149 for (i = 0; i < psiconv_list_length(bytes); i++) { 157 for (i = 0; i < psiconv_list_length(bytes); i++) {
150 if (!(byteptr = psiconv_list_get(bytes,i))) 158 if (!(byteptr = psiconv_list_get(bytes,i)))
151 goto ERROR3; 159 goto ERROR3;
152 if ((res = psiconv_write_u8(config,buf,*byteptr))) 160 if ((res = psiconv_write_u8(config,buf,*byteptr)))
153 goto ERROR3; 161 goto ERROR3;
302 return res; 310 return res;
303} 311}
304 312
305int psiconv_write_sketch_section(const psiconv_config config, 313int psiconv_write_sketch_section(const psiconv_config config,
306 psiconv_buffer buf, 314 psiconv_buffer buf,
307 psiconv_sketch_section value) 315 const psiconv_sketch_section value)
308{ 316{
309 int res; 317 int res;
310 318
311 if (!value) { 319 if (!value) {
312 psiconv_warn(config,0,0,"NULL sketch section"); 320 psiconv_warn(config,0,0,"NULL sketch section");
330 goto ERROR1; 338 goto ERROR1;
331 if ((res = psiconv_write_u16(config,buf,value->form_ysize))) 339 if ((res = psiconv_write_u16(config,buf,value->form_ysize)))
332 goto ERROR1; 340 goto ERROR1;
333 if ((res = psiconv_write_u16(config,buf,0x0000))) 341 if ((res = psiconv_write_u16(config,buf,0x0000)))
334 goto ERROR1; 342 goto ERROR1;
335 if ((res = psiconv_write_paint_data_section(config,buf,value->picture))) 343 if ((res = psiconv_write_paint_data_section(config,buf,value->picture,0)))
336 goto ERROR1; 344 goto ERROR1;
337 if ((res = psiconv_write_u16(config,buf,value->magnification_x * 0x03e8))) 345 if ((res = psiconv_write_u16(config,buf,value->magnification_x * 0x03e8)))
338 goto ERROR1; 346 goto ERROR1;
339 if ((res = psiconv_write_u16(config,buf,value->magnification_y * 0x03e8))) 347 if ((res = psiconv_write_u16(config,buf,value->magnification_y * 0x03e8)))
340 goto ERROR1; 348 goto ERROR1;
352 goto ERROR1; 360 goto ERROR1;
353 361
354ERROR1: 362ERROR1:
355 return res; 363 return res;
356} 364}
365
366int psiconv_write_jumptable_section(const psiconv_config config,
367 psiconv_buffer buf,
368 const psiconv_jumptable_section value)
369{
370 int res,i;
371 psiconv_u32 *offset_ptr;
372
373
374 if (!value) {
375 psiconv_warn(config,0,psiconv_buffer_length(buf),
376 "NULL Jumptable Section");
377 res = -PSICONV_E_GENERATE;
378 goto ERROR;
379 }
380 if ((res = psiconv_write_u32(config,buf,psiconv_list_length(value))))
381 goto ERROR;
382 for (i = 0; i < psiconv_list_length(value); i++) {
383 if (!(offset_ptr = psiconv_list_get(value,i))) {
384 psiconv_warn(config,0,psiconv_buffer_length(buf),
385 "Massive memory corruption");
386 res = -PSICONV_E_NOMEM;
387 goto ERROR;
388 }
389 if ((res = psiconv_write_offset(config,buf,*offset_ptr)))
390 goto ERROR;
391 }
392
393ERROR:
394 return res;
395}
396
397int psiconv_write_clipart_section(const psiconv_config config,
398 psiconv_buffer buf,
399 const psiconv_clipart_section value)
400{
401 int res;
402
403
404 if (!value) {
405 psiconv_warn(config,0,psiconv_buffer_length(buf),
406 "NULL Clipart Section");
407 res = -PSICONV_E_GENERATE;
408 goto ERROR;
409 }
410 if ((res = psiconv_write_u32(config,buf,PSICONV_ID_CLIPART_ITEM)))
411 goto ERROR;
412 if ((res = psiconv_write_u32(config,buf,0x00000002)))
413 goto ERROR;
414 if ((res = psiconv_write_u32(config,buf,0x00000000)))
415 goto ERROR;
416 if ((res = psiconv_write_u32(config,buf,0x00000000)))
417 goto ERROR;
418 if ((res = psiconv_write_u32(config,buf,0x0000000C)))
419 goto ERROR;
420 if ((res = psiconv_write_paint_data_section(config,buf,value->picture,1)))
421 goto ERROR;
422
423ERROR:
424 return res;
425}

Legend:
Removed from v.170  
changed lines
  Added in v.174

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