forked from tTh/FloatImg
experiment on incrustation
This commit is contained in:
parent
5d121dee87
commit
6e410e5f50
5
.gitignore
vendored
5
.gitignore
vendored
@ -76,3 +76,8 @@ Fonderie/singlepass
|
||||
Fonderie/crapdef.h
|
||||
Fonderie/crapstr.h
|
||||
|
||||
experiment/assemblage
|
||||
experiment/*.fimg
|
||||
experiment/*.pnm
|
||||
experiment/*.o
|
||||
|
||||
|
@ -1 +1,16 @@
|
||||
# plasma experiment
|
||||
|
||||
# experiments
|
||||
|
||||
|
||||
COPT = -Wall -fpic -g -DDEBUG_LEVEL=0 -lm
|
||||
DEPS = ../floatimg.h ../libfloatimg.a Makefile
|
||||
LIBS = -ltiff -lpnglite -lcfitsio
|
||||
|
||||
all: assemblage
|
||||
|
||||
incrustator.o: incrustator.c incrustator.h Makefile
|
||||
gcc -c $(COPT) $<
|
||||
|
||||
assemblage: assemblage.c Makefile incrustator.o
|
||||
gcc $(COPT) $< incrustator.o ../libfloatimg.a $(LIBS) -o $@
|
||||
|
||||
|
@ -1 +1,3 @@
|
||||
# PLASMA EXPERIMENT
|
||||
|
||||
# ASSEMBLAGE
|
||||
|
||||
|
69
experiment/assemblage.c
Normal file
69
experiment/assemblage.c
Normal file
@ -0,0 +1,69 @@
|
||||
/*
|
||||
* assemblage experimental
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "../floatimg.h"
|
||||
|
||||
#include "incrustator.h"
|
||||
|
||||
int verbosity;
|
||||
|
||||
/* ---------------------------------------------- ~~~~~~~~~~~~~~~~ */
|
||||
int premier_essai(int largeur, int hauteur, char *outname)
|
||||
{
|
||||
FloatImg grande, incrust;
|
||||
int foo;
|
||||
|
||||
foo = fimg_create(&grande, largeur, hauteur, FIMG_TYPE_RGB);
|
||||
if (foo) {
|
||||
fprintf(stderr, "%s: Kkrkr %d pour create grande\n", __func__, foo);
|
||||
return -1;
|
||||
}
|
||||
fimg_vdeg_a(&grande, 13.37);
|
||||
|
||||
foo = fimg_create(&incrust, 640, 480, FIMG_TYPE_RGB);
|
||||
if (foo) {
|
||||
fprintf(stderr, "%s: Kkrkr %d pour create incrust\n", __func__, foo);
|
||||
return -1;
|
||||
}
|
||||
fimg_drand48(&incrust, 13.37);
|
||||
|
||||
foo = incrustator_0(&incrust, &grande, 100, 100, 0);
|
||||
if (foo) {
|
||||
fprintf(stderr, "%s: Kkrkr %d sur incrustator_0\n", __func__, foo);
|
||||
return -1;
|
||||
}
|
||||
|
||||
foo = fimg_export_picture(&grande, outname, 0);
|
||||
if (foo) {
|
||||
fprintf(stderr, "%s: error %d export '%s'\n", __func__,
|
||||
foo, outname);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
/* ---------------------------------------------- ~~~~~~~~~~~~~~~~ */
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
int foo;
|
||||
|
||||
verbosity = 1;
|
||||
|
||||
fimg_print_version(1);
|
||||
|
||||
foo = premier_essai(1280, 1024, "out.pnm");
|
||||
if (foo) {
|
||||
fprintf(stderr, "EPIC FAIL %s\n", argv[0]);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
/* ---------------------------------------------- ~~~~~~~~~~~~~~~~ */
|
||||
|
||||
|
||||
|
52
experiment/incrustator.c
Normal file
52
experiment/incrustator.c
Normal file
@ -0,0 +1,52 @@
|
||||
/*
|
||||
* incrustator experimental
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#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; y<psrc->height; 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->height;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
/* ---------------------------------------------------------------- */
|
7
experiment/incrustator.h
Normal file
7
experiment/incrustator.h
Normal file
@ -0,0 +1,7 @@
|
||||
/*
|
||||
* incrustator experimental
|
||||
*/
|
||||
|
||||
|
||||
int incrustator_0(FloatImg *psrc, FloatImg *pdst,
|
||||
int xpos, int ypos, int flags);
|
Loading…
Reference in New Issue
Block a user