gif: fix setting of transparency channels when writing gifs. (from rsc p9p)
This commit is contained in:
parent
c9b707cd56
commit
00161ca7fc
1 changed files with 7 additions and 7 deletions
|
@ -229,7 +229,7 @@ addalpha(Rawimage *i)
|
||||||
* r is used only for reference; the image is already in c.
|
* r is used only for reference; the image is already in c.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
whiteout(Rawimage *r, Rawimage *c)
|
blackout(Rawimage *r, Rawimage *c)
|
||||||
{
|
{
|
||||||
int i, trindex;
|
int i, trindex;
|
||||||
uchar *rp, *cp;
|
uchar *rp, *cp;
|
||||||
|
@ -241,9 +241,9 @@ whiteout(Rawimage *r, Rawimage *c)
|
||||||
for(i=0; i<r->chanlen; i++){
|
for(i=0; i<r->chanlen; i++){
|
||||||
if(*rp == trindex){
|
if(*rp == trindex){
|
||||||
*cp++ = 0x00;
|
*cp++ = 0x00;
|
||||||
*cp++ = 0xFF;
|
*cp++ = 0x00;
|
||||||
*cp++ = 0xFF;
|
*cp++ = 0x00;
|
||||||
*cp++ = 0xFF;
|
*cp++ = 0x00;
|
||||||
}else{
|
}else{
|
||||||
*cp++ = 0xFF;
|
*cp++ = 0xFF;
|
||||||
cp += 3;
|
cp += 3;
|
||||||
|
@ -254,7 +254,7 @@ whiteout(Rawimage *r, Rawimage *c)
|
||||||
for(i=0; i<r->chanlen; i++){
|
for(i=0; i<r->chanlen; i++){
|
||||||
if(*rp == trindex){
|
if(*rp == trindex){
|
||||||
*cp++ = 0x00;
|
*cp++ = 0x00;
|
||||||
*cp++ = 0xFF;
|
*cp++ = 0x00;
|
||||||
}else{
|
}else{
|
||||||
*cp++ = 0xFF;
|
*cp++ = 0xFF;
|
||||||
cp++;
|
cp++;
|
||||||
|
@ -380,7 +380,7 @@ show(int fd, char *name)
|
||||||
if(nineflag){
|
if(nineflag){
|
||||||
if(images[0]->gifflags&TRANSP){
|
if(images[0]->gifflags&TRANSP){
|
||||||
addalpha(rgbv[0]);
|
addalpha(rgbv[0]);
|
||||||
whiteout(images[0], rgbv[0]);
|
blackout(images[0], rgbv[0]);
|
||||||
}
|
}
|
||||||
chantostr(buf, outchan);
|
chantostr(buf, outchan);
|
||||||
print("%11s %11d %11d %11d %11d ", buf,
|
print("%11s %11d %11d %11d %11d ", buf,
|
||||||
|
@ -392,7 +392,7 @@ show(int fd, char *name)
|
||||||
}else if(cflag){
|
}else if(cflag){
|
||||||
if(images[0]->gifflags&TRANSP){
|
if(images[0]->gifflags&TRANSP){
|
||||||
addalpha(rgbv[0]);
|
addalpha(rgbv[0]);
|
||||||
whiteout(images[0], rgbv[0]);
|
blackout(images[0], rgbv[0]);
|
||||||
}
|
}
|
||||||
if(writerawimage(1, rgbv[0]) < 0){
|
if(writerawimage(1, rgbv[0]) < 0){
|
||||||
fprint(2, "gif: %s: write error: %r\n", name);
|
fprint(2, "gif: %s: write error: %r\n", name);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue