All pastes #571357 Raw Edit

Mine

public text v1 · immutable
·published 2007-06-17 03:13 UTC
rendered paste body
unsigned int *sepia_image(Ewl_Widget *image)
{
        unsigned int *im_data, *im_data_new;
        int i, r, rr, g, gg, b, bb, a, ew, eh;

        im_data = evas_object_image_data_get(EWL_IMAGE(image)->image, FALSE);
        evas_object_image_size_get(EWL_IMAGE(image)->image, &ew, &eh);

        im_data_new = malloc(sizeof(unsigned int) * ew * eh);

        for (i = 0; i < (ew * eh); i++)
        {
                b = (int)((im_data[i]) & 0xff);
                g = (int)((im_data[i] >> 8) & 0xff);
                r = (int)((im_data[i] >> 16) & 0xff);
                a = (int)((im_data[i] >> 24) & 0xff);

                if (a > 0 && a < 255)
                {
                        b = b * (255 / a);
                        g = g * (255 / a);
                        b = b * (255 / a);
                }

                rr = (int)(((r + g + b)/3)+40);
                if (rr < 0) rr = 0;
                if (rr > 255) rr = 255;
                gg = (int)(((r + g + b)/3)+2);
                if (gg < 0) gg = 0;
                if (gg > 255) gg = 255;
                bb = (int)(((r + g + b)/3)+2);
                if (bb < 0) bb = 0;
                if (bb > 255) bb = 255;

                if (a > 0 && a < 255)
                {
                        rr = (rr * a) / 255;
                        gg = (gg * a) / 255;
                        bb = (bb * a) / 255;
                }

                im_data_new[i] = (a << 24) | (rr << 16) | (gg << 8) | bb;
        }
        return im_data_new;
}