Fix #405, -1 aims to reset the transparent color; refactor a bit; add test to existing test for -1
parent
bdc281eadb
commit
67cc752b40
23
src/gd.c
23
src/gd.c
|
@ -895,19 +895,24 @@ BGD_DECLARE(void) gdImageColorDeallocate (gdImagePtr im, int color)
|
|||
*/
|
||||
BGD_DECLARE(void) gdImageColorTransparent (gdImagePtr im, int color)
|
||||
{
|
||||
if (color < 0) {
|
||||
// Reset ::transparent
|
||||
if (color == -1) {
|
||||
im->transparent = -1;
|
||||
}
|
||||
if (color < -1) {
|
||||
return;
|
||||
}
|
||||
if (im->trueColor) {
|
||||
im->transparent = color;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!im->trueColor) {
|
||||
if (color >= gdMaxColors) {
|
||||
return;
|
||||
}
|
||||
if (im->transparent != -1) {
|
||||
im->alpha[im->transparent] = gdAlphaOpaque;
|
||||
}
|
||||
im->alpha[color] = gdAlphaTransparent;
|
||||
// Palette Image
|
||||
if (color >= gdMaxColors) {
|
||||
return;
|
||||
}
|
||||
im->alpha[im->transparent] = gdAlphaOpaque;
|
||||
im->alpha[color] = gdAlphaTransparent;
|
||||
im->transparent = color;
|
||||
}
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@ int main()
|
|||
|
||||
if(im->transparent == pos) {
|
||||
error = -1;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
pos = -2;
|
||||
|
@ -22,7 +23,14 @@ int main()
|
|||
gdImageColorTransparent(im, pos);
|
||||
|
||||
if(im->transparent == pos) {
|
||||
error = -1;
|
||||
error = -2;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
pos = -1;
|
||||
gdImageColorTransparent(im, pos);
|
||||
if(im->transparent == pos) {
|
||||
error = -3;
|
||||
}
|
||||
|
||||
gdImageDestroy(im);
|
||||
|
|
Loading…
Reference in New Issue