[libpng16] Use unsigned hex constants in "reciprocal" computations
This commit is contained in:
parent
d8b93c29a7
commit
268c7bf68b
@ -88,7 +88,7 @@ png_get_int_32)(png_const_bytep buf)
|
||||
if ((uval & 0x80000000UL) == 0) /* non-negative */
|
||||
return uval;
|
||||
|
||||
uval = (uval ^ 0xffffffffUL) + 1; /* 2's complement: -x = ~x+1 */
|
||||
uval = (uval ^ (png_uint_32)0xffffffffUL) + 1; /* 2's complement: -x = ~x+1 */
|
||||
return -(png_int_32)uval;
|
||||
}
|
||||
|
||||
|
@ -1570,7 +1570,7 @@ png_write_image_16bit(png_voidp argument)
|
||||
* is only initialized when required.
|
||||
*/
|
||||
if (alpha > 0 && alpha < 65535)
|
||||
reciprocal = ((0xffffUL<<15)+(alpha>>1))/alpha;
|
||||
reciprocal = ((0xffffU<<15)+(alpha>>1))/alpha;
|
||||
|
||||
c = channels;
|
||||
do /* always at least one channel */
|
||||
@ -1621,7 +1621,7 @@ png_write_image_16bit(png_voidp argument)
|
||||
* calculation can be done to 15 bits of accuracy; however, the output needs to
|
||||
* be scaled in the range 0..255*65535, so include that scaling here.
|
||||
*/
|
||||
# define UNP_RECIPROCAL(alpha) ((((0xffffUL*0xffU)<<7)+(alpha>>1))/alpha)
|
||||
# define UNP_RECIPROCAL(alpha) ((((0xffffU*0xffU)<<7)+(alpha>>1))/alpha)
|
||||
|
||||
static png_byte
|
||||
png_unpremultiply(png_uint_32 component, png_uint_32 alpha,
|
||||
@ -1836,7 +1836,7 @@ png_image_set_PLTE(png_image_write_control *display)
|
||||
* divided by 128 (i.e. asr 7).
|
||||
*/
|
||||
if (alphabyte > 0 && alphabyte < 255)
|
||||
reciprocal = (((0xffffUL*0xffU)<<7)+(alpha>>1))/alpha;
|
||||
reciprocal = (((0xffffU*0xffU)<<7)+(alpha>>1))/alpha;
|
||||
|
||||
tRNS[i] = alphabyte;
|
||||
if (alphabyte < 255)
|
||||
|
Loading…
Reference in New Issue
Block a user