108 lines
2.2 KiB
C
108 lines
2.2 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;
|
|
static int chainfilter;
|
|
|
|
/* -------------------------------------------------------------- */
|
|
int single_init(int next, char *dest, int fxchain)
|
|
{
|
|
int foo;
|
|
struct stat stbuf;
|
|
|
|
#if DEBUG_LEVEL
|
|
fprintf(stderr, ">>> %s ( %d '%s' %d )\n", __func__,
|
|
next, dest, fxchain);
|
|
#endif
|
|
|
|
nextpng = next;
|
|
chainfilter = fxchain;
|
|
|
|
foo = stat(dest, &stbuf);
|
|
if (foo) {
|
|
perror("stat dest dir");
|
|
return -2;
|
|
}
|
|
if (S_IFDIR != (stbuf.st_mode & S_IFMT)) {
|
|
fprintf(stderr, "! %s must be a directory\n", dest);
|
|
return -3;
|
|
}
|
|
|
|
destination = strdup(dest); /* have a static copy */
|
|
|
|
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++; counter++;
|
|
|
|
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, "%s : %s\n", __FILE__, title);
|
|
fprintf(stderr, " nextpng %d\n", nextpng);
|
|
fprintf(stderr, " counter %d\n", counter);
|
|
fprintf(stderr, " chainfilter %d\n", chainfilter);
|
|
|
|
fprintf(stderr, " destination %s\n", destination);
|
|
|
|
if (k) {
|
|
|
|
}
|
|
|
|
return -1;
|
|
}
|
|
/* -------------------------------------------------------------- */
|