garbage collecting again
This commit is contained in:
@@ -39,6 +39,7 @@ La gestion de la ligne de commande est désastreuse. **À REFAIRE**
|
||||
|
||||
Pas mal de façons de mettre un cadre sur l'image.
|
||||
Niveau de kitchitude assez élevé.
|
||||
Paramètres mal documentés.
|
||||
|
||||
## tga_combine
|
||||
|
||||
|
||||
@@ -127,7 +127,7 @@ memset(prect, 0, sizeof(Image_Rect));
|
||||
|
||||
cptr = strdup(str);
|
||||
#if DEBUG_LEVEL
|
||||
fprintf(stder, "copie dans cptr %p\n", cptr);
|
||||
fprintf(stderr, "copie dans cptr %p\n", cptr);
|
||||
#endif
|
||||
|
||||
idx = 0;
|
||||
@@ -135,6 +135,9 @@ cptr = strtok(cptr, ",");
|
||||
while (NULL != cptr) {
|
||||
fprintf(stderr, "%3d %p = '%s'\n", idx, cptr, cptr);
|
||||
foo = sscanf(cptr, "%d", &val);
|
||||
/*
|
||||
* no error check ?
|
||||
*/
|
||||
fprintf(stderr, "val = %d\n", val);
|
||||
switch (idx) {
|
||||
case 0: prect->x = val; break;
|
||||
@@ -227,7 +230,7 @@ for (foo=prem, idxt=0; foo<argc; foo++, idxt++)
|
||||
|
||||
case 'd':
|
||||
/* the 'd' is for 'double precision', not for 'decimal' */
|
||||
if (sscanf(argv[foo], "%lf", &flottant)==1)
|
||||
if (1 == sscanf(argv[foo], "%lf", &flottant))
|
||||
{
|
||||
params[idxt].type = 'd';
|
||||
params[idxt].p.d = flottant;
|
||||
@@ -298,8 +301,7 @@ fflush(stdout);
|
||||
|
||||
int GIP(int rang)
|
||||
{
|
||||
if (rang<0 || params[rang].type!='i')
|
||||
{
|
||||
if (rang<0 || params[rang].type!='i') {
|
||||
fprintf(stderr, "erreur GIP %d\n", rang);
|
||||
exit(5);
|
||||
}
|
||||
@@ -308,8 +310,7 @@ return params[rang].p.i;
|
||||
|
||||
int GCP(int rang)
|
||||
{
|
||||
if (rang<0 || params[rang].type!='c')
|
||||
{
|
||||
if (rang<0 || params[rang].type!='c') {
|
||||
fprintf(stderr, "erreur GCP %d\n", rang);
|
||||
exit(5);
|
||||
}
|
||||
@@ -322,8 +323,7 @@ int GIPdef(int rang, int def)
|
||||
#if DEBUG_LEVEL
|
||||
fprintf(stderr, "Warning ! %s is not tested\n", __func__);
|
||||
#endif
|
||||
if (rang<0 || params[rang].type!='i')
|
||||
{
|
||||
if (rang<0 || params[rang].type!='i') {
|
||||
return def;
|
||||
}
|
||||
return params[rang].p.i;
|
||||
@@ -334,8 +334,7 @@ char * GSP(int rang)
|
||||
#if DEBUG_LEVEL > 1
|
||||
fprintf(stderr, "GetStringParameter(%d)\n", rang);
|
||||
#endif
|
||||
if (rang<0 || params[rang].type!='s')
|
||||
{
|
||||
if (rang<0 || params[rang].type!='s') {
|
||||
fprintf(stderr, "erreur GSP %d\n", rang);
|
||||
exit(5);
|
||||
}
|
||||
@@ -347,8 +346,7 @@ return params[rang].p.s;
|
||||
|
||||
double GDP(int rang)
|
||||
{
|
||||
if (rang<0 || params[rang].type!='d')
|
||||
{
|
||||
if (rang<0 || params[rang].type!='d') {
|
||||
fprintf(stderr, "erreur GDP %d\n", rang);
|
||||
exit(5);
|
||||
}
|
||||
@@ -357,8 +355,7 @@ return params[rang].p.d;
|
||||
|
||||
int GFP(int rang)
|
||||
{
|
||||
if (rang<0 || params[rang].type!='f')
|
||||
{
|
||||
if (rang<0 || params[rang].type!='f') {
|
||||
fprintf(stderr, "erreur GFP %d\n", rang);
|
||||
exit(5);
|
||||
}
|
||||
@@ -395,8 +392,7 @@ fprintf(stderr, "%s : %s, argc=%d\n", __func__, argv[0], argc);
|
||||
envvar = getenv(NOM_VAR_ENV_VERBOSE);
|
||||
if ( (envvar!=NULL) && !strcmp(envvar, "yes") ) flag = 1;
|
||||
|
||||
if (flag || force)
|
||||
{
|
||||
if (flag || force) {
|
||||
fprintf(stderr, "TGA(%d) %d arg:", getpid(), argc);
|
||||
for (foo=0; foo<argc; foo++)
|
||||
fprintf(stderr, " %s", argv[foo]);
|
||||
@@ -410,7 +406,7 @@ int set_new_seed(int k)
|
||||
char *ptr;
|
||||
long seed;
|
||||
|
||||
/* if (k) fprintf(stderr, "%s: k %d\n", __func__, k); */
|
||||
if (k) fprintf(stderr, "%s: k %d\n", __func__, k);
|
||||
|
||||
if (NULL==(ptr=getenv("FIXED_SEED"))) {
|
||||
/* no fixed seed in context, doing semi-random */
|
||||
|
||||
@@ -17,7 +17,7 @@ fprintf(stderr, " compiled %s at %s\n", __DATE__, __TIME__);
|
||||
|
||||
fprintf(stderr, "Usage:\n\ttga_applymap M src.tga color.map dst.tga\n");
|
||||
fprintf(stderr, " M is 1 or 2\n");
|
||||
Image_print_version(0);
|
||||
if (flag) Image_print_version(0);
|
||||
exit(5);
|
||||
}
|
||||
/*::------------------------------------------------------------------::*/
|
||||
@@ -33,34 +33,29 @@ if (argc==2 && !strcmp(argv[1], "-?")) usage(1);
|
||||
|
||||
if (argc != 5) usage(0);
|
||||
|
||||
if ( (src=Image_TGA_alloc_load(argv[2])) == NULL )
|
||||
{
|
||||
if ( (src=Image_TGA_alloc_load(argv[2])) == NULL ) {
|
||||
fprintf(stderr, "can't load '%s'\n", argv[2]);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if ( (foo=Image_load_color_Map(argv[3], "map", &map)) )
|
||||
{
|
||||
if ( (foo=Image_load_color_Map(argv[3], "map", &map)) ) {
|
||||
fprintf(stderr, "%s: %s: err%d %s\n", argv[0], argv[3],
|
||||
foo, Image_err2str(foo));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (must_be_verbose())
|
||||
{
|
||||
if (must_be_verbose()) {
|
||||
fprintf(stderr, "il y a %d couleurs dans la palette '%s'\n",
|
||||
map.nbre, argv[3]);
|
||||
}
|
||||
|
||||
if ( (dst=Image_clone(src, 0))==NULL )
|
||||
{
|
||||
if ( (dst=Image_clone(src, 0))==NULL ) {
|
||||
fprintf(stderr, "can't clone %p, exiting...\n", src);
|
||||
exit(2);
|
||||
}
|
||||
|
||||
/* ----------- */
|
||||
switch (argv[1][0])
|
||||
{
|
||||
switch (argv[1][0]) {
|
||||
default:
|
||||
case '1':
|
||||
foo=Image_apply_Map(src, dst, &map);
|
||||
@@ -74,21 +69,18 @@ switch (argv[1][0])
|
||||
}
|
||||
/* ----------- */
|
||||
|
||||
if (foo)
|
||||
{
|
||||
if (foo) {
|
||||
fprintf(stderr, "%s: apply map: erreur %d: %s\n",
|
||||
argv[0], foo, Image_err2str(foo));
|
||||
}
|
||||
|
||||
foo = Image_TGA_save(argv[4], dst, 0);
|
||||
if (foo)
|
||||
{
|
||||
if (foo) {
|
||||
fprintf(stderr, "%s: TGA_save: err #%d\n\t\t %s\n",
|
||||
argv[0], foo, Image_err2str(foo));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
fprintf(stderr, "apply map ok\n");
|
||||
exit (0);
|
||||
}
|
||||
/*::------------------------------------------------------------------::*/
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
#define MIX_WAOU 80
|
||||
#define MIX_WAUO 81
|
||||
#define MIX_CIRCLE0 84
|
||||
#define MIX_CIRCLE1 85 /* new 6 juillet 2022 */
|
||||
#define MIX_HDEG 100
|
||||
#define MIX_VDEG 101
|
||||
#define MIX_PROTO 110
|
||||
@@ -77,6 +78,7 @@ mot_clef les_types[] =
|
||||
{ "waou", MIX_WAOU, "iiii", h_waou },
|
||||
{ "wauo", MIX_WAUO, "i", h_wauo },
|
||||
{ "circle0", MIX_CIRCLE0, "i", h_circle0 },
|
||||
{ "circle1", MIX_CIRCLE1, "i", "don't know" },
|
||||
|
||||
{ "hdeg", MIX_HDEG, "f", h_deg },
|
||||
{ "vdeg", MIX_VDEG, "f", h_deg },
|
||||
@@ -254,6 +256,10 @@ switch (mode)
|
||||
case MIX_CIRCLE0:
|
||||
foo = Image_combine_cercle_flou(s1, s2, d, 0);
|
||||
break;
|
||||
case MIX_CIRCLE1:
|
||||
fprintf(stderr, "pid %d is circle trashing\n", getpid());
|
||||
foo = Image_combine_cercle_flou(s1, s2, d, 1);
|
||||
break;
|
||||
|
||||
/* FIXME 16 sept 2009 : je pense que hdeg et vdeg sont inverses */
|
||||
case MIX_HDEG:
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
#define EFF_PIXELY 34 /* new 30 mars 2007 */
|
||||
#define EFF_FIVE 35 /* new 16 dec 2007 */
|
||||
#define EFF_WARP_0 36 /* new 17 janv 2015 */
|
||||
#define EFF_ROTULACION 37 /* new 6 juillet 2022 */
|
||||
#define EFF_RECURSE 40
|
||||
#define EFF_RGBMSKH 41
|
||||
#define EFF_RGBMSKV 42
|
||||
@@ -67,6 +68,8 @@ mot_clef mots_clef[] =
|
||||
{ "gray", EFF_GRAY, "", "" },
|
||||
{ "grayk", EFF_GRAYK, "iii", "3 coefs" },
|
||||
{ "mirror", EFF_MIRROR, "", "" },
|
||||
{ "updown", EFF_UPDOWN, "", "upside down" },
|
||||
{ "rotulacion", EFF_ROTULACION, "d", "angle in degree" },
|
||||
{ "extrbits0", EFF_EXTRBIT0, "iii", "shifts for r, g & b" },
|
||||
{ "mosaic", EFF_MOSAIC, "", "?" },
|
||||
{ "mosaic0", EFF_MOSAIC0, "iif", "?" },
|
||||
@@ -74,7 +77,7 @@ mot_clef mots_clef[] =
|
||||
{ "negate", EFF_NEGATE, "", "" },
|
||||
{ "seuil", EFF_SEUIL, "iii", "rgb thresholds" },
|
||||
{ "degoule", EFF_DEGOULE, "ii", "k1 & k2 ? wtf ?" },
|
||||
{ "noise", EFF_NOISE, "i", "0..100" },
|
||||
{ "noise", EFF_NOISE, "i", "0..255" },
|
||||
{ "pixelX", EFF_PIXELX, "", "prototype" },
|
||||
{ "pixelY", EFF_PIXELY, "", "prototype" },
|
||||
{ "efive", EFF_FIVE, "", "got it, code it" },
|
||||
@@ -93,7 +96,6 @@ mot_clef mots_clef[] =
|
||||
{ "sinwave1", EFF_SINW1, "dddddd", "strange effect" },
|
||||
{ "swapcol", EFF_SWAPCOL, "s", "rg rb bg" },
|
||||
{ "swapnibble", EFF_SWAPNIBBLE, "", "swap all pix nibbles" },
|
||||
{ "updown", EFF_UPDOWN, "", "upside down" },
|
||||
{ "shift_xy", EFF_SHIFT_XY, "ii", "les deux offsets" },
|
||||
{ "water", EFF_WATER, "i", "'par' is water distance" },
|
||||
/* { "fukung", EFF_FUKUNG, "i", "OMG ! WTF ?" }, */
|
||||
@@ -110,18 +112,16 @@ mot_clef mots_clef[] =
|
||||
/*::------------------------------------------------------------------::*/
|
||||
void usage(int flag)
|
||||
{
|
||||
fprintf(stderr, "*** tga_effects v 0.1.56 [%s] %s\n",
|
||||
fprintf(stderr, "*** tga_effects v 0.1.58 [%s] %s\n",
|
||||
TGA_OUTILS_VERSION, TGA_OUTILS_COPYLEFT);
|
||||
|
||||
fprintf(stderr, "\nUsage:\n");
|
||||
fprintf(stderr, "\ttga_effects <src.tga> EFF <dst.tga> [p1] ... [p8]\n");
|
||||
if (flag)
|
||||
{
|
||||
if (flag) {
|
||||
Image_print_version(0);
|
||||
liste_mots_clefs(mots_clef, 42);
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
fprintf(stderr, "\ttry 'tga_effects list' for a list.\n");
|
||||
}
|
||||
exit(5);
|
||||
@@ -236,7 +236,7 @@ srand(getpid());
|
||||
idx = cherche_mot_clef(argv[2], mots_clef, &commande, &nbargs);
|
||||
if (idx < 0)
|
||||
{
|
||||
fprintf(stderr, "tga_effects: mot-clef %s inconnu...\n", argv[2]);
|
||||
fprintf(stderr, "tga_effects: mot-clef '%s' inconnu...\n", argv[2]);
|
||||
exit (5);
|
||||
}
|
||||
|
||||
@@ -284,6 +284,11 @@ switch (commande)
|
||||
case EFF_MIRROR:
|
||||
foo = Image_mirror(src, dst, 0);
|
||||
break;
|
||||
case EFF_ROTULACION: /* new 6 juillet 2022 */
|
||||
angle = GDP(0);
|
||||
fprintf(stderr, "%s: angle rotulacion = %f\n", __FILE__, angle);
|
||||
foo = Image_center_rotate(src, dst, angle);
|
||||
break;
|
||||
case EFF_EXTRBIT0:
|
||||
foo = Image_extrbits_0(src, dst, GIP(0), GIP(1), GIP(2));
|
||||
break;
|
||||
@@ -326,9 +331,10 @@ switch (commande)
|
||||
case EFF_WARP_0:
|
||||
angle = 33.5;
|
||||
xc = GIP(1); yc = GIP(2);
|
||||
fprintf(stderr, "WARP_0 %f %d %d\n", angle, xc, yc);
|
||||
foo = Image_warp_essai_0(src, dst, angle, xc, yc);
|
||||
fprintf(stderr, " -> %d\n", foo);
|
||||
#if DEBUG_LEVEL
|
||||
fprintf(stderr, "warp0 %f %d %d > %d\n", angle, xc, yc, foo);
|
||||
#endif
|
||||
break;
|
||||
case EFF_RECURSE:
|
||||
#if DEBUG_LEVEL
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
#define PCX8 60
|
||||
#define PCX24 61
|
||||
#define PGMHF 80
|
||||
#define TIFF 90
|
||||
|
||||
mot_clef mots_clef[] =
|
||||
{
|
||||
@@ -28,6 +29,7 @@ mot_clef mots_clef[] =
|
||||
{ "pcx8", PCX8, "i", "plop" },
|
||||
{ "pcx24", PCX24, "i", "plup" },
|
||||
{ "pgmhf", PGMHF, "", "height fields for POV" },
|
||||
{ "tiff", TIFF, "", "" },
|
||||
{ NULL, 0, NULL, NULL }
|
||||
};
|
||||
|
||||
@@ -35,13 +37,12 @@ mot_clef mots_clef[] =
|
||||
|
||||
void usage(int flag)
|
||||
{
|
||||
fprintf(stderr, "*** tga_export v 0.0.9 [%s] %s\n",
|
||||
fprintf(stderr, "*** tga_export v 0.0.10 [%s] %s\n",
|
||||
TGA_OUTILS_VERSION, TGA_OUTILS_COPYLEFT);
|
||||
|
||||
fprintf(stderr, "tga_export source.tga format destination.xxx [params]\n\n");
|
||||
|
||||
if (flag)
|
||||
{
|
||||
if (flag) {
|
||||
liste_mots_clefs(mots_clef, 42);
|
||||
}
|
||||
exit(5);
|
||||
@@ -65,13 +66,11 @@ if (argc < 4) usage(1);
|
||||
|
||||
/* recherche du type d'exportation demandé */
|
||||
idx = cherche_mot_clef(argv[2], mots_clef, &commande, &nbargs);
|
||||
if (idx < 0)
|
||||
{
|
||||
if (idx < 0) {
|
||||
fprintf(stderr, "tga_export: format %s inconnu...\n", argv[2]);
|
||||
exit (5);
|
||||
}
|
||||
if ( (argc-nbargs) != FIRST_PARAM )
|
||||
{
|
||||
if ( (argc-nbargs) != FIRST_PARAM ) {
|
||||
fprintf(stderr, "%s: bad number of parameters\n", argv[0]);
|
||||
exit(5);
|
||||
}
|
||||
@@ -79,14 +78,12 @@ if ( (argc-nbargs) != FIRST_PARAM )
|
||||
/* analyse des paramètres */
|
||||
foo = parse_parametres(argc, argv, mots_clef[idx].ptypes, FIRST_PARAM);
|
||||
|
||||
if ( (img=Image_TGA_alloc_load(argv[1]))==NULL )
|
||||
{
|
||||
if ( (img=Image_TGA_alloc_load(argv[1]))==NULL ) {
|
||||
fprintf(stderr, "tga_export: can't load '%s'\n", argv[1]);
|
||||
exit(5);
|
||||
}
|
||||
|
||||
switch (commande)
|
||||
{
|
||||
switch (commande) {
|
||||
case PGM0:
|
||||
foo = Image_wr_pgm_0(argv[3], img, GCP(0));
|
||||
break;
|
||||
@@ -109,10 +106,10 @@ switch (commande)
|
||||
break;
|
||||
}
|
||||
|
||||
if (foo)
|
||||
{
|
||||
if (foo) {
|
||||
fprintf(stderr, "tga_export (%s) ", argv[2]);
|
||||
Image_print_error("ecriture fichier", foo);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -39,18 +39,16 @@ mot_clef mots_clef[] =
|
||||
/*::------------------------------------------------------------------::*/
|
||||
void usage(int flag)
|
||||
{
|
||||
fprintf(stderr, "*** tga_filtres v 0.0.17 [%s] %s\n",
|
||||
fprintf(stderr, "*** tga_filtres v 0.0.18 [%s] %s\n",
|
||||
TGA_OUTILS_VERSION, TGA_OUTILS_COPYLEFT);
|
||||
|
||||
fprintf(stderr, "\nUsage:\n");
|
||||
fprintf(stderr, "\ttga_filtres <src.tga> FILTR <dst.tga> [p1] ... [pn]\n");
|
||||
if (flag)
|
||||
{
|
||||
if (flag) {
|
||||
Image_print_version(0);
|
||||
liste_mots_clefs(mots_clef, 42);
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
fprintf(stderr, "\ttry 'tga_filtres list' for a list.\n");
|
||||
}
|
||||
exit(5);
|
||||
@@ -77,8 +75,7 @@ srand(getpid());
|
||||
|
||||
/* recherche du type d'effet demandé */
|
||||
idx = cherche_mot_clef(argv[2], mots_clef, &commande, &nbargs);
|
||||
if (idx < 0)
|
||||
{
|
||||
if (idx < 0) {
|
||||
fprintf(stderr, "tga_filtres: mot-clef %s inconnu...\n", argv[2]);
|
||||
exit (5);
|
||||
}
|
||||
@@ -88,8 +85,7 @@ fprintf(stderr, "%s --> idx=%d, commande=%d, %d args\n",
|
||||
fprintf(stderr, "argc = %d\n", argc);
|
||||
#endif
|
||||
|
||||
if ( (argc-nbargs) != FIRST_PARAM )
|
||||
{
|
||||
if ( (argc-nbargs) != FIRST_PARAM ) {
|
||||
fprintf(stderr, "%s: bad number of parameters\n", argv[0]);
|
||||
exit(5);
|
||||
}
|
||||
@@ -97,14 +93,12 @@ if ( (argc-nbargs) != FIRST_PARAM )
|
||||
/* analyse des paramètres */
|
||||
foo = parse_parametres(argc, argv, mots_clef[idx].ptypes, FIRST_PARAM);
|
||||
|
||||
if ((src = Image_TGA_alloc_load(argv[1]))==NULL)
|
||||
{
|
||||
if ((src = Image_TGA_alloc_load(argv[1]))==NULL) {
|
||||
fprintf(stderr, "tga_filtres: can't load image %s\n", argv[1]);
|
||||
exit(5);
|
||||
}
|
||||
|
||||
if ( (dst=Image_clone(src, 0)) == NULL )
|
||||
{
|
||||
if ( (dst=Image_clone(src, 0)) == NULL ) {
|
||||
fprintf(stderr, "tga_filtres: can't clone %p\n", src);
|
||||
exit(1);
|
||||
}
|
||||
@@ -145,9 +139,10 @@ switch (commande)
|
||||
break;
|
||||
}
|
||||
|
||||
if (foo)
|
||||
Image_print_error("filtrage ", foo);
|
||||
|
||||
if (foo) {
|
||||
Image_print_error("tga_filtres ", foo);
|
||||
exit(1);
|
||||
}
|
||||
foo = Image_TGA_save(argv[3], dst, 0);
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -84,13 +84,11 @@ if (must_be_verbose())
|
||||
#endif
|
||||
|
||||
idx = cherche_mot_clef(argv[3], mots_clef, &commande, &nbargs);
|
||||
if (idx < 0)
|
||||
{
|
||||
if (idx < 0) {
|
||||
fprintf(stderr, "tga_incrust: mot-clef '%s' inconnu...\n", argv[3]);
|
||||
exit (5);
|
||||
}
|
||||
if ( (argc-nbargs) != FIRST_PARAM )
|
||||
{
|
||||
if ( (argc-nbargs) != FIRST_PARAM ) {
|
||||
fprintf(stderr, "%s: bad number of parameters\n", argv[0]);
|
||||
#if DEBUG_LEVEL
|
||||
fprintf(stderr, "argc=%d nbargs=%d FIRST_PARAM=%d\n",
|
||||
@@ -106,14 +104,12 @@ foo = parse_parametres(argc, argv, mots_clef[idx].ptypes, FIRST_PARAM);
|
||||
fprintf(stderr, "parse params -> %d\n", foo);
|
||||
#endif
|
||||
|
||||
if (NULL==(where=Image_TGA_alloc_load(argv[1])))
|
||||
{
|
||||
if (NULL==(where=Image_TGA_alloc_load(argv[1]))) {
|
||||
fprintf(stderr, "can't load %s\n", argv[1]);
|
||||
exit(2);
|
||||
}
|
||||
|
||||
if (NULL==(what=Image_TGA_alloc_load(argv[2])))
|
||||
{
|
||||
if (NULL==(what=Image_TGA_alloc_load(argv[2]))) {
|
||||
fprintf(stderr, "can't load %s\n", argv[2]);
|
||||
exit(2);
|
||||
}
|
||||
@@ -134,8 +130,7 @@ switch (commande)
|
||||
Image_DeAllocate(what); free(what);
|
||||
|
||||
foo = Image_TGA_save(argv[4], where, 0);
|
||||
if (foo)
|
||||
{
|
||||
if (foo) {
|
||||
fprintf(stderr, "save -> %d\n", foo);
|
||||
}
|
||||
Image_DeAllocate(where); free(where);
|
||||
|
||||
Reference in New Issue
Block a user