commit du soir, espoir
This commit is contained in:
@@ -1,3 +1,6 @@
|
||||
/*
|
||||
* interpolate.c
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
@@ -12,37 +15,53 @@ int verbosity;
|
||||
/* ---------------------------------------------------------------- */
|
||||
static int gray_interpolate(FloatImg *s1, FloatImg *s2, FloatImg *d, float coef)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
/* ---------------------------------------------------------------- */
|
||||
|
||||
int fimg_interpolate(FloatImg *s1, FloatImg *s2, FloatImg *d, float coef)
|
||||
{
|
||||
int picsize, idx;
|
||||
|
||||
if (FIMG_TYPE_RGB != s1->type) {
|
||||
fprintf(stderr, "%s : bad src 1 type %d on %p\n", __func__,
|
||||
s1->type, s1);
|
||||
return -8;
|
||||
}
|
||||
|
||||
if (FIMG_TYPE_RGB != s2->type) {
|
||||
fprintf(stderr, "%s : bad src 2 type %d on %p\n", __func__,
|
||||
s2->type, s2);
|
||||
return -8;
|
||||
}
|
||||
if (FIMG_TYPE_RGB != d->type) {
|
||||
fprintf(stderr, "%s : bad dst type %d on %p\n", __func__,
|
||||
d->type, d);
|
||||
return -9;
|
||||
}
|
||||
|
||||
picsize = d->width * d->height * 3;
|
||||
picsize = d->width * d->height;
|
||||
|
||||
for (idx=0; idx<picsize; idx++) {
|
||||
|
||||
d->R[idx] = (coef * s1->R[idx]) + ((1.0-coef) * s2->R[idx]);
|
||||
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
/* ---------------------------------------------------------------- */
|
||||
static int rgb_interpolate(FloatImg *s1, FloatImg *s2, FloatImg *d, float coef)
|
||||
{
|
||||
int picsize, idx;
|
||||
|
||||
picsize = d->width * d->height * 3; /* rude hack ? */
|
||||
for (idx=0; idx<picsize; idx++) {
|
||||
d->R[idx] = (coef * s1->R[idx]) + ((1.0-coef) * s2->R[idx]);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
/* ---------------------------------------------------------------- */
|
||||
int fimg_interpolate(FloatImg *s1, FloatImg *s2, FloatImg *d, float coef)
|
||||
{
|
||||
int foo;
|
||||
|
||||
foo = fimg_images_compatible(s1, s2);
|
||||
if (foo) {
|
||||
fprintf(stderr, "compat -> %d\n", foo);
|
||||
return foo;
|
||||
}
|
||||
|
||||
foo = fimg_images_compatible(s1, d);
|
||||
if (foo) {
|
||||
fprintf(stderr, "compat -> %d\n", foo);
|
||||
return foo;
|
||||
}
|
||||
|
||||
switch (s1->type) {
|
||||
case FIMG_TYPE_GRAY:
|
||||
gray_interpolate(s1, s2, d, coef); break;
|
||||
case FIMG_TYPE_RGB:
|
||||
rgb_interpolate(s1, s2, d, coef); break;
|
||||
default:
|
||||
fprintf(stderr, "%s, %d is a bad type\n", __func__, s1->type);
|
||||
return -18;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user