/* * incrustator experimental */ #include #include #include "../floatimg.h" #include "incrustator.h" extern int verbosity; /* ---------------------------------------------------------------- */ int incrustator_0(FloatImg *psrc, FloatImg *pdst, int xpos, int ypos, int flags) { int y, srcpos, dstpos, szl; #if DEBUG_LEVEL fprintf(stderr, ">>> %s ( %p %p %d %d 0x%04X\n", __func__, psrc, pdst, xpos, ypos, flags); #endif if (verbosity > 1) { fimg_describe(psrc, "source"); fimg_describe(pdst, "destination"); } /* check boudaries */ if ( (xpos < 0) || (xpos > pdst->width - psrc->width) || (ypos < 0) || (ypos > pdst->height - psrc->height) ) { fprintf(stderr, "%s: boudary error\n", __func__); return -2; } /* move all the data by looping over lines */ srcpos = 0; szl = psrc->width * sizeof(float); for (y=0; yheight; y++) { dstpos = ((y + ypos) * pdst->width) + xpos; // fprintf(stderr, " %7d %7d %7d\n", y, srcpos, dstpos); memcpy(pdst->R + dstpos, psrc->R + srcpos, szl); memcpy(pdst->G + dstpos, psrc->G + srcpos, szl); memcpy(pdst->B + dstpos, psrc->B + srcpos, szl); srcpos += psrc->width; } return 0; } /* ---------------------------------------------------------------- */