Hello,
I think that I found some mistakes in the code that reads and writes
RLE-compressed TGA files (in tga.c). Gimp can generate a RLE-compressed
file containing RLE packets, which go through the end of a scan line
(that is encode pixels from more that one pixel line), which is
prohibited by the standard.
I tested it by generating a 5x5 grayscale image with the following
pattern:
OXXOO
OXXOO
OXXOO
OXXOO
OOOOO
(O = white, X = black)
Gimp compressed the white pixels with one packet containing the first pixel,
3 packets containing the last two pixels on i-th line a the first
pixel on (i-1)-th line (i=1,2,3), and one packet containing the last 7 pixels.
I think that the reason is in setting the width variable in save_image():
here the width should be equal to the width of the image.
Another problem is in the rle_read() function: variables repeat and direct
are not correctly initialized on every call of rle_read(), as they are
static. This is, by a chance (IMO) the reason, why Gimp can read its
own RLE-compressed files: these two variables keep their values from the
last call.
I apologize that I can't try to fix the errors myself at the moment, as I'm
late with some urgent SW project.
Best regards,
Petr
--
Petr Mejzlik
Dept. of Information Technology, Faculty of Informatics
Masaryk University Internet: [EMAIL PROTECTED]
Botanicka 68a FAX : +42-05-4121 2568
CZ-602 00 Brno, Czech Republic Tel.: +42-05-4151 2338
_______________________________________________
Gimp-developer mailing list
[EMAIL PROTECTED]
http://lists.xcf.berkeley.edu/mailman/listinfo/gimp-developer