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

Reply via email to