diff --git a/src/modules/Image/image.c b/src/modules/Image/image.c index 88c0e6539896f3bd9848a7c7f579be911d9c9e25..5772a42c4b6f2ab2de1f221cbbf1b339f7761d88 100644 --- a/src/modules/Image/image.c +++ b/src/modules/Image/image.c @@ -1,9 +1,9 @@ -/* $Id: image.c,v 1.73 1998/01/13 22:59:23 hubbe Exp $ */ +/* $Id: image.c,v 1.74 1998/01/16 04:04:43 mirar Exp $ */ /* **! module Image **! note -**! $Id: image.c,v 1.73 1998/01/13 22:59:23 hubbe Exp $ +**! $Id: image.c,v 1.74 1998/01/16 04:04:43 mirar Exp $ **! class image **! **! The main object of the <ref>Image</ref> module, this object @@ -82,7 +82,7 @@ #include "stralloc.h" #include "global.h" -RCSID("$Id: image.c,v 1.73 1998/01/13 22:59:23 hubbe Exp $"); +RCSID("$Id: image.c,v 1.74 1998/01/16 04:04:43 mirar Exp $"); #include "pike_macros.h" #include "object.h" #include "constants.h" @@ -2772,11 +2772,39 @@ void init_image_gif(void); void exit_image_gif(void); void init_image_pnm(void); void exit_image_pnm(void); +void init_image_x(void); +void exit_image_x(void); +void init_image_png(void); +void exit_image_png(void); + +static struct pike_string *magic_JPEG; + +static void image_index_magic(INT32 args) +{ + struct svalue tmp; + if (args!=1) + error("Image.`[]: Too few or too many arguments\n"); + if (sp[-1].type!=T_STRING) + error("Image.`[]: Illegal type of argument\n"); + if (sp[-1].u.string==magic_JPEG) + { + pop_stack(); + push_string(make_shared_string("_Image_JPEG")); + push_int(0); + SAFE_APPLY_MASTER("resolv",2); + return; + } + push_object(THISOBJ); THISOBJ->refs++; + tmp=sp[-1], sp[-1]=sp[-2], sp[-2]=tmp; + f_arrow(2); +} void pike_module_init(void) { int i; + magic_JPEG=make_shared_string("JPEG"); + image_noise_init(); start_new_program(); @@ -2982,6 +3010,9 @@ void pike_module_init(void) init_font_programs(); init_colortable_programs(); + add_function("`[]",image_index_magic, + "function(string:object)",0); + init_image_gif(); init_image_pnm(); init_image_png(); @@ -3002,6 +3033,8 @@ void pike_module_exit(void) exit_image_pnm(); exit_image_png(); exit_image_x(); + + free_string(magic_JPEG); }