alpha = BABL_ALPHA_FLOOR;
else if (alpha >= -BABL_ALPHA_FLOOR)
alpha = -BABL_ALPHA_FLOOR;
+ if (red == 0.0 && green == 0.0 && blue == 0.0)
+ alpha = 0.0;
}
luminance = red * RGB_LUMINANCE_RED +
double alpha = *(double *) src[src_bands-1];
if (alpha < BABL_ALPHA_FLOOR)
{
+ int non_zero_components = 0;
if (alpha >= 0.0f)
alpha = BABL_ALPHA_FLOOR;
else if (alpha >= -BABL_ALPHA_FLOOR)
alpha = -BABL_ALPHA_FLOOR;
+
+ for (band = 0; band < src_bands - 1; band++)
+ {
+ if (*(double *) src[band] != 0.0)
+ non_zero_components++;
+ }
+ if (non_zero_components)
+ alpha = 0.0;
+
}
for (band = 0; band < src_bands - 1; band++)
alpha = BABL_ALPHA_FLOOR;
else if (alpha >= -BABL_ALPHA_FLOOR)
alpha = -BABL_ALPHA_FLOOR;
+ if (red == 0.0 && green == 0.0 && blue == 0.0)
+ alpha = 0.0;
}
luminance = red * RGB_LUMINANCE_RED +
if (alpha < BABL_ALPHA_FLOOR)
{
+ int non_zero_components = 0;
if (alpha >= 0.0)
alpha = BABL_ALPHA_FLOOR;
else if (alpha >= -BABL_ALPHA_FLOOR)
alpha = -BABL_ALPHA_FLOOR;
+ for (band = 0 ; band< src_bands-1; band++)
+ if (*(double *) src[band] != 0.0)
+ non_zero_components++;
+ if (non_zero_components == 0)
+ alpha = 0.0;
}
for (band = 0; band < src_bands - 1; band++)
alpha = BABL_ALPHA_FLOOR;
else if (alpha >= -BABL_ALPHA_FLOOR)
alpha = -BABL_ALPHA_FLOOR;
+ if (((double *) src)[0] == 0.0 &&
+ ((double *) src)[1] == 0.0 &&
+ ((double *) src)[2] == 0.0)
+ alpha = 0.0;
}
((double *) dst)[0] = babl_trc_from_linear (trc[0], ((double *) src)[0]) * alpha;
alpha = BABL_ALPHA_FLOOR;
else if (alpha >= -BABL_ALPHA_FLOOR)
alpha = -BABL_ALPHA_FLOOR;
+ if (((double *) src)[0] == 0.0 &&
+ ((double *) src)[1] == 0.0 &&
+ ((double *) src)[2] == 0.0)
+ alpha = 0.0;
}
((double *) dst)[0] = babl_trc_from_linear (trc, ((double *) src)[0]) * alpha;
alpha = BABL_ALPHA_FLOOR;
else if (alpha >= -BABL_ALPHA_FLOOR)
alpha = -BABL_ALPHA_FLOOR;
+ if (fsrc[0] == 0.0f &&
+ fsrc[1] == 0.0f &&
+ fsrc[2] == 0.0f)
+ alpha = 0.0f;
}
*fdst++ = babl_trc_from_linear (trc[0], *fsrc++) * alpha;
*fdst++ = babl_trc_from_linear (trc[1], *fsrc++) * alpha;
alpha = BABL_ALPHA_FLOOR;
else if (alpha >= -BABL_ALPHA_FLOOR)
alpha = -BABL_ALPHA_FLOOR;
+ if (red == 0.0f && green == 0.0f && blue == 0.0f)
+ alpha = 0.0f;
}
*fdst++ = linear_to_gamma_2_2_lut (red) * alpha;
*fdst++ = linear_to_gamma_2_2_lut (green) * alpha;
alpha = BABL_ALPHA_FLOOR;
else if (alpha >= -BABL_ALPHA_FLOOR)
alpha = -BABL_ALPHA_FLOOR;
+ if (fsrc[0] == 0.0f &&
+ fsrc[1] == 0.0f &&
+ fsrc[2] == 0.0f)
+ alpha = 0.0f;
}
*fdst++ = babl_trc_from_linear (trc[0], *fsrc++) * alpha;
*fdst++ = babl_trc_from_linear (trc[1], *fsrc++) * alpha;
alpha = BABL_ALPHA_FLOOR;
else if (alpha >= -BABL_ALPHA_FLOOR)
alpha = -BABL_ALPHA_FLOOR;
+ if (fsrc[0] == 0.0f &&
+ fsrc[1] == 0.0f &&
+ fsrc[2] == 0.0f)
+ alpha = 0.0f;
}
*fdst++ = babl_trc_from_linear (trc_srgb, *fsrc++) * alpha;
*fdst++ = babl_trc_from_linear (trc_srgb, *fsrc++) * alpha;
alpha = BABL_ALPHA_FLOOR;
else if (alpha >= -BABL_ALPHA_FLOOR)
alpha = -BABL_ALPHA_FLOOR;
+ if (src[0] == 0.0f &&
+ src[1] == 0.0f &&
+ src[2] == 0.0f)
+ alpha = 0.0f;
}
dst[0] = src[0] * alpha;
dst[1] = src[1] * alpha;
((float *)s)[3] = BABL_ALPHA_FLOOR;
else
((float *)s)[3] = -BABL_ALPHA_FLOOR;
+
+ if (((float *)s)[0] == 0.0f &&
+ ((float *)s)[1] == 0.0f &&
+ ((float *)s)[2] == 0.0f)
+ ((float *)s)[3] = 0.0f;
}
if (alpha1 < BABL_ALPHA_FLOOR)
{
((float *)s)[7] = BABL_ALPHA_FLOOR;
else
((float *)s)[7] = -BABL_ALPHA_FLOOR;
+ if (((float *)s)[4] == 0.0f &&
+ ((float *)s)[5] == 0.0f &&
+ ((float *)s)[6] == 0.0f)
+ ((float *)s)[7] = 0.0f;
}
{
__v4sf rbaa0, rbaa1;
a = BABL_ALPHA_FLOOR;
else if (a >= -BABL_ALPHA_FLOOR)
a = -BABL_ALPHA_FLOOR;
+ if (src[0] == 0.0f &&
+ src[1] == 0.0f &&
+ src[2] == 0.0f)
+ a = 0.0f;
}
dst[0] = src[0] * a;
dst[1] = src[1] * a;