Переглянути джерело

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

the image’s alpha layers.

git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@3545 92316355-f0b4-4df1-b90c-862c8a59935f
master
sam 15 роки тому
джерело
коміт
f0b0a8ba0a
1 змінених файлів з 6 додано та 6 видалено
  1. +6
    -6
      pipi/combine/merge.c

+ 6
- 6
pipi/combine/merge.c Переглянути файл

@@ -28,7 +28,6 @@ pipi_image_t *pipi_merge(pipi_image_t *img1, pipi_image_t *img2, double t)
pipi_image_t *dst;
pipi_pixels_t *img1p, *img2p, *dstp;
float *img1data, *img2data, *dstdata;
double t2;
int x, y, w, h;

if(img1->w != img2->w || img1->h != img2->h)
@@ -38,7 +37,6 @@ pipi_image_t *pipi_merge(pipi_image_t *img1, pipi_image_t *img2, double t)
t = 0.0;
else if(t > 1.0)
t = 1.0;
t2 = 1.0 - t;

w = img1->w;
h = img1->h;
@@ -57,22 +55,24 @@ pipi_image_t *pipi_merge(pipi_image_t *img1, pipi_image_t *img2, double t)
for(x = 0; x < w; x++)
{
float p, q;
double t1 = t * img2data[4 * (y * w + x) + 3];
double t2 = 1.0 - t1;

p = img1data[4 * (y * w + x)];
q = img2data[4 * (y * w + x)];
dstdata[4 * (y * w + x)] = t * p + t2 * q;
dstdata[4 * (y * w + x)] = t2 * p + t1 * q;

p = img1data[4 * (y * w + x) + 1];
q = img2data[4 * (y * w + x) + 1];
dstdata[4 * (y * w + x) + 1] = t * p + t2 * q;
dstdata[4 * (y * w + x) + 1] = t2 * p + t1 * q;

p = img1data[4 * (y * w + x) + 2];
q = img2data[4 * (y * w + x) + 2];
dstdata[4 * (y * w + x) + 2] = t * p + t2 * q;
dstdata[4 * (y * w + x) + 2] = t2 * p + t1 * q;

p = img1data[4 * (y * w + x) + 3];
q = img2data[4 * (y * w + x) + 3];
dstdata[4 * (y * w + x) + 3] = t * p + t2 * q;
dstdata[4 * (y * w + x) + 3] = t2 * p + t1 * q;
}
}



Завантаження…
Відмінити
Зберегти