Changeset 3545


Ignore:
Timestamp:
Jul 9, 2009, 1:38:32 AM (11 years ago)
Author:
Sam Hocevar
Message:

Fix the pipi_merge() semantics so that it matches Gimp’s, and don’t ignore
the image’s alpha layers.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libpipi/trunk/pipi/combine/merge.c

    r3411 r3545  
    2929    pipi_pixels_t *img1p, *img2p, *dstp;
    3030    float *img1data, *img2data, *dstdata;
    31     double t2;
    3231    int x, y, w, h;
    3332
     
    3938    else if(t > 1.0)
    4039        t = 1.0;
    41     t2 = 1.0 - t;
    4240
    4341    w = img1->w;
     
    5856        {
    5957            float p, q;
     58            double t1 = t * img2data[4 * (y * w + x) + 3];
     59            double t2 = 1.0 - t1;
    6060
    6161            p = img1data[4 * (y * w + x)];
    6262            q = img2data[4 * (y * w + x)];
    63             dstdata[4 * (y * w + x)] = t * p + t2 * q;
     63            dstdata[4 * (y * w + x)] = t2 * p + t1 * q;
    6464
    6565            p = img1data[4 * (y * w + x) + 1];
    6666            q = img2data[4 * (y * w + x) + 1];
    67             dstdata[4 * (y * w + x) + 1] = t * p + t2 * q;
     67            dstdata[4 * (y * w + x) + 1] = t2 * p + t1 * q;
    6868
    6969            p = img1data[4 * (y * w + x) + 2];
    7070            q = img2data[4 * (y * w + x) + 2];
    71             dstdata[4 * (y * w + x) + 2] = t * p + t2 * q;
     71            dstdata[4 * (y * w + x) + 2] = t2 * p + t1 * q;
    7272
    7373            p = img1data[4 * (y * w + x) + 3];
    7474            q = img2data[4 * (y * w + x) + 3];
    75             dstdata[4 * (y * w + x) + 3] = t * p + t2 * q;
     75            dstdata[4 * (y * w + x) + 3] = t2 * p + t1 * q;
    7676        }
    7777    }
Note: See TracChangeset for help on using the changeset viewer.