diff --git a/src/modules/Image/Makefile.in b/src/modules/Image/Makefile.in index 8dfe0c2054380c01eee6a82d1f50c68fc47fafa9..2d7d7f38850f050020540c481346dd617c18e43e 100644 --- a/src/modules/Image/Makefile.in +++ b/src/modules/Image/Makefile.in @@ -1,10 +1,10 @@ -# $Id: Makefile.in,v 1.23 1999/05/23 17:46:37 mirar Exp $ +# $Id: Makefile.in,v 1.24 1999/05/24 14:33:09 mirar Exp $ SRCDIR=@srcdir@ VPATH=@srcdir@:@srcdir@/../..:../.. OBJS = image_module.o \ image.o font.o togif.o matrix.o pnm_compat.o blit.o \ pattern.o dct.o operator.o x.o colortable.o polyfill.o \ - orient.o colors.o search.o layers.o + orient.o colors.o search.o layers.o default_font.o MODNAME=image MODULE_SUBDIRS=encodings MODULE_ARCHIVES=encodings/encodings.a diff --git a/src/modules/Image/font.c b/src/modules/Image/font.c index c6f8239764afcd00ef4bc2581d619f2ef339d1b2..dd35b11a3515fb09bb6e14663ab10c2cb0434189 100644 --- a/src/modules/Image/font.c +++ b/src/modules/Image/font.c @@ -1,13 +1,16 @@ -/* $Id: font.c,v 1.48 1999/05/23 17:46:40 mirar Exp $ */ +/* $Id: font.c,v 1.49 1999/05/24 14:33:10 mirar Exp $ */ #include "global.h" #include <config.h> #define SPACE_CHAR 'i' +extern unsigned char * image_default_font; +#define IMAGE_DEFAULT_FONT_SIZE 30596 + /* **! module Image **! note -**! $Id: font.c,v 1.48 1999/05/23 17:46:40 mirar Exp $ +**! $Id: font.c,v 1.49 1999/05/24 14:33:10 mirar Exp $ **! class Font **! **! note @@ -219,7 +222,7 @@ static INLINE void free_font_struct(struct font *font) { if (font) { - if (font->mem) + if (font->mem && font->mem!=image_default_font) { #ifdef HAVE_MMAP munmap(font->mem,font->mmaped_size); @@ -335,26 +338,32 @@ void font_load(INT32 args); void font_create(INT32 args) { - if (args) - { - font_load(args); - pop_stack(); - } + font_load(args); + pop_stack(); } void font_load(INT32 args) { int fd; + size_t size; - if (args<1 - || sp[-args].type!=T_STRING) - error("font->read: illegal or wrong number of arguments\n"); - if (THIS) { free_font_struct(THIS); THIS=NULL; } + + if (!args) + { + THIS=(struct font *)xalloc(sizeof(struct font)); + THIS->mem=image_default_font; + size=IMAGE_DEFAULT_FONT_SIZE; + goto loading_default; + } + + if (sp[-args].type!=T_STRING) + error("font->read: illegal or wrong number of arguments\n"); + do { #ifdef FONT_DEBUG @@ -365,7 +374,6 @@ void font_load(INT32 args) if (fd >= 0) { - size_t size; struct font *new_font; size = (size_t) file_size(fd); @@ -391,6 +399,8 @@ void font_load(INT32 args) #endif THREADS_DISALLOW(); +loading_default: + if (THIS->mem) { struct file_head @@ -473,6 +483,8 @@ void font_load(INT32 args) } + if (!args) goto done; + fd_close(fd); pop_n_elems(args); ref_push_object(THISOBJ); /* success */ @@ -488,6 +500,7 @@ void font_load(INT32 args) #ifdef FONT_DEBUG else fprintf(stderr,"FONT wrong cookie\n"); #endif + if (!args) goto done; /* just in case */ } /* mem failure */ #ifdef FONT_DEBUG else fprintf(stderr,"FONT mem failure\n"); @@ -504,6 +517,8 @@ void font_load(INT32 args) else fprintf(stderr,"FONT fd failure\n"); #endif +done: + pop_n_elems(args); push_int(0); return; @@ -888,7 +903,7 @@ void init_image_font(void) ADD_FUNCTION("create",font_create,tFunc(tOr(tVoid,tStr),tVoid),0); /* function(string:object) */ - ADD_FUNCTION("write",font_write,tFunc(tStr,tObj),0); + ADD_FUNCTION("write",font_write,tFuncV(,tStr,tObj),0); /* function(:int) */ ADD_FUNCTION("height",font_height,tFunc(,tInt),0); diff --git a/src/modules/Image/module_testsuite.in b/src/modules/Image/module_testsuite.in index d88f0c9497ff99422a6a920130c3b65379f679f5..404d813a677081b40ae67d4db09d9d851dd0ed0f 100644 --- a/src/modules/Image/module_testsuite.in +++ b/src/modules/Image/module_testsuite.in @@ -415,142 +415,187 @@ if (!equal(img->max(),({255,254,253}))) do { werror("failure; Image.image/advanc return 1; +} +mixed b() { return 1; } + +.... +test 22, expected result: EQ +mixed a(){ +# 1 "-" +#253 "testsuite.in.in" +if (!objectp(Image.Font())) do { werror("failure; Image.image/Image.Font/instansiating default font: "+( "not object" )+"\n"); return 0; } while (0); +return 1; + } mixed b() { return 1; } .... -test 22, expected result: EQ +test 23, expected result: EQ +mixed a(){ +# 1 "-" + + +#257 "testsuite.in.in" +object f=Image.Font(); +object i=f->write("hej"); +if (i!=Image.PNM.decode(MIME.decode_base64("UDQKMTkgMTEK///gv/7gv//grzjglt7gth7gtv7gtv7gtx7g//7g//Hg"))) +do { werror("failure; Image.image/Image.Font/writing simple text with default font: "+( "incorrect" )+"\n"); return 0; } while (0); +return 1; + +} +mixed b() { return 1; } + +.... +test 24, expected result: EQ mixed a(){ # 1 "-" -#255 "testsuite.in.in" +#264 "testsuite.in.in" +object f=Image.Font(); +object i=f->write("h","o"); +if (i!=Image.PNM.decode(MIME.decode_base64("UDQKNyAyMwr+vr6ulra2trb+/v7+/s62tra2zv7+/g=="))) +do { werror("failure; Image.image/Image.Font/writing multiple lines with default font: "+( "incorrect" )+"\n"); return 0; } while (0); +return 1; + + + +} +mixed b() { return 1; } + +.... +test 25, expected result: EQ +mixed a(){ +# 1 "-" + + +#275 "testsuite.in.in" object c=Image.Colortable(({Image.Color.white,Image.Color.black})); array z=(array)c; if (sizeof(z)!=2) -do { werror("failure; Image.image/colortable/colortable - black/white init & cast: "+( "didn't get two colors (black and white): "+((array(string))c)*", " )+"\n"); return 0; } while (0); +do { werror("failure; Image.image/Image.Colortable/colortable - black/white init & cast: "+( "didn't get two colors (black and white): "+((array(string))c)*", " )+"\n"); return 0; } while (0); if ((z[0]!=Image.Color.black || z[1]!=Image.Color.white) && (z[1]!=Image.Color.black || z[0]!=Image.Color.white)) -do { werror("failure; Image.image/colortable/colortable - black/white init & cast: "+( "didn't get black and white: "+((array(string))c)*", " )+"\n"); return 0; } while (0); +do { werror("failure; Image.image/Image.Colortable/colortable - black/white init & cast: "+( "didn't get black and white: "+((array(string))c)*", " )+"\n"); return 0; } while (0); return 1; } mixed b() { return 1; } .... -test 23, expected result: EQ +test 26, expected result: EQ mixed a(){ # 1 "-" -#265 "testsuite.in.in" +#285 "testsuite.in.in" object img=Image.image(100,100)->test(43); object c=Image.Colortable(({Image.Color.white,Image.Color.black})); img=c*img; array z=(array)Image.Colortable(img); if (sizeof(z)!=2) -do { werror("failure; Image.image/colortable/colortable - black/white normal: "+( "didn't get two colors (black and white): "+((array(string))c)*", " )+"\n"); return 0; } while (0); +do { werror("failure; Image.image/Image.Colortable/colortable - black/white normal: "+( "didn't get two colors (black and white): "+((array(string))c)*", " )+"\n"); return 0; } while (0); if ((z[0]!=Image.Color.black || z[1]!=Image.Color.white) && (z[1]!=Image.Color.black || z[0]!=Image.Color.white)) -do { werror("failure; Image.image/colortable/colortable - black/white normal: "+( "didn't get black and white: "+((array(string))c)*", " )+"\n"); return 0; } while (0); +do { werror("failure; Image.image/Image.Colortable/colortable - black/white normal: "+( "didn't get black and white: "+((array(string))c)*", " )+"\n"); return 0; } while (0); return 1; } mixed b() { return 1; } .... -test 24, expected result: EQ +test 27, expected result: EQ mixed a(){ # 1 "-" -#277 "testsuite.in.in" +#297 "testsuite.in.in" object img=Image.image(100,100)->test(43); object c=Image.Colortable(({Image.Color.white,Image.Color.black})); c->floyd_steinberg(); img=c*img; array z=(array)Image.Colortable(img); if (sizeof(z)!=2) -do { werror("failure; Image.image/colortable/colortable - black/white floyd-steinberg: "+( "didn't get two colors (black and white): "+((array(string))c)*", " )+"\n"); return 0; } while (0); +do { werror("failure; Image.image/Image.Colortable/colortable - black/white floyd-steinberg: "+( "didn't get two colors (black and white): "+((array(string))c)*", " )+"\n"); return 0; } while (0); if ((z[0]!=Image.Color.black || z[1]!=Image.Color.white) && (z[1]!=Image.Color.black || z[0]!=Image.Color.white)) -do { werror("failure; Image.image/colortable/colortable - black/white floyd-steinberg: "+( "didn't get black and white: "+((array(string))c)*", " )+"\n"); return 0; } while (0); +do { werror("failure; Image.image/Image.Colortable/colortable - black/white floyd-steinberg: "+( "didn't get black and white: "+((array(string))c)*", " )+"\n"); return 0; } while (0); return 1; } mixed b() { return 1; } .... -test 25, expected result: EQ +test 28, expected result: EQ mixed a(){ # 1 "-" -#290 "testsuite.in.in" +#310 "testsuite.in.in" object img=Image.image(100,100)->test(43); object c=Image.Colortable(({Image.Color.white,Image.Color.black})); c->ordered(); img=c*img; array z=(array)Image.Colortable(img); if (sizeof(z)!=2) -do { werror("failure; Image.image/colortable/colortable - black/white ordered: "+( "didn't get two colors (black and white): "+((array(string))c)*", " )+"\n"); return 0; } while (0); +do { werror("failure; Image.image/Image.Colortable/colortable - black/white ordered: "+( "didn't get two colors (black and white): "+((array(string))c)*", " )+"\n"); return 0; } while (0); if ((z[0]!=Image.Color.black || z[1]!=Image.Color.white) && (z[1]!=Image.Color.black || z[0]!=Image.Color.white)) -do { werror("failure; Image.image/colortable/colortable - black/white ordered: "+( "didn't get black and white: "+((array(string))c)*", " )+"\n"); return 0; } while (0); +do { werror("failure; Image.image/Image.Colortable/colortable - black/white ordered: "+( "didn't get black and white: "+((array(string))c)*", " )+"\n"); return 0; } while (0); return 1; } mixed b() { return 1; } .... -test 26, expected result: EQ +test 29, expected result: EQ mixed a(){ # 1 "-" -#303 "testsuite.in.in" +#323 "testsuite.in.in" object img=Image.image(200,200)->test(42); img->tuned_box(50,50,150,150,({({0,0,0}),({255,0,0}),({0,255,0}),({0,0,255})})); object c=Image.Colortable(img,1000)->cubicles(16,16,16,4); -if (sizeof(c)<200) do { werror("failure; Image.image/colortable/colortable - standard: "+( "too few colors" )+"\n"); return 0; } while (0); +if (sizeof(c)<200) do { werror("failure; Image.image/Image.Colortable/colortable - standard: "+( "too few colors" )+"\n"); return 0; } while (0); object img1=(c*img); -if (!(img-img1<50)) do { werror("failure; Image.image/colortable/colortable - standard: "+( "differ too much ("+(img-img1)->max()[0]+","+(img-img1)->max()[1]+","+(img-img1)->max()[2]+","+")" )+"\n"); return 0; } while (0); +if (!(img-img1<50)) do { werror("failure; Image.image/Image.Colortable/colortable - standard: "+( "differ too much ("+(img-img1)->max()[0]+","+(img-img1)->max()[1]+","+(img-img1)->max()[2]+","+")" )+"\n"); return 0; } while (0); return 1; } mixed b() { return 1; } .... -test 27, expected result: EQ +test 30, expected result: EQ mixed a(){ # 1 "-" -#312 "testsuite.in.in" +#332 "testsuite.in.in" object img=Image.image(200,200)->test(42); img->tuned_box(50,50,150,150,({({0,0,0}),({255,0,0}),({0,255,0}),({0,0,255})})); object c=Image.Colortable(32,32,32)->floyd_steinberg(); object img1=(c*img); -if (!(img-img1<50)) do { werror("failure; Image.image/colortable/colortable - floyd-steinberg: "+( "differ too much ("+(img-img1)->max()[0]+","+(img-img1)->max()[1]+","+(img-img1)->max()[2]+","+")" )+"\n"); return 0; } while (0); +if (!(img-img1<50)) do { werror("failure; Image.image/Image.Colortable/colortable - floyd-steinberg: "+( "differ too much ("+(img-img1)->max()[0]+","+(img-img1)->max()[1]+","+(img-img1)->max()[2]+","+")" )+"\n"); return 0; } while (0); return 1; } mixed b() { return 1; } .... -test 28, expected result: EQ +test 31, expected result: EQ mixed a(){ # 1 "-" -#320 "testsuite.in.in" +#340 "testsuite.in.in" object img=Image.image(200,200)->test(42); img->tuned_box(50,50,150,150,({({0,0,0}),({255,0,0}),({0,255,0}),({0,0,255})})); object c=Image.Colortable(32,32,32)->ordered(); object img1=(c*img); -if (!(img-img1<32)) do { werror("failure; Image.image/colortable/colortable - ordered: "+( "differ too much ("+(img-img1)->max()[0]+","+(img-img1)->max()[1]+","+(img-img1)->max()[2]+","+")" )+"\n"); return 0; } while (0); +if (!(img-img1<32)) do { werror("failure; Image.image/Image.Colortable/colortable - ordered: "+( "differ too much ("+(img-img1)->max()[0]+","+(img-img1)->max()[1]+","+(img-img1)->max()[2]+","+")" )+"\n"); return 0; } while (0); return 1; @@ -559,12 +604,12 @@ return 1; mixed b() { return 1; } .... -test 29, expected result: EQ +test 32, expected result: EQ mixed a(){ # 1 "-" -#332 "testsuite.in.in" +#352 "testsuite.in.in" object img=Image.image(100,100)->test(40); object img1=Image.PNM.decode(Image.PNM.encode(img)); if (img!=img1) do { werror("failure; Image.image/encoding/decoding/Image.PNM.encode/decode: "+( "differ" )+"\n"); return 0; } while (0); @@ -574,12 +619,12 @@ return 1; mixed b() { return 1; } .... -test 30, expected result: EQ +test 33, expected result: EQ mixed a(){ # 1 "-" -#338 "testsuite.in.in" +#358 "testsuite.in.in" object img=Image.image(100,100)->test(41); object c=Image.Colortable(img,250)->cubicles(10,10,10,1)->floyd_steinberg(); img=c*img; @@ -591,12 +636,12 @@ return 1; mixed b() { return 1; } .... -test 31, expected result: EQ +test 34, expected result: EQ mixed a(){ # 1 "-" -#346 "testsuite.in.in" +#366 "testsuite.in.in" object img=Image.image(100,100)->test(42); object c=Image.Colortable(img,256)->cubicles(16,16,16,1); img=c*img; @@ -608,12 +653,12 @@ return 1; mixed b() { return 1; } .... -test 32, expected result: EQ +test 35, expected result: EQ mixed a(){ # 1 "-" -#354 "testsuite.in.in" +#374 "testsuite.in.in" object img=Image.image(100,100)->test(43); object c=Image.Colortable(img,256)->floyd_steinberg()->cubicles(16,16,16); img=c*img; @@ -625,12 +670,12 @@ return 1; mixed b() { return 1; } .... -test 33, expected result: EQ +test 36, expected result: EQ mixed a(){ # 1 "-" -#362 "testsuite.in.in" +#382 "testsuite.in.in" object img=Image.image(100,100)->test(43); if (Image.AVS.decode(Image.AVS.encode(img))!=img) do { werror("failure; Image.image/encoding/decoding/Image.AVS.encode/decode : "+( "differ" )+"\n"); return 0; } while (0); return 1; @@ -639,12 +684,12 @@ return 1; mixed b() { return 1; } .... -test 34, expected result: EQ +test 37, expected result: EQ mixed a(){ # 1 "-" -#367 "testsuite.in.in" +#387 "testsuite.in.in" object img=Image.image(100,100)->test(43); if (Image.BMP.decode(Image.BMP.encode(img))!=img) do { werror("failure; Image.image/encoding/decoding/Image.BMP.encode/decode (truecolor): "+( "differ" )+"\n"); return 0; } while (0); return 1; @@ -653,12 +698,12 @@ return 1; mixed b() { return 1; } .... -test 35, expected result: EQ +test 38, expected result: EQ mixed a(){ # 1 "-" -#372 "testsuite.in.in" +#392 "testsuite.in.in" object img=Image.image(100,100)->test(43); object c=Image.Colortable(img,256); img=c*img; @@ -669,12 +714,12 @@ return 1; mixed b() { return 1; } .... -test 36, expected result: EQ +test 39, expected result: EQ mixed a(){ # 1 "-" -#379 "testsuite.in.in" +#399 "testsuite.in.in" object img=Image.image(100,100)->test(43); object c=Image.Colortable(img,16); img=c*img; @@ -685,12 +730,12 @@ return 1; mixed b() { return 1; } .... -test 37, expected result: EQ +test 40, expected result: EQ mixed a(){ # 1 "-" -#386 "testsuite.in.in" +#406 "testsuite.in.in" object img=Image.image(100,100)->test(43); object c=Image.Colortable(img,2); img=c*img; @@ -701,12 +746,12 @@ return 1; mixed b() { return 1; } .... -test 38, expected result: EQ +test 41, expected result: EQ mixed a(){ # 1 "-" -#393 "testsuite.in.in" +#413 "testsuite.in.in" object img=Image.image(256,240)->test(43); img=Image.Colortable( ({"white","black","red","green"}) )*img; if (Image.HRZ.decode(Image.HRZ.encode(img))!=img) do { werror("failure; Image.image/encoding/decoding/Image.HRZ.encode/decode : "+( "differ" )+"\n"); return 0; } while (0); @@ -716,12 +761,12 @@ return 1; mixed b() { return 1; } .... -test 39, expected result: EQ +test 42, expected result: EQ mixed a(){ # 1 "-" -#399 "testsuite.in.in" +#419 "testsuite.in.in" object img=Image.image(100,100)->test(43); object c=Image.Colortable(img,16); img=c*img; @@ -732,12 +777,12 @@ return 1; mixed b() { return 1; } .... -test 40, expected result: EQ +test 43, expected result: EQ mixed a(){ # 1 "-" -#406 "testsuite.in.in" +#426 "testsuite.in.in" object img=Image.image(100,100)->test(43); if (Image.PCX.decode(Image.PCX.encode(img))!=img) do { werror("failure; Image.image/encoding/decoding/Image.PCX.encode/decode : "+( "differ" )+"\n"); return 0; } while (0); return 1; @@ -746,12 +791,12 @@ return 1; mixed b() { return 1; } .... -test 41, expected result: EQ +test 44, expected result: EQ mixed a(){ # 1 "-" -#411 "testsuite.in.in" +#431 "testsuite.in.in" object img=Image.image(100,100)->test(43); if (Image.PNM.decode(Image.PNM.encode(img))!=img) do { werror("failure; Image.image/encoding/decoding/Image.PNM.encode/decode : "+( "differ" )+"\n"); return 0; } while (0); return 1; @@ -760,12 +805,12 @@ return 1; mixed b() { return 1; } .... -test 42, expected result: EQ +test 45, expected result: EQ mixed a(){ # 1 "-" -#416 "testsuite.in.in" +#436 "testsuite.in.in" object img=Image.image(100,100)->test(43); if (Image.TGA.decode(Image.TGA.encode(img))!=img) do { werror("failure; Image.image/encoding/decoding/Image.TGA.encode/decode : "+( "differ" )+"\n"); return 0; } while (0); return 1; @@ -774,12 +819,12 @@ return 1; mixed b() { return 1; } .... -test 43, expected result: EQ +test 46, expected result: EQ mixed a(){ # 1 "-" -#421 "testsuite.in.in" +#441 "testsuite.in.in" object img=Image.image(100,100)->test(43); object c=Image.Colortable(({Image.Color.white,Image.Color.black})); img=c*img; @@ -799,12 +844,12 @@ return 1; mixed b() { return 1; } .... -test 44, expected result: EQ +test 47, expected result: EQ mixed a(){ # 1 "-" -#437 "testsuite.in.in" +#457 "testsuite.in.in" #if constant(Image.XPM.encode) object img=Image.image(100,100)->test(43); object c=Image.Colortable(img,16); @@ -820,12 +865,12 @@ return 1; mixed b() { return 1; } .... -test 45, expected result: EQ +test 48, expected result: EQ mixed a(){ # 1 "-" -#449 "testsuite.in.in" +#469 "testsuite.in.in" #if constant(Image.XPM.encode) object img=Image.image(100,100)->test(43); object c=Image.Colortable(16,16,16); @@ -839,12 +884,12 @@ return 1; mixed b() { return 1; } .... -test 46, expected result: EQ +test 49, expected result: EQ mixed a(){ # 1 "-" -#459 "testsuite.in.in" +#479 "testsuite.in.in" #if constant(Image.TIFF.encode) object img=Image.image(100,100)->test(43); if (Image.TIFF.decode(Image.TIFF.encode(img))!=img) do { werror("failure; Image.image/encoding/decoding/Image.TIFF.encode/decode : "+( "differ" )+"\n"); return 0; } while (0); @@ -857,12 +902,12 @@ return 1; mixed b() { return 1; } .... -test 47, expected result: EQ +test 50, expected result: EQ mixed a(){ # 1 "-" -#468 "testsuite.in.in" +#488 "testsuite.in.in" #if constant(Image.XFace.encode) object img=Image.image(48,48)->test(43); object c=Image.Colortable(({Image.Color.white,Image.Color.black})); @@ -878,12 +923,12 @@ return 1; mixed b() { return 1; } .... -test 48, expected result: EQ +test 51, expected result: EQ mixed a(){ # 1 "-" -#480 "testsuite.in.in" +#500 "testsuite.in.in" #if constant(Image.JPEG.encode) object img=Image.image(100,100)->test(43); object img1=Image.JPEG.decode(Image.JPEG.encode(img,(["quality":100]))); @@ -899,12 +944,12 @@ return 1; mixed b() { return 1; } .... -test 49, expected result: EQ +test 52, expected result: EQ mixed a(){ # 1 "-" -#494 "testsuite.in.in" +#514 "testsuite.in.in" foreach ( ({ ({ "black", ({ 0, 0, 0 }), ({ 0, 0, 0 }), 0 }), ({ "blue", ({ 0, 0, 255 }), ({ 170, 255, 255 }), 41 }), @@ -970,12 +1015,12 @@ return 1; mixed b() { return 1; } .... -test 50, expected result: EQ +test 53, expected result: EQ mixed a(){ # 1 "-" -#556 "testsuite.in.in" +#576 "testsuite.in.in" if (!arrayp(indices(Image.Color))) do { werror("failure; Image.image/Image.Color/indices(Image.Color): "+( "wrong type\n" )+"\n"); return 0; } while (0); if (!stringp(indices(Image.Color)[0])) @@ -988,12 +1033,12 @@ return 1; mixed b() { return 1; } .... -test 51, expected result: EQ +test 54, expected result: EQ mixed a(){ # 1 "-" -#565 "testsuite.in.in" +#585 "testsuite.in.in" if (!arrayp(values(Image.Color))) do { werror("failure; Image.image/Image.Color/values(Image.Color): "+( "wrong type\n" )+"\n"); return 0; } while (0); if (!objectp(values(Image.Color)[0])) @@ -1006,12 +1051,12 @@ return 1; mixed b() { return 1; } .... -test 52, expected result: EQ +test 55, expected result: EQ mixed a(){ # 1 "-" -#574 "testsuite.in.in" +#594 "testsuite.in.in" foreach ( ({ ({ "black", ({ 0, 0, 0 }), ({ 0, 0, 0 }), 0 }), ({ "blue", ({ 0, 0, 255 }), ({ 170, 255, 255 }), 41 }), @@ -1037,12 +1082,12 @@ return 1; mixed b() { return 1; } .... -test 53, expected result: EQ +test 56, expected result: EQ mixed a(){ # 1 "-" -#598 "testsuite.in.in" +#618 "testsuite.in.in" object Stina=Image.JPEG.decode(MIME.decode_base64( "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a\r\nHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy\r\nMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAhAD8DASIA\r\nAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAABgcABQgE/8QANhAAAgEEAAQDAwkJAAAAAAAAAQID\r\nAAQFEQYSITEHE3EiQYEUMjNCYXOhscEVIzY3UVJicsL/xAAZAQACAwEAAAAAAAAAAAAAAAACBAAB\r\nAwX/xAAdEQACAgMBAQEAAAAAAAAAAAABAgARAyExEjJB/9oADAMBAAIRAxEAPwBcXMazCMT3wOjy\r\nhAOpPpXaOEs2bIXdhib2WJVIJW31sfO3vfpXXaWlrd35SUDn0PLHYg9/0p44HiS1yWIgCSwRXcQ8\r\nuW3kl8vlK9NjferZ1X65JlORVtBZmW7iSWFJreTzUZG5ikq6ZTrtqtQ+EuLixvh7jm8tRLcp5khD\r\ndT16b+FLDxltcZe5DFXWPlglyLs0d38nYHYGtA6+3dPvERfJ8JYwBQnJbouh00eUVRbViXbeR67M\r\nzeIRi4f8QLlLNFhVFdF+tok73+PauK3s5r20DLEsS82/PufYD0x48Ri8/wCPGVkybQPBYBWSCYjT\r\nyFQOx79wfhTNzj4+2w8sV9bxtC6FEhZRo9PcKFcwA3I7MpAAmbplvYomtXijcluUSxN8emvdRH4X\r\nAW0eYLHmlWVUHOSTqhG/hW1zTShnWLQ1pui9e1GvhwD+xrqYczefcMQT3IFBme01GMCn1uC1/byT\r\nsGtWKuDtXB67qxsM0l9bbyYhM8Oo9gA85Hp1owfwltZnaK1y1xBNolY/L3v0oLfgjHxZg2drkMjL\r\nfxvp0ktBErH7Dvr/AEregTMzctsJjocnx5gbVIIzbef50qqhGuXZ0a0Yw6dunuA+ND/CmDhxOItW\r\ne3C3xQhmce0P8d1ci7jZuQnUv9g70LVwQCSxiu8ROBpJc1LxJas0qzRrHcQbJ0yjQZT6dDSxzWdF\r\ngqRq9xJMy8qhm3yDtqtSMiSRGN0DK406nsd96UOd8PcFJxiTc/uIki505j0cH6o9DUpSNw1Y3UR7\r\nJc3kq24V3uJ/ZCjZK799PPCY6LA4a2s9FgqDm9nR37/xroseG8bip2nsrSAvrQk5tsBVkyEqpCk/\r\nHdJ5snrQjmJaNmWkP0ll/sPzpdZz+Z0Hr/1UqU4nYs3I9F+ji9BVUf4kP3VSpVHsyWWMvYeo/OhT\r\njT59v92f1qVKFvmFj+oL475g9Ksrbs1SpSB7Oj+T/9k=")); @@ -1060,12 +1105,12 @@ return 1; mixed b() { return 1; } .... -test 54, expected result: EQ +test 57, expected result: EQ mixed a(){ # 1 "-" -#612 "testsuite.in.in" +#632 "testsuite.in.in" object Stina=Image.JPEG.decode(MIME.decode_base64( "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a\r\nHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy\r\nMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAhAD8DASIA\r\nAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAABgcABQgE/8QANhAAAgEEAAQDAwkJAAAAAAAAAQID\r\nAAQFEQYSITEHE3EiQYEUMjNCYXOhscEVIzY3UVJicsL/xAAZAQACAwEAAAAAAAAAAAAAAAACBAAB\r\nAwX/xAAdEQACAgMBAQEAAAAAAAAAAAABAgARAyExEjJB/9oADAMBAAIRAxEAPwBcXMazCMT3wOjy\r\nhAOpPpXaOEs2bIXdhib2WJVIJW31sfO3vfpXXaWlrd35SUDn0PLHYg9/0p44HiS1yWIgCSwRXcQ8\r\nuW3kl8vlK9NjferZ1X65JlORVtBZmW7iSWFJreTzUZG5ikq6ZTrtqtQ+EuLixvh7jm8tRLcp5khD\r\ndT16b+FLDxltcZe5DFXWPlglyLs0d38nYHYGtA6+3dPvERfJ8JYwBQnJbouh00eUVRbViXbeR67M\r\nzeIRi4f8QLlLNFhVFdF+tok73+PauK3s5r20DLEsS82/PufYD0x48Ri8/wCPGVkybQPBYBWSCYjT\r\nyFQOx79wfhTNzj4+2w8sV9bxtC6FEhZRo9PcKFcwA3I7MpAAmbplvYomtXijcluUSxN8emvdRH4X\r\nAW0eYLHmlWVUHOSTqhG/hW1zTShnWLQ1pui9e1GvhwD+xrqYczefcMQT3IFBme01GMCn1uC1/byT\r\nsGtWKuDtXB67qxsM0l9bbyYhM8Oo9gA85Hp1owfwltZnaK1y1xBNolY/L3v0oLfgjHxZg2drkMjL\r\nfxvp0ktBErH7Dvr/AEregTMzctsJjocnx5gbVIIzbef50qqhGuXZ0a0Yw6dunuA+ND/CmDhxOItW\r\ne3C3xQhmce0P8d1ci7jZuQnUv9g70LVwQCSxiu8ROBpJc1LxJas0qzRrHcQbJ0yjQZT6dDSxzWdF\r\ngqRq9xJMy8qhm3yDtqtSMiSRGN0DK406nsd96UOd8PcFJxiTc/uIki505j0cH6o9DUpSNw1Y3UR7\r\nJc3kq24V3uJ/ZCjZK799PPCY6LA4a2s9FgqDm9nR37/xroseG8bip2nsrSAvrQk5tsBVkyEqpCk/\r\nHdJ5snrQjmJaNmWkP0ll/sPzpdZz+Z0Hr/1UqU4nYs3I9F+ji9BVUf4kP3VSpVHsyWWMvYeo/OhT\r\njT59v92f1qVKFvmFj+oL475g9Ksrbs1SpSB7Oj+T/9k=")); diff --git a/src/modules/Image/testsuite.in.in b/src/modules/Image/testsuite.in.in index 1cb658811cfbdfa0e13398cd575a5cffd64157b1..5cb71ec9cc2740b2ee24506cf1a9b60028d238a8 100644 --- a/src/modules/Image/testsuite.in.in +++ b/src/modules/Image/testsuite.in.in @@ -246,10 +246,30 @@ if (!equal(img->max(),({255,254,253}))) fail("wrong maxcolor"); ok(); +//----------------------------------------------------- +#chapter Image.Font + +#test instansiating default font + if (!objectp(Image.Font())) fail("not object"); + ok(); + +#test writing simple text with default font + object f=Image.Font(); + object i=f->write("hej"); + if (i!=Image.PNM.decode(MIME.decode_base64("UDQKMTkgMTEK///gv/7gv//grzjglt7gth7gtv7gtv7gtx7g//7g//Hg"))) + fail("incorrect"); + ok(); + +#test writing multiple lines with default font + object f=Image.Font(); + object i=f->write("h","o"); + if (i!=Image.PNM.decode(MIME.decode_base64("UDQKNyAyMwr+vr6ulra2trb+/v7+/s62tra2zv7+/g=="))) + fail("incorrect"); + ok(); //----------------------------------------------------- -#chapter colortable +#chapter Image.Colortable #test colortable - black/white init & cast object c=Image.Colortable(({Image.Color.white,Image.Color.black})); @@ -660,7 +680,7 @@ if (!(Stinares-expected_result<80)) fail("->match_phase(float f, object needle) differ too much"); /* - This is used to create more tests. Please don't remove! + This is used to create more tests. Please don't remMIME.encode_base64ove! MIME.encode_base64(Image.JPEG.encode(Stinares)); */