FloatImg/Fonderie/single.c

96 lines
2.0 KiB
C

/*
SINGLE
experimental and/or testing code, do not use in
production.
*/
#include <stdio.h>
#include <string.h>
#include <sys/stat.h>
#include "../floatimg.h"
#include "sfx.h"
#include "filterstack.h"
#include "crapulator.h"
#include "single.h"
/* -------------------------------------------------------------- */
/*
* singleton/private variables
*/
static int nextpng, counter;
static char *destination;
/* -------------------------------------------------------------- */
int single_init(int next, char *dest, char *sfxchain)
{
int foo;
struct stat stbuf;
fprintf(stderr, ">>> %s ( %d '%s' )\n", __func__, next, dest);
nextpng = next;
foo = stat(dest, &stbuf);
if (foo) {
perror("stat dest dir");
return -2;
}
// fprintf(stderr, "\t%s type = %04x\n", dest, stbuf.st_mode & S_IFMT);
if (S_IFDIR != (stbuf.st_mode & S_IFMT)) {
fprintf(stderr, "! %s must be a directory\n", dest);
return -3;
}
destination = dest;
return 0;
}
/* -------------------------------------------------------------- */
int single_push_picture(FloatImg *pimg)
{
int foo;
char line[1000], buff[100];
#if DEBUG_LEVEL
fprintf(stderr, ">>> %s ( %p )\n", __func__, pimg);
#endif
strncpy(line, destination, 100);
if ('/' != line[strlen(line)-1]) {
fprintf(stderr, "adding '/'\n");
strcat(line, "/");
}
// fprintf(stderr, " destdir = '%s'\n", line);
sprintf(buff, "%05d.png", nextpng);
strcat(line, buff);
// fprintf(stderr, "writing %p to '%s'\n", pimg, line);
foo = fimg_export_picture(pimg, line, 0);
if (foo) {
fprintf(stderr, "%s: err %d on export\n", __func__, foo);
return foo;
}
nextpng++;
return 0;
}
/* -------------------------------------------------------------- */
int single_print_state(char *title, int k)
{
#if DEBUG_LEVEL
fprintf(stderr, ">>> %s ( '%s' %d )\n", __func__, title, k);
#endif
fprintf(stderr, "nextpng %d\n", nextpng);
fprintf(stderr, "counter %d\n", counter);
return -1;
}
/* -------------------------------------------------------------- */