garbage collecting again

This commit is contained in:
tth
2022-07-07 12:52:00 +02:00
parent 6455be4d5b
commit 95beee167d
43 changed files with 343 additions and 341 deletions

View File

@@ -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

View File

@@ -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 */

View File

@@ -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);
}
/*::------------------------------------------------------------------::*/

View File

@@ -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:

View File

@@ -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

View File

@@ -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;

View File

@@ -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;

View File

@@ -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);