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 | |
87 | int psiconv_write_paint_data_section(const psiconv_config config, |
88 | int 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; |
… | |
… | |
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; |
… | |
… | |
383 | } |
391 | } |
384 | |
392 | |
385 | ERROR: |
393 | ERROR: |
386 | return res; |
394 | return res; |
387 | } |
395 | } |
|
|
396 | |
|
|
397 | int 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 | |
|
|
423 | ERROR: |
|
|
424 | return res; |
|
|
425 | } |