diff --git a/pipi/pixels.c b/pipi/pixels.c index 3f11837..da3e371 100644 --- a/pipi/pixels.c +++ b/pipi/pixels.c @@ -48,6 +48,10 @@ pipi_pixels_t *pipi_getpixels(pipi_image_t *img, pipi_format_t type) if(img->last_modified == type) return &img->p[type]; + /* Handle special cases */ + if(type == PIPI_PIXELS_MASK_C) + return &img->p[type]; + /* Preliminary conversions */ if(img->last_modified == PIPI_PIXELS_RGBA_C && type == PIPI_PIXELS_Y_F) @@ -152,16 +156,16 @@ pipi_pixels_t *pipi_getpixels(pipi_image_t *img, pipi_format_t type) dest[4 * (y * img->w + x) + i] = d; - e = p - u8tof32(d); + e = (p - u8tof32(d)) / 8; if(x < img->w - 1) - src[4 * (y * img->w + x + 1) + i] += e * .4375; + src[4 * (y * img->w + x + 1) + i] += e * 7; if(y < img->h - 1) { if(x > 0) - src[4 * ((y + 1) * img->w + x - 1) + i] += e * .1875; - src[4 * ((y + 1) * img->w + x) + i] += e * .3125; + src[4 * ((y + 1) * img->w + x - 1) + i] += e * 3; + src[4 * ((y + 1) * img->w + x) + i] += e * 5; if(x < img->w - 1) - src[4 * ((y + 1) * img->w + x + 1) + i] += e * .0625; + src[4 * ((y + 1) * img->w + x + 1) + i] += e; } } } @@ -188,16 +192,16 @@ pipi_pixels_t *pipi_getpixels(pipi_image_t *img, pipi_format_t type) dest[3 * (y * img->w + x) + i] = d; - e = p - u8tof32(d); + e = (p - u8tof32(d)); if(x < img->w - 1) - src[4 * (y * img->w + x + 1) + i] += e * .4375; + src[4 * (y * img->w + x + 1) + i] += e * 7; if(y < img->h - 1) { if(x > 0) - src[4 * ((y + 1) * img->w + x - 1) + i] += e * .1875; - src[4 * ((y + 1) * img->w + x) + i] += e * .3125; + src[4 * ((y + 1) * img->w + x - 1) + i] += e * 3; + src[4 * ((y + 1) * img->w + x) + i] += e * 5; if(x < img->w - 1) - src[4 * ((y + 1) * img->w + x + 1) + i] += e * .0625; + src[4 * ((y + 1) * img->w + x + 1) + i] += e; } } }