Compare commits
2 Commits
2b62730f47
...
9517c8a10f
Author | SHA1 | Date | |
---|---|---|---|
9517c8a10f | |||
59cbb3c1e0 |
@ -63,12 +63,13 @@ if (FIMG_TYPE_RGB != a->type || FIMG_TYPE_RGB != b->type) {
|
|||||||
|
|
||||||
nbpixels = a->width * a->height;
|
nbpixels = a->width * a->height;
|
||||||
|
|
||||||
|
/* are we cache-friendly here ?
|
||||||
|
* we need an accurate benchmarking... */
|
||||||
|
|
||||||
for (idx=0; idx<nbpixels; idx++) {
|
for (idx=0; idx<nbpixels; idx++) {
|
||||||
b->R[idx] += a->R[idx];
|
b->R[idx] += a->R[idx];
|
||||||
b->G[idx] += a->G[idx];
|
b->G[idx] += a->G[idx];
|
||||||
b->B[idx] += a->B[idx];
|
b->B[idx] += a->B[idx];
|
||||||
/* are we cache-friendly here ?
|
|
||||||
* we need an accurate benchmarking... */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -85,8 +86,8 @@ int idx, nbpixels;
|
|||||||
fprintf(stderr, ">>> %s ( %p %p %p )\n", __func__, a, b, d);
|
fprintf(stderr, ">>> %s ( %p %p %p )\n", __func__, a, b, d);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (FIMG_TYPE_RGB != a->type ||
|
if ( FIMG_TYPE_RGB != a->type ||
|
||||||
FIMG_TYPE_RGB != b->type ||
|
FIMG_TYPE_RGB != b->type ||
|
||||||
FIMG_TYPE_RGB != d->type) {
|
FIMG_TYPE_RGB != d->type) {
|
||||||
fprintf(stderr, "%s : got a bad type fimg\n", __func__);
|
fprintf(stderr, "%s : got a bad type fimg\n", __func__);
|
||||||
return -8;
|
return -8;
|
||||||
@ -175,13 +176,15 @@ if (FIMG_TYPE_RGB != a->type || FIMG_TYPE_RGB != b->type ||
|
|||||||
return -8;
|
return -8;
|
||||||
}
|
}
|
||||||
|
|
||||||
nbiter = a->width * a->height * 3;
|
nbiter = a->width * a->height;
|
||||||
|
|
||||||
for (idx=0; idx<nbiter; idx++) {
|
for (idx=0; idx<nbiter; idx++) {
|
||||||
if (a->R[idx] > b->R[idx])
|
if (a->R[idx] > b->R[idx]) d->R[idx] = a->R[idx];
|
||||||
d->R[idx] = a->R[idx];
|
else d->R[idx] = b->R[idx];
|
||||||
else
|
if (a->G[idx] > b->G[idx]) d->G[idx] = a->G[idx];
|
||||||
d->R[idx] = b->R[idx];
|
else d->G[idx] = b->G[idx];
|
||||||
|
if (a->B[idx] > b->B[idx]) d->B[idx] = a->B[idx];
|
||||||
|
else d->B[idx] = b->B[idx];
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -201,13 +204,15 @@ if (FIMG_TYPE_RGB != a->type || FIMG_TYPE_RGB != b->type ||
|
|||||||
return -8;
|
return -8;
|
||||||
}
|
}
|
||||||
|
|
||||||
nbiter = a->width * a->height * 3;
|
nbiter = a->width * a->height ;
|
||||||
|
|
||||||
for (idx=0; idx<nbiter; idx++) {
|
for (idx=0; idx<nbiter; idx++) {
|
||||||
if (a->R[idx] < b->R[idx])
|
if (a->R[idx] < b->R[idx]) d->R[idx] = a->R[idx];
|
||||||
d->R[idx] = a->R[idx];
|
else d->R[idx] = b->R[idx];
|
||||||
else
|
if (a->G[idx] < b->G[idx]) d->G[idx] = a->G[idx];
|
||||||
d->R[idx] = b->R[idx];
|
else d->G[idx] = b->G[idx];
|
||||||
|
if (a->B[idx] < b->B[idx]) d->B[idx] = a->B[idx];
|
||||||
|
else d->B[idx] = b->B[idx];
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -23,7 +23,13 @@ function essai_drand48
|
|||||||
./fimgstats -vv $TMPF
|
./fimgstats -vv $TMPF
|
||||||
}
|
}
|
||||||
# -----------------------------------------------------
|
# -----------------------------------------------------
|
||||||
|
function essai_cmixa
|
||||||
|
{
|
||||||
|
./mkfimg -v -t tpat0 $TMPF 800 600
|
||||||
|
./fimgfx -v cmixa $TMPF bar.fimg
|
||||||
|
}
|
||||||
|
# -----------------------------------------------------
|
||||||
|
|
||||||
essai_drand48
|
essai_cmixa
|
||||||
|
|
||||||
# -----------------------------------------------------
|
# -----------------------------------------------------
|
||||||
|
@ -21,7 +21,7 @@ typedef struct {
|
|||||||
} Fx;
|
} Fx;
|
||||||
|
|
||||||
enum fxid { Fx_cos01=5, Fx_cos010, Fx_pow2, Fx_sqrt, Fx_gray0, Fx_halfsz0,
|
enum fxid { Fx_cos01=5, Fx_cos010, Fx_pow2, Fx_sqrt, Fx_gray0, Fx_halfsz0,
|
||||||
Fx_rot90,
|
Fx_rot90, Fx_cmixa,
|
||||||
Fx_xper };
|
Fx_xper };
|
||||||
|
|
||||||
Fx fx_list[] = {
|
Fx fx_list[] = {
|
||||||
@ -32,6 +32,7 @@ Fx fx_list[] = {
|
|||||||
{ "gray0", Fx_gray0, 0, 1 },
|
{ "gray0", Fx_gray0, 0, 1 },
|
||||||
{ "halfsz0", Fx_halfsz0, 0, 1 },
|
{ "halfsz0", Fx_halfsz0, 0, 1 },
|
||||||
{ "rot90", Fx_rot90, 0, 0 },
|
{ "rot90", Fx_rot90, 0, 0 },
|
||||||
|
{ "cmixa", Fx_cmixa, 0, 1 },
|
||||||
{ "xper", Fx_xper, 0, 1 },
|
{ "xper", Fx_xper, 0, 1 },
|
||||||
{ NULL, 0, 0 }
|
{ NULL, 0, 0 }
|
||||||
};
|
};
|
||||||
@ -157,6 +158,10 @@ switch (action) {
|
|||||||
case Fx_rot90:
|
case Fx_rot90:
|
||||||
foo = fimg_rotate_90(&src, &dest, 0); break;
|
foo = fimg_rotate_90(&src, &dest, 0); break;
|
||||||
|
|
||||||
|
case Fx_cmixa:
|
||||||
|
fimg_copy_data(&src, &dest);
|
||||||
|
foo = fimg_colors_mixer_a(&dest, 2.0); break;
|
||||||
|
|
||||||
case Fx_halfsz0:
|
case Fx_halfsz0:
|
||||||
fprintf(stderr, "halfsize was not implemented\n");
|
fprintf(stderr, "halfsize was not implemented\n");
|
||||||
return -3;
|
return -3;
|
||||||
|
Loading…
Reference in New Issue
Block a user