Compare commits

...

2 Commits

Author SHA1 Message Date
tTh 86cb7eaa4a wip wip wip wip 2023-11-18 19:58:21 +01:00
tTh 2246a5d744 wip wip wip 2023-11-18 19:56:25 +01:00
16 changed files with 70 additions and 80 deletions

View File

@ -63,6 +63,7 @@ extractbits.o: extractbits.c $(DEPS)
filtadapt.o: filtadapt.c $(DEPS) filtadapt.o: filtadapt.c $(DEPS)
filtres.o: filtres.c $(DEPS) filtres.o: filtres.c $(DEPS)
falsecolors.o: falsecolors.c $(DEPS)
gadgrect.o: gadgrect.c $(DEPS) gadgrect.o: gadgrect.c $(DEPS)
glitch.o: glitch.c $(DEPS) glitch.o: glitch.c $(DEPS)
@ -132,7 +133,6 @@ vignetize.o: vignetize.c $(DEPS)
warp0.o: warp0.c $(DEPS) warp0.o: warp0.c $(DEPS)
warp1.o: warp1.c $(DEPS) warp1.o: warp1.c $(DEPS)
warp2.o: warp2.c $(DEPS) warp2.o: warp2.c $(DEPS)
warp3.o: warp3.c $(DEPS)
zoom.o: zoom.c $(DEPS) zoom.o: zoom.c $(DEPS)
@ -152,7 +152,7 @@ OBJECTS = 7seg.o \
dither.o dither2.o dither3.o \ dither.o dither2.o dither3.o \
doublesz.o drawalpha.o drawing.o drawpatt.o \ doublesz.o drawalpha.o drawing.o drawpatt.o \
effects.o effects2.o effects3.o extractbits.o \ effects.o effects2.o effects3.o extractbits.o \
filtadapt.o filtres.o \ filtadapt.o filtres.o falsecolors.o \
gadgrect.o glitch.o gradient.o \ gadgrect.o glitch.o gradient.o \
halfsize.o \ halfsize.o \
image.o imprime.o \ image.o imprime.o \
@ -175,7 +175,7 @@ OBJECTS = 7seg.o \
text0.o text1.o text16x24.o \ text0.o text1.o text16x24.o \
tga.o tools.o turtle.o \ tga.o tools.o turtle.o \
vignetize.o \ vignetize.o \
warp0.o warp1.o warp2.o warp3.o \ warp0.o warp1.o warp2.o \
zoom.o zoom.o
../libtthimage.a: $(OBJECTS) ../libtthimage.a: $(OBJECTS)

View File

@ -2,7 +2,7 @@
calcluts.c calcluts.c
---------- ----------
voir aussi: luts15bits.c voir aussi: luts15bits.c & palettes.c
*/ */
@ -42,7 +42,7 @@ for (foo=0; foo<256; foo++) {
lut[foo] = quux; lut[foo] = quux;
} }
return FUNC_IS_BETA; return FUNC_IS_ALPHA;
} }
/*::------------------------------------------------------------------::*/ /*::------------------------------------------------------------------::*/
int Image_calclut_foo(int *lut, int v0, int v255) int Image_calclut_foo(int *lut, int v0, int v255)
@ -67,7 +67,7 @@ for (foo=0; foo<256; foo++) {
if (fp!=stdout) fclose(fp); if (fp!=stdout) fclose(fp);
return FUNC_IS_BETA; return FUNC_IS_ALPHA;
} }
/*::------------------------------------------------------------------::*/ /*::------------------------------------------------------------------::*/
int Image_load_lut(int *lut, char *fname, int flag) int Image_load_lut(int *lut, char *fname, int flag)
@ -98,6 +98,6 @@ for (idx=0; idx<256; idx++) {
fclose(fp); fclose(fp);
return FUNC_IS_BETA; return FUNC_IS_ALPHA;
} }
/*::------------------------------------------------------------------::*/ /*::------------------------------------------------------------------::*/

View File

@ -42,7 +42,7 @@ if ( (foo=Image_compare_desc(s, d)) )
Image_TGA_save("/tmp/aaaa_debug_a.tga", s, 0); Image_TGA_save("/tmp/aaaa_debug_a.tga", s, 0);
#endif #endif
Image_clear(d, 0, 0, 0); /* XXX Image_clear(d, 0, 0, 0); */
for (y=0; y<s->height-3; y+=3) for (y=0; y<s->height-3; y+=3)
{ {
@ -108,7 +108,7 @@ if ( (foo=Image_compare_desc(s, d)) )
fprintf(stderr, "* Image_dither_3x3_1 (%s) is experimental\n", __FILE__); fprintf(stderr, "* Image_dither_3x3_1 (%s) is experimental\n", __FILE__);
#endif #endif
Image_clear(d, 0, 0, 0); /* XXX Image_clear(d, 0, 0, 0); */
for (y=0; y<s->height-3; y+=3) for (y=0; y<s->height-3; y+=3)
{ {
@ -167,7 +167,7 @@ if ( (foo=Image_compare_desc(s, d)) )
return foo; return foo;
} }
Image_clear(d, 0, 0, 0); /* XXX Image_clear(d, 0, 0, 0); */
return FUNC_NOT_FINISH; return FUNC_NOT_FINISH;
} }
@ -183,7 +183,7 @@ if ( (foo=Image_compare_desc(s, d)) )
return foo; return foo;
} }
Image_clear(d, 0, 0, 0); /* XXX Image_clear(d, 0, 0, 0); */
return FUNC_NOT_FINISH; return FUNC_NOT_FINISH;
} }

View File

@ -69,8 +69,7 @@ fprintf(stderr, "%s ( %p %p %d %d )\n", __func__, s, d, shuff, mono);
/* remplissage de la matrice */ /* remplissage de la matrice */
fprintf(stderr, " init matrice\n"); fprintf(stderr, " init matrice\n");
for(foo=0; foo<256; foo++) for(foo=0; foo<256; foo++) {
{
((uint16_t *)matrice)[foo] = foo; ((uint16_t *)matrice)[foo] = foo;
} }
/* brasssage de la matrice */ /* brasssage de la matrice */

View File

@ -64,7 +64,6 @@ printf("RGBA : %5ld\n", sizeof(RGBA));
printf("A_BitPlane : %5ld\n", sizeof(A_BitPlane)); printf("A_BitPlane : %5ld\n", sizeof(A_BitPlane));
printf("RGB_map : %5ld\n", sizeof(RGB_map)); printf("RGB_map : %5ld\n", sizeof(RGB_map));
printf("Image_Point : %5ld\n", sizeof(Image_Point)); printf("Image_Point : %5ld\n", sizeof(Image_Point));
printf("RGB LUTs : %5ld\n", sizeof(Image_LUTs));
} }
/*::------------------------------------------------------------------::*/ /*::------------------------------------------------------------------::*/

View File

@ -24,6 +24,9 @@ Image_save_color_Map(char *file, char *name, RGB_map *map)
int foo; int foo;
FILE *fp; FILE *fp;
fprintf(stderr, ">>> %s ( '%s' '%s' %p )\n", __func__,
file, name, map);
if ( (fp=fopen(file, "w")) == NULL ) { if ( (fp=fopen(file, "w")) == NULL ) {
fprintf(stderr, "Save Color Map: err fopen\n"); fprintf(stderr, "Save Color Map: err fopen\n");
return FILE_CREATE_ERR; return FILE_CREATE_ERR;
@ -81,11 +84,14 @@ FILE *fp;
int nbre, r, g, b, foo, errcode; int nbre, r, g, b, foo, errcode;
char buffer[256]; char buffer[256];
fprintf(stderr, ">>> %s ( '%s' '%s' %p )\n", __func__,
file, name, where);
if ( name != NULL ) { if ( name != NULL ) {
if (strlen(name)>IMG_OBJNAME_LEN) return STRING_TOO_LONG; if (strlen(name)>IMG_OBJNAME_LEN) return STRING_TOO_LONG;
strcpy(where->name, name); strcpy(where->name, name);
} }
else strcpy(where->name, "no name"); else strcpy(where->name, "<noname>");
/* /*
* patch du 11 Décembre 2001: on utilise une fonction qui recherche le * patch du 11 Décembre 2001: on utilise une fonction qui recherche le

View File

@ -35,11 +35,10 @@ Image_PtList * Image_ptl_alloc(int nbre, char *name)
Image_PtList *ptr; Image_PtList *ptr;
#if DEBUG_LEVEL #if DEBUG_LEVEL
fprintf(stderr, "Image PtList: alloc: %d '%s'\n", nbre, name); fprintf(stderr, ">>> %s ( %d '%s' )\n", __func__, nbre, name);
#endif #endif
if ( (ptr=malloc(sizeof(Image_PtList)))==NULL) if ( (ptr=malloc(sizeof(Image_PtList)))==NULL) {
{
fprintf(stderr, "Image PtList: struct malloc failed\n"); fprintf(stderr, "Image PtList: struct malloc failed\n");
#if FORCE_ABORT #if FORCE_ABORT
abort(); abort();
@ -56,8 +55,7 @@ if (strlen(name) < IMG_OBJNAME_LEN)
else else
strcpy(ptr->name, "name too long"); strcpy(ptr->name, "name too long");
if ( (ptr->points=malloc(sizeof(Image_Point)*nbre))==NULL) if ( (ptr->points=malloc(sizeof(Image_Point)*nbre))==NULL) {
{
fprintf(stderr, "Image PtList: array malloc failed\n"); fprintf(stderr, "Image PtList: array malloc failed\n");
#if FORCE_ABORT #if FORCE_ABORT
abort(); abort();
@ -80,8 +78,7 @@ fprintf(stderr, "Image PtList: addpt to %p: %5d %5d %5d %5d\n",
/* in first, we check if this is a valid point list */ /* in first, we check if this is a valid point list */
if (ptl->control != 0xfde9601a) if (ptl->control != 0xfde9601a) {
{
fprintf(stderr, "ptl addpt: invalid point list %p\n", ptl); fprintf(stderr, "ptl addpt: invalid point list %p\n", ptl);
#if FORCE_ABORT #if FORCE_ABORT
abort(); abort();
@ -91,12 +88,10 @@ if (ptl->control != 0xfde9601a)
/* /*
* in second, we check if we have room for the new point. * in second, we check if we have room for the new point.
*/ */
if (ptl->nbre==ptl->alloc) if (ptl->nbre==ptl->alloc) {
{
newsize = ptl->alloc + 200; newsize = ptl->alloc + 200;
fprintf(stderr, "ptl: realloc array %d\n", newsize); fprintf(stderr, "ptl: realloc array %d\n", newsize);
if ((ptrpt=realloc(ptl->points, sizeof(Image_Point)*newsize))==NULL) if ((ptrpt=realloc(ptl->points, sizeof(Image_Point)*newsize))==NULL) {
{
fprintf(stderr, "%s: REALLOC FAIL\n", __func__); fprintf(stderr, "%s: REALLOC FAIL\n", __func__);
exit(5); exit(5);
} }
@ -117,7 +112,7 @@ return FUNC_IS_BETA;
/* /*
* attention, il est _important_ de respecter le format d'écriture * attention, il est _important_ de respecter le format d'écriture
* parce que les fichiers de liste de points sont parfois relus par * parce que les fichiers de liste de points sont parfois relus par
* des programmes FORTRAN, beaucoup plus pointilleux sur le * des programmes FORTRAN 77, beaucoup plus pointilleux sur le
* formatage des données. * formatage des données.
*/ */
int Image_ptl_write(char *filename, Image_PtList *ptl) int Image_ptl_write(char *filename, Image_PtList *ptl)
@ -125,17 +120,15 @@ int Image_ptl_write(char *filename, Image_PtList *ptl)
FILE *fp; FILE *fp;
int foo; int foo;
if ( (fp=fopen(filename, "w"))==NULL ) if ( (fp=fopen(filename, "w"))==NULL ) {
{ fprintf(stderr, "%s: write %s fopen fail.\n", __func__, filename);
fprintf(stderr, "Image PtList: write: fopen fail.\n");
return FILE_CREATE_ERR; return FILE_CREATE_ERR;
} }
fprintf(fp, "%8d\n", ptl->nbre); fprintf(fp, "%8d\n", ptl->nbre);
fprintf(fp, "%08d%08d\n", ptl->width, ptl->height); fprintf(fp, "%08d%08d\n", ptl->width, ptl->height);
fprintf(fp, "%08d%08d\n", 42, 42); /* reserved */ fprintf(fp, "%08d%08d\n", 42, 42); /* reserved */
for (foo=0; foo<ptl->nbre; foo++) for (foo=0; foo<ptl->nbre; foo++) {
{
fprintf(fp, "%8d%8d%8d%8d\n", fprintf(fp, "%8d%8d%8d%8d\n",
ptl->points[foo].x, ptl->points[foo].y, ptl->points[foo].x, ptl->points[foo].y,
ptl->points[foo].h, ptl->points[foo].c); ptl->points[foo].h, ptl->points[foo].c);
@ -155,8 +148,7 @@ int foo;
fprintf(stderr, ">>> %s ( '%s' %p )\n", __func__, filename, ptl); fprintf(stderr, ">>> %s ( '%s' %p )\n", __func__, filename, ptl);
#endif #endif
if (ptl->control != 0xfde9601a) if (ptl->control != 0xfde9601a) {
{
fprintf(stderr, "%s: no deadbeef in %p\n", __func__, ptl); fprintf(stderr, "%s: no deadbeef in %p\n", __func__, ptl);
fprintf(stderr, " can't read '%s'\n", filename); fprintf(stderr, " can't read '%s'\n", filename);
return 666; return 666;
@ -175,8 +167,7 @@ int Image_ptl_kill(Image_PtList *ptl, char *msg)
fprintf(stderr, "Killing point list %p for '%s'\n", ptl, msg); fprintf(stderr, "Killing point list %p for '%s'\n", ptl, msg);
#endif #endif
if (ptl->control != 0xfde9601a) if (ptl->control != 0xfde9601a) {
{
fprintf(stderr, "%s: no deadbeef in %p\n", __func__, ptl); fprintf(stderr, "%s: no deadbeef in %p\n", __func__, ptl);
return 666; return 666;
} }
@ -198,8 +189,7 @@ return FULL_NUCKED;
int int
Image_ptl_get_size(Image_PtList *ptl, int *nbre, int *alloc) Image_ptl_get_size(Image_PtList *ptl, int *nbre, int *alloc)
{ {
if (ptl->control != 0xfde9601a) if (ptl->control != 0xfde9601a) {
{
fprintf(stderr, "%s: no deadbeef in %p\n", __func__, ptl); fprintf(stderr, "%s: no deadbeef in %p\n", __func__, ptl);
return 666; return 666;
} }
@ -211,19 +201,16 @@ return OLL_KORRECT;
/*::------------------------------------------------------------------::*/ /*::------------------------------------------------------------------::*/
int Image_ptl_get_point(Image_PtList *ptl, Image_Point *pt, int idx) int Image_ptl_get_point(Image_PtList *ptl, Image_Point *pt, int idx)
{ {
if (ptl->control != 0xfde9601a) if (ptl->control != 0xfde9601a) {
{
fprintf(stderr, "%s: no deadbeef in %p\n", __func__, ptl); fprintf(stderr, "%s: no deadbeef in %p\n", __func__, ptl);
return 666; return 666;
} }
if (idx < 0) if (idx < 0) {
{
fprintf(stderr, "%s:%s point idx %d is negative, so bad !\n", fprintf(stderr, "%s:%s point idx %d is negative, so bad !\n",
__FILE__, __func__, idx); __FILE__, __func__, idx);
return FULL_NUCKED; return FULL_NUCKED;
} }
if (idx>ptl->nbre) if (idx>ptl->nbre) {
{
fprintf(stderr, "%s:%s point idx %d is too big, so bad !\n", fprintf(stderr, "%s:%s point idx %d is too big, so bad !\n",
__FILE__, __func__, idx); __FILE__, __func__, idx);
return FULL_NUCKED; return FULL_NUCKED;
@ -243,8 +230,7 @@ int Image_ptl_boundingbox(Image_PtList *ptl, Image_Rect *box)
int xmin, ymin, xmax, ymax; int xmin, ymin, xmax, ymax;
int foo; int foo;
if (ptl->control != 0xfde9601a) if (ptl->control != 0xfde9601a) {
{
fprintf(stderr, "%s: no deadbeef in %p\n", __func__, ptl); fprintf(stderr, "%s: no deadbeef in %p\n", __func__, ptl);
return 666; return 666;
} }
@ -252,8 +238,7 @@ if (ptl->control != 0xfde9601a)
xmin = ymin = 999999999; xmin = ymin = 999999999;
xmax = ymax = -999999999; xmax = ymax = -999999999;
for (foo=0; foo<ptl->nbre; foo++) for (foo=0; foo<ptl->nbre; foo++) {
{
if (ptl->points[foo].x < xmin) xmin = ptl->points[foo].x; if (ptl->points[foo].x < xmin) xmin = ptl->points[foo].x;
if (ptl->points[foo].x > xmax) xmax = ptl->points[foo].x; if (ptl->points[foo].x > xmax) xmax = ptl->points[foo].x;
if (ptl->points[foo].y < ymin) ymin = ptl->points[foo].y; if (ptl->points[foo].y < ymin) ymin = ptl->points[foo].y;

View File

@ -179,7 +179,7 @@ fprintf(stderr, "%s: ltr %3d '%c' %4d %4d\n", __func__, lettre,
#endif #endif
/* /*
* use default if not provided my caller * use default if not provided by caller
*/ */
if (NULL==pap) pap = &blanc; if (NULL==pap) pap = &blanc;
if (NULL==ink) ink = &noir; if (NULL==ink) ink = &noir;

View File

@ -9,16 +9,16 @@
#include "../tthimage.h" #include "../tthimage.h"
/*::------------------------------------------------------------------::*/ /*::------------------------------------------------------------------::*/
int int Image_turtle_infos(Image_Desc *img, int flags)
Image_turtle_infos(Image_Desc *img, int flags)
{ {
#if DEBUG_LEVEL #if DEBUG_LEVEL
fprintf(stderr, "Image turtle infos: flags = %04x\n", flags); fprintf(stderr, "Image turtle infos: flags = %04x\n", flags);
#endif #endif
if ( flags & 1 ) if ( flags & 1 ) {
Image_dump_descriptor(img, "turtle infos"); Image_dump_descriptor(img, "turtle infos");
}
return FUNC_IS_ALPHA; return FUNC_IS_ALPHA;
} }
@ -29,8 +29,7 @@ return FUNC_IS_ALPHA;
* Q: pourquoi le canal alpha n'est pas pris en compte ? * Q: pourquoi le canal alpha n'est pas pris en compte ?
* A: parce que :) * A: parce que :)
*/ */
int int Image_turtle_setcolors(Image_Desc *img, int r, int g, int b)
Image_turtle_setcolors(Image_Desc *img, int r, int g, int b)
{ {
img->rt = r; img->gt = g; img->bt = b; img->rt = r; img->gt = g; img->bt = b;
@ -39,23 +38,28 @@ img->at = 0; /* ? bonne valeur ? */
return FUNC_IS_ALPHA; return FUNC_IS_ALPHA;
} }
/*::------------------------------------------------------------------::*/ /*::------------------------------------------------------------------::*/
int int Image_turtle_move(Image_Desc *img, double xt, double yt)
Image_turtle_move(Image_Desc *img, double xt, double yt)
{ {
fprintf(stderr, ">>> %s ( %p %f %f )\n", __func__, img, xt, yt);
img->xt = xt; img->xt = xt;
img->yt = yt; img->yt = yt;
fprintf(stderr, ">>> %s ( %p %f %f )\n", __func__, img, xt, yt);
return FUNC_NOT_FINISH; return FUNC_NOT_FINISH;
} }
/*::------------------------------------------------------------------::*/ /*::------------------------------------------------------------------::*/
int int Image_turtle_draw(Image_Desc *img, double xt, double yt)
Image_turtle_draw(Image_Desc *img, double xt, double yt)
{ {
int x1, y1, x2, y2;
RGBA color = { 200, 200, 200, 0, 0, 0 };
fprintf(stderr, ">>> %s ( %p %f %f )\n", __func__, img, xt, yt); fprintf(stderr, ">>> %s ( %p %f %f )\n", __func__, img, xt, yt);
x1 = (int)img->xt, y1 = (int)img->yt;
x2 = (int)xt , y2 = (int)yt;
Image_draw_line(img, x1, y1, x2, y2, &color);
return FUNC_NOT_FINISH; return FUNC_NOT_FINISH;
} }

View File

@ -65,13 +65,13 @@ for (y=0; y<dst->height; y++) {
return FUNC_IS_BETA; return FUNC_IS_BETA;
} }
/*::------------------------------------------------------------------::*/ /*::------------------------------------------------------------------::*/
int int Image_warp_essai_1(Image_Desc *src, Image_Desc *dst, double angle, double shift)
Image_warp_essai_1(Image_Desc *src, Image_Desc *dst, double angle)
{ {
#if DEBUG_LEVEL fprintf(stderr, ">>> %s ( %p %p %f %f )\n", __func__, src, dst, angle, shift);
fprintf(stderr, "Warp 1: what I can do here ?\n");
#endif
return FUNC_NOT_FINISH; return FUNC_NOT_FINISH;
} }

View File

@ -19,7 +19,7 @@ HTML_DIR=$(DESTDIR)/html
# use -Wmissing-prototypes ? # use -Wmissing-prototypes ?
LIBIMG_OPT=-DFORCE_ABORT=0 -DDEBUG_LEVEL=0 -DIMGCOMMENT=0 LIBIMG_OPT=-DFORCE_ABORT=0 -DDEBUG_LEVEL=0 -DIMGCOMMENT=0
CC_OPTS=-Wall -W -g -ansi -O3 -fPIC -no-pie CC_OPTS=-Wall -W -g -ansi -O0 -fPIC -no-pie
CC_HACKS=-DNEED_ALLOCA_H CC_HACKS=-DNEED_ALLOCA_H
CFLAGS= $(CC_OPTS) \ CFLAGS= $(CC_OPTS) \

View File

@ -15,7 +15,7 @@ Le second, [`install.sh`](./install.sh) va mettre les choses au bon endroit.
Il est vivement conseillé de bien les lire avant de les utiliser. Il est vivement conseillé de bien les lire avant de les utiliser.
Les options globales de compilation sont dans Les options globales de compilation sont dans
[Paramakes.mk](Paramakes.mk). Là aussi, soyez attentifs [Paramakes.mk](Paramakes.mk). Là aussi, soyez attentifs.
## Utilisation ## Utilisation

View File

@ -4,7 +4,7 @@
test_des_xpers () test_des_xpers ()
{ {
command=$1 command=$1
echo ; echo " Test du xper $command" echo ; echo "======= Test du xper $command"
# generation d'une image sur laquelle travailler # generation d'une image sur laquelle travailler
$COMDIR/tga_mires mircol0 $SRC "hard xper '$command'" $COMDIR/tga_mires mircol0 $SRC "hard xper '$command'"

View File

@ -51,7 +51,7 @@ if (foo) { Image_print_error("load thin font", foo); }
foo = Image_t16x24_chars_map("16x24gruik", "all16X24chars.tga", 2); foo = Image_t16x24_chars_map("16x24gruik", "all16X24chars.tga", 2);
if (foo) { Image_print_error("load gruik font", foo); } if (foo) { Image_print_error("load gruik font", foo); }
fprintf(stderr, "--------------------------\n"); fprintf(stderr, "--------------------------------------\n");
/* /*
foo = essai_f1("pov.tga", "/tmp/aaaa_plop.tga", "0123456789"); foo = essai_f1("pov.tga", "/tmp/aaaa_plop.tga", "0123456789");

View File

@ -10,6 +10,7 @@ install -m 0644 tthimage.h $DESTDIR/include/tthimage.h
cp -v Datas/8x8thin Datas/16x24thin $DESTDIR/share/libimage/ cp -v Datas/8x8thin Datas/16x24thin $DESTDIR/share/libimage/
cp -v Datas/8x8std Datas/16x24gruik $DESTDIR/share/libimage/ cp -v Datas/8x8std Datas/16x24gruik $DESTDIR/share/libimage/
cp -v Datas/*.map $DESTDIR/share/libimage/
liste="genplot2 tga_cadre tga_effects tga_filtres tga_remap tga_tools \ liste="genplot2 tga_cadre tga_effects tga_filtres tga_remap tga_tools \
tga_combine tga_television tga_dither tga_applymap tga_makehf15 \ tga_combine tga_television tga_dither tga_applymap tga_makehf15 \

View File

@ -4,7 +4,7 @@
http://la.buvette.org/devel/libimage/ http://la.buvette.org/devel/libimage/
*/ */
#ifndef IMAGE_VERSION_STRING #ifndef IMAGE_VERSION_STRING
#define IMAGE_VERSION_STRING "0.4.51 pl 62" #define IMAGE_VERSION_STRING "0.4.51 pl 80"
/*::------------------------------------------------------------------::*/ /*::------------------------------------------------------------------::*/
/* /*
@ -609,19 +609,15 @@ int Image_quelques_calculs(Image_Desc *image);
int Image_histo_RGB(Image_Desc *im, long *hr, long *hg, long *hb); int Image_histo_RGB(Image_Desc *im, long *hr, long *hg, long *hb);
/* XXX may be we need a struct for RGB luts ? */
typedef struct {
unsigned int magic;
uint8_t R[256];
uint8_t G[256];
uint8_t B[256];
int flags;
} Image_LUTs;
int Image_LUT_RGB(Image_Desc *, Image_Desc *, int *, int *, int *); int Image_LUT_RGB(Image_Desc *, Image_Desc *, int *, int *, int *);
int Image_LUT_mono(Image_Desc *src, Image_Desc *dst, int *lut); int Image_LUT_mono(Image_Desc *src, Image_Desc *dst, int *lut);
/* falsecolors.c */
int Image_gen_fc_lut(float maxval, int nbslots, RGB_map *plut);
/*::------------------------------------------------------------------::*/ /*::------------------------------------------------------------------::*/
/* module distances.c */ /* module distances.c */
@ -1310,7 +1306,7 @@ int Image_vectfont_text_0(Image_Desc *im, char *txt, int x, int y);
int Image_warp_essai_0(Image_Desc *src, Image_Desc *dst, double angle, int Image_warp_essai_0(Image_Desc *src, Image_Desc *dst, double angle,
int xc, int yc); int xc, int yc);
int Image_warp_essai_1(Image_Desc *src, Image_Desc *dst, double angle); int Image_warp_essai_1(Image_Desc *src, Image_Desc *dst, double ang, double off);
/*::------------------------------------------------------------------::*/ /*::------------------------------------------------------------------::*/
int Image_center_rotate(Image_Desc *src, Image_Desc *dst, double angle); int Image_center_rotate(Image_Desc *src, Image_Desc *dst, double angle);