|
|
|
@ -26,7 +26,7 @@ fprintf(stderr, ">>> %s ( %p %p %d )\n", __func__,
@@ -26,7 +26,7 @@ fprintf(stderr, ">>> %s ( %p %p %d )\n", __func__,
|
|
|
|
|
/* no magic check here ? */ |
|
|
|
|
if (dst->width || dst->height) { |
|
|
|
|
fprintf(stderr, "*** %s: image at %p not empty\n", __func__, dst); |
|
|
|
|
fimg_describe(dst, "destination halfsize"); |
|
|
|
|
fimg_describe(dst, "destination halfsize 0"); |
|
|
|
|
return -2; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -55,3 +55,51 @@ for (y=0; y<hd; y++) {
@@ -55,3 +55,51 @@ for (y=0; y<hd; y++) {
|
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
/* --------------------------------------------------------------------- */ |
|
|
|
|
int fimg_halfsize_1(FloatImg *src, FloatImg *dst, int notused) |
|
|
|
|
{ |
|
|
|
|
int wd, hd; |
|
|
|
|
int foo, x, y, x2, y2; |
|
|
|
|
float ac; |
|
|
|
|
|
|
|
|
|
if (dst->width || dst->height) { |
|
|
|
|
fprintf(stderr, "*** %s: image at %p not empty\n", __func__, dst); |
|
|
|
|
fimg_describe(dst, "destination halfsize 1"); |
|
|
|
|
return -2; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
wd = src->width / 2; hd = src->height / 2; |
|
|
|
|
if ( (foo = fimg_create(dst, wd, hd, FIMG_TYPE_RGB)) ) { |
|
|
|
|
fprintf(stderr, "%s: err create %d\n", __func__, foo); |
|
|
|
|
return -3; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#define WS (src->width) |
|
|
|
|
#define WD (dst->width) |
|
|
|
|
|
|
|
|
|
for (y=0; y<hd; y++) { |
|
|
|
|
y2 = y * 2; |
|
|
|
|
for (x=0; x<wd; x++) { |
|
|
|
|
x2 = x * 2; |
|
|
|
|
|
|
|
|
|
ac = src->R[(y2*WS)+x2] + src->R[(y2*WS)+x2+1] + |
|
|
|
|
src->R[((1+y2)*WS)+x2] + src->R[((1+y2)*WS)+x2+1]; |
|
|
|
|
dst->R[y*WD +x] = ac / 4.0; |
|
|
|
|
|
|
|
|
|
ac = src->G[(y2*WS)+x2] + src->G[(y2*WS)+x2+1] + |
|
|
|
|
src->G[((1+y2)*WS)+x2] + src->G[((1+y2)*WS)+x2+1]; |
|
|
|
|
dst->G[y*WD +x] = ac / 4.0; |
|
|
|
|
|
|
|
|
|
ac = src->B[(y2*WS)+x2] + src->B[(y2*WS)+x2+1] + |
|
|
|
|
src->B[((1+y2)*WS)+x2] + src->B[((1+y2)*WS)+x2+1]; |
|
|
|
|
dst->B[y*WD +x] = ac / 4.0; |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#undef WS |
|
|
|
|
#undef WD |
|
|
|
|
|
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
/* --------------------------------------------------------------------- */ |
|
|
|
|
|
|
|
|
|