Compare commits

...

2 Commits

Author SHA1 Message Date
tTh
7e09d1b490 error handling + cosmetic 2024-07-31 22:24:32 +02:00
tTh
5b2320b421 more doc 2024-07-31 22:21:54 +02:00
2 changed files with 85 additions and 32 deletions

View File

@ -14,7 +14,7 @@ Usage:
tga_filtres <src.tga> FILTR <dst.tga> [p1] ... [pn] tga_filtres <src.tga> FILTR <dst.tga> [p1] ... [pn]
-+- This is the `tthimage' library v0.4.50 (dwtfywl 2022) tTh -+- This is the `tthimage' library v0.4.50 (dwtfywl 2022) tTh
commande | type arg | explication commande | type arg | explication
------------+----------+------------------------------------ ------------+----------+------------------------------
liss2x2 | | lissage 2x2 liss2x2 | | lissage 2x2
hipass | | hipass | |
lopass | | lopass | |
@ -31,7 +31,7 @@ La colonne du milieu indique le type des paramètres :
## tga_alpha ## tga_alpha
Manipulation du canal alpha (la transparence), lequel canal Manipulation du canal alpha (la transparence), lequel canal
est globalement mal géré par l'ensemble de libtthimage. est globalement mal géré par l'ensemble de la libtthimage.
## tga_applymap ## tga_applymap
@ -40,6 +40,12 @@ logiciel de fractales sous ms-dos :
[Fractint](https://fractint.org/). Quelques exemples de [Fractint](https://fractint.org/). Quelques exemples de
ces fichiers sont dans le répertoire `Datas/` du projet. ces fichiers sont dans le répertoire `Datas/` du projet.
Vous rencontrerez parfois des messages d'erreur comme
« *color map is to big* » ou « *only 97 entries in foo.map* ».
Pas d'inquiétude, tout va bien se passer.
Dans le premier cas, les lignes en excédent sont ignorées,
et dans le second, les valeurs manquantes sont mises au noir.
La gestion de la ligne de commande est désastreuse. **À REFAIRE** La gestion de la ligne de commande est désastreuse. **À REFAIRE**
## tga_cadre ## tga_cadre
@ -54,7 +60,6 @@ Paramètres mal documentés.
Usage: Usage:
tga_combine s1.tga s2.tga MODE d.tga [PARAMS] tga_combine s1.tga s2.tga MODE d.tga [PARAMS]
``` ```
Il existe plein de façon de combiner deux images, la commande Il existe plein de façon de combiner deux images, la commande
`testtga list` vous les fera découvrir, la cinquième va vous étonner. `testtga list` vous les fera découvrir, la cinquième va vous étonner.
@ -76,9 +81,15 @@ Attendu avec impatience, il aura le support complet des PNG. Un jour...
## tga_makehf15 ## tga_makehf15
Pour les POViste acharnés.
## tga_to_text ## tga_to_text
Mis au point pour les imports dans d'autres langages. Mis au point pour les imports dans d'autres langages,
comme Awk, Fortran ou R. Chaque ligne du fichier généré
contient cinq champs : x, y, r, g, b.
Attention, il peut vite générer d'énormes fichiers.
## tga_mires ## tga_mires
@ -96,14 +107,58 @@ vraiment trop nulle...
## tga_tools ## tga_tools
Celui ci est très utile pour la recherche de problèmes ou l'automatisation Celui ci est très utile pour la recherche de problèmes ou l'automatisation
de certaines tâches. Exemple : de certaines tâches. Un exemple rapide :
``` ```
tth@konrad:~/Devel/libtthimage$ tga_tools getdimweb mire.tga tth@redlady:~/Devel/libtthimage$ tga_tools getdimweb foo.tga
width=512 height=512 width=640 height=480
tth@konrad:~/Devel/libtthimage$ tth@redlady:~/Devel/libtthimage$ tga_tools getdimpov foo.tga
-w640 -h480
tth@redlady:~/Devel/libtthimage$
``` ```
### version
### surface
### getdims, getdimx, getdimpov, getdimweb
renvoie une chaine de caractère donnant les dimensions de l'image
en différents formats.
### width, height
renvoie chacune des deux dimensions.
### grminmax
### message
Flags: un entier. Si non nul, change l'encre et le papier pour
d'autres valeurs. La chaine de caractère doit être (sjmsb) encodée
en CP-850, voire même comme celles du Locomotive du CPC.
### structs
Affichage d'information (boutisme, taille des structures) qui ne
seront utiles qu'aux codeurs.
```
tth@redlady:~/Devel/libtthimage/Tools$ ./tga_tools structs
petit = 1234 -> 34 12
grand = 12345678 -> 78 56 34 12 00 00 00 00
basic types : short=2 int=4 long=8 ptr=8
Image_Desc : 1296
Image_Rect : 24
RGBA : 16
A_BitPlane : 128
RGB_map : 1624
Image_Point : 8
```
### header
### timestamp
### prhisto
Calcul et affichage en mode texte de l'histogramme d'une image.
Un exemple d'utilisation avec gnuplot serait le bienvenu.
### tag7
### environ
### mk_rgb
### mk_hgrad
## genplot2 ## genplot2
Outil de tracé pseudo-générique et farci de bugs. *WIP ME HARDLY !* Outil de tracé pseudo-générique et farci de bugs. *WIP ME HARDLY !*

View File

@ -141,8 +141,7 @@ fprintf(stderr, "%s -> %s : %dx%d, rgb %d,%d,%d\n", __func__, fname, w, h,
r, g, b); r, g, b);
#endif #endif
if (w < 1 || h < 1) if (w < 1 || h < 1) {
{
fprintf(stderr, "%s : img dims %d %d ?\n", __func__, w, h); fprintf(stderr, "%s : img dims %d %d ?\n", __func__, w, h);
return 666; return 666;
} }
@ -168,8 +167,7 @@ Image_Desc *src;
fprintf(stderr, "timestamping '%s' to '%s' with '%s'\n", fnin, fnout, txt); fprintf(stderr, "timestamping '%s' to '%s' with '%s'\n", fnin, fnout, txt);
#endif #endif
if ( (src=Image_TGA_alloc_load(fnin)) == NULL ) if ( (src=Image_TGA_alloc_load(fnin)) == NULL ) {
{
fprintf(stderr, "tga_tools, load of '%s' failed in %s\n", fprintf(stderr, "tga_tools, load of '%s' failed in %s\n",
fnin, __func__); fnin, __func__);
exit(5); exit(5);
@ -207,15 +205,23 @@ if (must_be_verbose()) {
__func__, fnin, fnout, txt, flag); __func__, fnin, fnout, txt, flag);
} }
if ( (src=Image_TGA_alloc_load(fnin)) == NULL ) if ( (src=Image_TGA_alloc_load(fnin)) == NULL ) {
{
fprintf(stderr, "tga_tools, load of '%s' failed in %s\n", fprintf(stderr, "tga_tools, load of '%s' failed in %s\n",
fnin, __func__); fnin, __func__);
exit(5); exit(5);
} }
foo = Image_txt1_box_0(src, txt, posx, posy, 4, &pap, &ink, 0); foo = Image_txt1_box_0(src, txt, posx, posy, 4, &pap, &ink, 0);
Image_TGA_save(fnout, src, 0); if (foo) {
fprintf(stderr, "err txt1_box_0 = %d\n", foo);
return foo;
}
foo = Image_TGA_save(fnout, src, 0);
if (foo) {
fprintf(stderr, "%s: err TGA save = %d\n", __func__, foo);
return foo;
}
#if DEBUG_LEVEL #if DEBUG_LEVEL
fprintf(stderr, "%s : saving %s\n", __func__, fnout); fprintf(stderr, "%s : saving %s\n", __func__, fnout);
@ -234,21 +240,18 @@ if (flags) {
fprintf(stderr, "in %s, flags must be 0\n", __func__); fprintf(stderr, "in %s, flags must be 0\n", __func__);
} }
if ( (src=Image_TGA_alloc_load(filename)) == NULL ) if ( (src=Image_TGA_alloc_load(filename)) == NULL ) {
{
fprintf(stderr, "tga_tools, chargement '%s' failed\n", filename); fprintf(stderr, "tga_tools, chargement '%s' failed\n", filename);
exit(5); exit(5);
} }
foo = Image_histo_RGB(src, hr, hb, hg); foo = Image_histo_RGB(src, hr, hb, hg);
if (foo) if (foo) {
{
fprintf(stderr, "tga_tools, calcul histogramme: %d %s\n", fprintf(stderr, "tga_tools, calcul histogramme: %d %s\n",
foo, Image_err2str(foo)); foo, Image_err2str(foo));
exit(5); exit(5);
} }
for (foo=0; foo<256; foo++) for (foo=0; foo<256; foo++) {
{
printf("%3d %8ld %8ld %8ld\n", foo, hr[foo], hg[foo], hb[foo]); printf("%3d %8ld %8ld %8ld\n", foo, hr[foo], hg[foo], hb[foo]);
} }
@ -260,15 +263,13 @@ int print_environ(void)
{ {
int foo; int foo;
char *ptr; char *ptr;
char *noms[] = char *noms[] = {
{
NOM_VAR_ENV_VERBOSE, NOM_VAR_ENV_TIMING, "LIBIMAGE_PATH", NOM_VAR_ENV_VERBOSE, NOM_VAR_ENV_TIMING, "LIBIMAGE_PATH",
"TTH_CONF_DIR", "LIBIMAGE_DEBUG", "BITMAP_FONTS", "TTH_CONF_DIR", "LIBIMAGE_DEBUG", "BITMAP_FONTS",
"FIXED_SEED", ENV_DEFAULT_RGBA "FIXED_SEED", ENV_DEFAULT_RGBA
}; };
for (foo=0; foo<(int)(sizeof(noms)/sizeof(char *)); foo++) for (foo=0; foo<(int)(sizeof(noms)/sizeof(char *)); foo++) {
{
ptr = getenv(noms[foo]); ptr = getenv(noms[foo]);
printf("%5d %-25s %s\n", foo, noms[foo], ptr); printf("%5d %-25s %s\n", foo, noms[foo], ptr);
} }
@ -286,8 +287,7 @@ char buffer[100];
fprintf(stderr, "%s:%s %s %d\n", __FILE__, __func__, fname, value); fprintf(stderr, "%s:%s %s %d\n", __FILE__, __func__, fname, value);
#endif #endif
if ( (src=Image_TGA_alloc_load(fname)) == NULL ) if ( (src=Image_TGA_alloc_load(fname)) == NULL ) {
{
fprintf(stderr, "tga_tools, load of '%s' failed in %s\n", fprintf(stderr, "tga_tools, load of '%s' failed in %s\n",
fname, __func__); fname, __func__);
exit(5); exit(5);
@ -339,16 +339,14 @@ foo = set_new_seed(42);
fprintf(stderr, "!!! set new seed -> %d\n", foo); fprintf(stderr, "!!! set new seed -> %d\n", foo);
#endif #endif
if (1 == argc) if (1 == argc) {
{
fprintf(stderr, "* tga_tools v 0.1.33 (%s) *\n", __DATE__); fprintf(stderr, "* tga_tools v 0.1.33 (%s) *\n", __DATE__);
fprintf(stderr, "usage:\n\t%s action f.tga [params]\n", argv[0]); fprintf(stderr, "usage:\n\t%s action f.tga [params]\n", argv[0]);
liste_mots_clefs(commandes, 42); liste_mots_clefs(commandes, 42);
exit(0); exit(0);
} }
if (-1 == (idx=cherche_mot_clef(argv[1], commandes, &mode, &nbarg)) ) if (-1 == (idx=cherche_mot_clef(argv[1], commandes, &mode, &nbarg)) ) {
{
fprintf(stderr, "action '%s' inconnue.\n", argv[1]); fprintf(stderr, "action '%s' inconnue.\n", argv[1]);
exit(1); exit(1);
} }
@ -452,7 +450,7 @@ switch(mode)
} }
if (foo) { if (foo) {
fprintf(stderr, "*** at end of %s, foo was %d\n", __func__, foo); /* fprintf(stderr, "*** at end of %s, foo was %d\n", __func__, foo); */
} }
return 0; return 0;
} }