From: <tj...@us...> - 2010-09-12 12:39:02
|
Revision: 13720 http://alleg.svn.sourceforge.net/alleg/?rev=13720&view=rev Author: tjaden Date: 2010-09-12 12:38:55 +0000 (Sun, 12 Sep 2010) Log Message: ----------- test_driver: Add some tests for al_draw_prim, derived from ex_prim. Modified Paths: -------------- allegro/branches/4.9/tests/test_driver.c allegro/branches/4.9/tests/test_prim.ini Modified: allegro/branches/4.9/tests/test_driver.c =================================================================== --- allegro/branches/4.9/tests/test_driver.c 2010-09-12 11:18:28 UTC (rev 13719) +++ allegro/branches/4.9/tests/test_driver.c 2010-09-12 12:38:55 UTC (rev 13720) @@ -12,6 +12,7 @@ #define MAX_BITMAPS 8 #define MAX_TRANS 8 #define MAX_FONTS 8 +#define MAX_VERTICES 100 typedef struct { ALLEGRO_USTR *name; @@ -49,6 +50,7 @@ LockRegion lock_region; Transform transforms[MAX_TRANS]; Font fonts[MAX_FONTS]; +ALLEGRO_VERTEX vertices[MAX_VERTICES]; int num_global_bitmaps; float delay = 0.0; bool save_outputs = false; @@ -228,6 +230,9 @@ if (streq(value, "target")) return target; + if (streq(value, "0") || streq(value, "NULL")) + return NULL; + error("undefined bitmap: %s", value); return NULL; } @@ -366,6 +371,50 @@ : atoi(value); } +static void fill_vertices(ALLEGRO_CONFIG const *cfg, char const *name) +{ +#define MAXBUF 80 + + char const *value; + char buf[MAXBUF]; + float x, y, z; + float u, v; + int i; + + memset(vertices, 0, sizeof(vertices)); + + for (i = 0; i < MAX_VERTICES; i++) { + sprintf(buf, "v%d", i); + value = al_get_config_value(cfg, name, buf); + if (!value) + return; + + if (sscanf(value, " %f , %f , %f ; %f , %f ; %s", + &x, &y, &z, &u, &v, buf) == 6) { + vertices[i].x = x; + vertices[i].y = y; + vertices[i].z = z; + vertices[i].u = u; + vertices[i].v = v; + vertices[i].color = get_color(buf); + } + } + +#undef MAXBUF +} + +static int get_prim_type(char const *value) +{ + return streq(value, "ALLEGRO_PRIM_POINT_LIST") ? ALLEGRO_PRIM_POINT_LIST + : streq(value, "ALLEGRO_PRIM_LINE_LIST") ? ALLEGRO_PRIM_LINE_LIST + : streq(value, "ALLEGRO_PRIM_LINE_STRIP") ? ALLEGRO_PRIM_LINE_STRIP + : streq(value, "ALLEGRO_PRIM_LINE_LOOP") ? ALLEGRO_PRIM_LINE_LOOP + : streq(value, "ALLEGRO_PRIM_TRIANGLE_LIST") ? ALLEGRO_PRIM_TRIANGLE_LIST + : streq(value, "ALLEGRO_PRIM_TRIANGLE_STRIP") ? ALLEGRO_PRIM_TRIANGLE_STRIP + : streq(value, "ALLEGRO_PRIM_TRIANGLE_FAN") ? ALLEGRO_PRIM_TRIANGLE_FAN + : atoi(value); +} + /* FNV-1a algorithm, parameters from: * http://www.isthe.com/chongo/tech/comp/fnv/index.html */ @@ -983,6 +1032,12 @@ continue; } } + if (SCAN("al_draw_prim", 6)) { + fill_vertices(cfg, V(0)); + /* decl arg is ignored */ + al_draw_prim(vertices, NULL, B(2), I(3), I(4), get_prim_type(V(5))); + continue; + } error("statement didn't scan: %s", stmt); } @@ -1097,6 +1152,7 @@ } else { cfg2 = al_create_config(); + al_merge_config_into(cfg2, cfg); merge_config_sections(cfg2, section, cfg, section); sw_hw_test(cfg2, section); al_destroy_config(cfg2); Modified: allegro/branches/4.9/tests/test_prim.ini =================================================================== --- allegro/branches/4.9/tests/test_prim.ini 2010-09-12 11:18:28 UTC (rev 13719) +++ allegro/branches/4.9/tests/test_prim.ini 2010-09-12 12:38:55 UTC (rev 13720) @@ -1,5 +1,6 @@ [bitmaps] bkg=../examples/data/bkg.png +texture=../examples/data/texture.tga [hl] op0= al_draw_bitmap(bkg, 0, 0, 0) @@ -86,3 +87,97 @@ op3=al_draw_circle(350, 250, 200, #00aaaa80, 50) op4=al_draw_filled_circle(250, 175, 75, #aa660080) hash=484ad11f + +[test filled notex blend] +op0= +op1=al_draw_bitmap(bkg, 0, 0, 0) +op2=al_build_transform(t, 320, 240, 1, 1, 1.0) +op3=al_use_transform(t) +op4=al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_ONE) +op5=al_draw_prim(vtx_notex, 0, 0, 0, 6, ALLEGRO_PRIM_TRIANGLE_FAN) +op6=al_draw_prim(vtx_notex, 0, 0, 7, 13, ALLEGRO_PRIM_TRIANGLE_LIST) +op7=al_draw_prim(vtx_notex, 0, 0, 14, 20, ALLEGRO_PRIM_TRIANGLE_STRIP) +hash=1312b9c9 +sig=766666666766P66766656657K776767676667666975I5666LK556766KPJ6766657NJ7576776666766 + +[test filled notex opaque] +extend=test filled notex blend +op4=al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_ZERO) +hash=2ac96499 +sig=766666666766I66766656657E776767676667666775B5666FE556766EID6766657GC7576776666766 + +[test filled textured blend] +op0= +op1=al_draw_bitmap(bkg, 0, 0, 0) +op2=al_build_transform(t, 320, 240, 1, 1, 1.0) +op3=al_use_transform(t) +op4=al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_ONE) +op5=al_draw_prim(vtx_tex, 0, texture, 0, 6, ALLEGRO_PRIM_TRIANGLE_FAN) +op6=al_draw_prim(vtx_tex, 0, texture, 7, 13, ALLEGRO_PRIM_TRIANGLE_LIST) +op7=al_draw_prim(vtx_tex, 0, texture, 14, 20, ALLEGRO_PRIM_TRIANGLE_STRIP) +hash=04d0ae2f +sig=766666666766B66766656657977676767666766687585666NP556766RXS6766657fR7576776666766 + +[test filled textured blend clip] +extend=test filled textured blend +op0=al_set_clipping_rectangle(150, 80, 340, 280) +hash=4b485162 +sig=000000000006B66700006657900006767600006687500006NP550000RXS6700000000000000000000 + +[test filled textured opaque] +extend=test filled textured blend +op4=al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_ZERO) +hash=67cc8955 +sig=766666666766466766656657377676767666766677515666IK556766LTN6766657cK7576776666766 + +[test filled textured opaque clip] +extend=test filled textured opaque +op0=al_set_clipping_rectangle(150, 80, 340, 280) +hash=42db2b52 +sig=000000000006466700006657300006767600006677500006IK550000LTN6700000000000000000000 + +[vtx_notex] +v0 = 0.000000, 0.000000, 0.000000; 0.000000, 0.000000; #408000 +v1 = 190.211304, 61.803402, 0.000000; 0.000000, 0.000000; #804040 +v2 = 121.352547, 88.167786, 0.000000; 0.000000, 0.000000; #000080 +v3 = 117.557053, 161.803406, 0.000000; 0.000000, 0.000000; #408000 +v4 = 46.352547, 142.658478, 0.000000; 0.000000, 0.000000; #804040 +v5 = -0.000009, 200.000000, 0.000000; 0.000000, 0.000000; #000080 +v6 = -46.352554, 142.658478, 0.000000; 0.000000, 0.000000; #408000 +v7 = -117.557037, 161.803406, 0.000000; 0.000000, 0.000000; #804040 +v8 = -121.352547, 88.167778, 0.000000; 0.000000, 0.000000; #000080 +v9 = -190.211304, 61.803406, 0.000000; 0.000000, 0.000000; #408000 +v10= -150.000000, -0.000013, 0.000000; 0.000000, 0.000000; #804040 +v11= -190.211304, -61.803394, 0.000000; 0.000000, 0.000000; #000080 +v12= -121.352539, -88.167801, 0.000000; 0.000000, 0.000000; #408000 +v13= -117.557083, -161.803360, 0.000000; 0.000000, 0.000000; #804040 +v14= -46.352562, -142.658478, 0.000000; 0.000000, 0.000000; #000080 +v15= 0.000002, -200.000000, 0.000000; 0.000000, 0.000000; #408000 +v16= 46.352570, -142.658478, 0.000000; 0.000000, 0.000000; #804040 +v17= 117.557098, -161.803360, 0.000000; 0.000000, 0.000000; #000080 +v18= 121.352539, -88.167793, 0.000000; 0.000000, 0.000000; #408000 +v19= 190.211304, -61.803391, 0.000000; 0.000000, 0.000000; #804040 +v20= 150.000000, 0.000026, 0.000000; 0.000000, 0.000000; #000080 + +[vtx_tex] +v0 = 0.000000, 0.000000, 0.000000; 0.000000, 0.000000; #ffffff +v1 = 190.211304, 61.803402, 0.000000; 121.735237, 39.554176; #ffffff +v2 = 121.352547, 88.167786, 0.000000; 77.665627, 56.427383; #ffffff +v3 = 117.557053, 161.803406, 0.000000; 75.236511, 103.554176; #ffffff +v4 = 46.352547, 142.658478, 0.000000; 29.665630, 91.301422; #ffffff +v5 = -0.000009, 200.000000, 0.000000; -0.000006, 128.000000; #ffffff +v6 = -46.352554, 142.658478, 0.000000; -29.665634, 91.301422; #ffffff +v7 = -117.557037, 161.803406, 0.000000; -75.236504, 103.554176; #ffffff +v8 = -121.352547, 88.167778, 0.000000; -77.665627, 56.427380; #ffffff +v9 = -190.211304, 61.803406, 0.000000; -121.735237, 39.554180; #ffffff +v10= -150.000000, -0.000013, 0.000000; -96.000000, -0.000008; #804040 +v11= -190.211304, -61.803394, 0.000000; -121.735237, -39.554173; #000080 +v12= -121.352539, -88.167801, 0.000000; -77.665627, -56.427391; #408000 +v13= -117.557083, -161.803360, 0.000000; -75.236534, -103.554153; #804040 +v14= -46.352562, -142.658478, 0.000000; -29.665640, -91.301422; #000080 +v15= 0.000002, -200.000000, 0.000000; 0.000002, -128.000000; #408000 +v16= 46.352570, -142.658478, 0.000000; 29.665644, -91.301422; #804040 +v17= 117.557098, -161.803360, 0.000000; 75.236542, -103.554153; #000080 +v18= 121.352539, -88.167793, 0.000000; 77.665627, -56.427387; #408000 +v19= 190.211304, -61.803391, 0.000000; 121.735237, -39.554169; #804040 +v20= 150.000000, 0.000026, 0.000000; 96.000000, 0.000017; #000080 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |