From e7aa6aed3ef3c1adf05ca79ec0f9884ae25f2714 Mon Sep 17 00:00:00 2001 From: "Mirar (Pontus Hagland)" <pike@sort.mirar.org> Date: Wed, 30 Jun 1999 11:42:57 +0200 Subject: [PATCH] tests for layers Rev: src/modules/Image/test_layers.in:1.1 --- src/modules/Image/test_layers.in | 144 +++++++++++++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 src/modules/Image/test_layers.in diff --git a/src/modules/Image/test_layers.in b/src/modules/Image/test_layers.in new file mode 100644 index 0000000000..cf6bfe91b8 --- /dev/null +++ b/src/modules/Image/test_layers.in @@ -0,0 +1,144 @@ +#module Image.Image +#chapter Layers + +#test Layers + object i_red=Image.Image(100,100,"red"); + object i_green=Image.Image(100,100,"green"); + object i_blue=Image.Image(100,100,"blue"); + object i_white=Image.Image(100,100,"white"); + object i_black=Image.Image(100,100,"black"); + + object i_spot=Image.Image(100,100); + i_spot->box(20,20,80,80,"white"); + + array normal_layers= + ({ + ({"red", Image.Layer(i_red) }), + ({"green", Image.Layer(i_green) }), + ({"blue", Image.Layer(i_blue) }), + ({"white", Image.Layer(i_white) }), + ({"black", Image.Layer(i_black) }), + ({"spot", Image.Layer(i_spot) }), + + ({"red-spot", Image.Layer(i_red,i_spot) }), + ({"green-spot", Image.Layer(i_green,i_spot) }), + ({"blue-spot", Image.Layer(i_blue,i_spot) }), + ({"white-spot", Image.Layer(i_white,i_spot) }), + ({"black-spot", Image.Layer(i_black,i_spot) }), + ({"spot-spot", Image.Layer(i_spot,i_spot) }), + }); + + // test lay one layer + foreach (normal_layers,array la) + { + object l=la[1]; + object e_i=l->image()->copy(),e_a; + if (l->alpha()) e_a=l->alpha()->copy(); else e_a=i_white; + + object res=Image.lay(({l})); + if (e_i!=res->image()) fail("image differ (a):"+la[0]+"\n"); + if (e_a!=res->alpha()) fail("alpha differ (a):"+la[0]+"\n"); + + l->set_offset(200,200); + object res=Image.lay(({l})); + if (e_i!=res->image()) fail("image differ (b):"+la[0]+"\n"); + if (e_a!=res->alpha()) fail("alpha differ (b):"+la[0]+"\n"); + + l->set_offset(-200,-200); + object res=Image.lay(({l})); + if (e_i!=res->image()) fail("image differ (c):"+la[0]+"\n"); + if (e_a!=res->alpha()) fail("alpha differ (c):"+la[0]+"\n"); + + l->set_offset(0,0); + object res=Image.lay(({l}),0,0,100,100); + if (e_i!=res->image()) fail("image differ (d):"+la[0]+"\n"); + if (e_a!=res->alpha()) fail("alpha differ (d):"+la[0]+"\n"); + + l->set_offset(-200,-200); + object res=Image.lay(({l}),-200,-200,100,100); + if (e_i!=res->image()) fail("image differ (e):"+la[0]+"\n"); + if (e_a!=res->alpha()) fail("alpha differ (e):"+la[0]+"\n"); + + l->set_offset(200,200); + object res=Image.lay(({l}),200,200,100,100); + if (e_i!=res->image()) fail("image differ (f):"+la[0]+"\n"); + if (e_a!=res->alpha()) fail("alpha differ (f):"+la[0]+"\n"); + + object res=Image.lay(({l}),0,0,100,100); + if (res->alpha()!=i_black) fail("alpha differ (g):"+la[0]+"\n"); + } + + foreach (normal_layers,array l) l[1]->set_offset(0,0); + + werror(" (2)"); + foreach (normal_layers,array la) + { + werror("."); + + foreach (normal_layers,array lb) + { + object a=la[1],aa; + object b=lb[1],ba; + object e_i,e_a; + if (a->alpha()) aa=a->alpha(); else aa=i_white; + if (b->alpha()) ba=b->alpha(); else ba=i_white; + e_i=i_white->copy(); + e_i=e_i->paste_mask(a->image(),aa); + e_i=e_i->paste_mask(b->image(),ba); + e_i*=(e_a=aa+ba); + + a->set_offset(0,0); + b->set_offset(0,0); + object res=Image.lay(({a,b})); + if (e_i!=res->image()*e_a) fail("image differ :"+la[0]+"+"+lb[0]+"\n"); + if (e_a!=res->alpha()) fail("alpha differ :"+la[0]+"+"+lb[0]+"\n"); + + a->set_offset(200,200); + b->set_offset(200,200); + object res=Image.lay(({a,b}),200,200,100,100); + if (e_i!=res->image()*e_a) fail("image differ (b):"+la[0]+"+"+lb[0]+"\n"); + if (e_a!=res->alpha()) fail("alpha differ (b):"+la[0]+"+"+lb[0]+"\n"); + + if (a!=b) + { + a->set_offset(200,200); + b->set_offset(-200,-200); + object res=Image.lay(({a,b}),200,200,100,100); + if (a->image()*aa!=res->image()*aa) fail("image differ (c):"+la[0]+"+"+lb[0]+"\n"); + if (aa!=res->alpha()) fail("alpha differ (c):"+la[0]+"+"+lb[0]+"\n"); + } + } + } + + foreach (normal_layers,array l) l[1]->set_offset(0,0); + + werror(" (3)"); + foreach (normal_layers,array la) + { + Stdio.stderr->write(" "); + foreach (normal_layers,array lb) + { + Stdio.stderr->write("."); + foreach (normal_layers,array lc) + { + object a=la[1],aa; + object b=lb[1],ba; + object c=lc[1],ca; + object e_i,e_a; + if (a->alpha()) aa=a->alpha(); else aa=i_white; + if (b->alpha()) ba=b->alpha(); else ba=i_white; + if (c->alpha()) ca=c->alpha(); else ca=i_white; + e_i=i_white->copy(); + e_i=e_i->paste_mask(a->image(),aa); + e_i=e_i->paste_mask(b->image(),ba); + e_i=e_i->paste_mask(c->image(),ca); + e_i*=(e_a=aa+ba+ca); + + object res=Image.lay(({a,b,c})); + if (e_i!=res->image()*e_a) { xv(a); xv(b); xv(c); xv(res); xv(e_i); xv(res->image()); xv(res->image()*e_a); xv(e_a); fail("image differ / "+la[0]+"+"+lb[0]+"+"+lc[0]+"\n"); } + if (e_a!=res->alpha()) fail("alpha differ / "+la[0]+"+"+lb[0]+"+"+lc[0]+"\n"); + } + } + } + + ok(); -- GitLab