added a mirror function

This commit is contained in:
tth
2021-04-26 11:43:42 +02:00
parent b3de3b96f7
commit 9ddbef4e91
6 changed files with 87 additions and 5 deletions

View File

@@ -5,6 +5,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "../floatimg.h"
@@ -135,4 +136,43 @@ for (yd=0; yd<rect->h; yd++) {
return 0;
}
/* --------------------------------------------------------------------- */
int fimg_mirror(FloatImg *src, FloatImg *dst, int notused)
{
float *fptr;
int line, col, offl;
#if DEBUG_LEVEL
fprintf(stderr, ">>> %s ( %p %p 0x%04x )\n", __func__,
src, dst, notused);
#endif
if (fimg_images_not_compatible(src, dst)) {
fprintf(stderr, "bad karma in %s\n", __func__);
return -9;
}
if (NULL == (fptr=alloca(src->width*sizeof(float)))) {
fprintf(stderr, "%s: no mem available\n", __func__);
#if MUST_ABORT
abort();
#endif
return -11;
}
for (line=0; line<src->height; line++) {
offl = line * src->width;
for (col=0; col<src->width; col++)
fptr[(src->width-1) - col] = src->R[offl+col];
memcpy(dst->R+offl, fptr, src->width*sizeof(float));
for (col=0; col<src->width; col++)
fptr[(src->width-1) - col] = src->G[offl+col];
memcpy(dst->G+offl, fptr, src->width*sizeof(float));
for (col=0; col<src->width; col++)
fptr[(src->width-1) - col] = src->B[offl+col];
memcpy(dst->B+offl, fptr, src->width*sizeof(float));
}
return 0;
}
/* --------------------------------------------------------------------- */