summaryrefslogtreecommitdiff
path: root/thirdparty/stb/tests/herringbone_generator.c
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /thirdparty/stb/tests/herringbone_generator.c
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'thirdparty/stb/tests/herringbone_generator.c')
-rw-r--r--thirdparty/stb/tests/herringbone_generator.c87
1 files changed, 87 insertions, 0 deletions
diff --git a/thirdparty/stb/tests/herringbone_generator.c b/thirdparty/stb/tests/herringbone_generator.c
new file mode 100644
index 0000000..cf2a99e
--- /dev/null
+++ b/thirdparty/stb/tests/herringbone_generator.c
@@ -0,0 +1,87 @@
+#define STB_HERRINGBONE_WANG_TILE_IMPLEMENTATION
+#include "stb_herringbone_wang_tile.h"
+
+#define STB_IMAGE_WRITE_IMPLEMENTATION
+#include "stb_image_write.h"
+
+// e 12 1 1 1 1 1 1 4 4
+
+int main(int argc, char **argv)
+{
+ stbhw_config c = { 0 };
+ int w,h, num_colors,i;
+ unsigned char *data;
+
+ if (argc == 1) goto usage;
+ if (argc < 3) goto error;
+
+ switch (argv[2][0]) {
+ case 'c':
+ if (argc < 8 || argc > 10)
+ goto error;
+ num_colors = 4;
+ c.is_corner = 1;
+ break;
+
+ case 'e':
+ if (argc < 10 || argc > 12)
+ goto error;
+ num_colors = 6;
+ c.is_corner = 0;
+ break;
+
+ default:
+ goto error;
+ }
+
+ c.short_side_len = atoi(argv[3]);
+ for (i=0; i < num_colors; ++i)
+ c.num_color[i] = atoi(argv[4+i]);
+
+ c.num_vary_x = 1;
+ c.num_vary_y = 1;
+
+ if (argc > 4+i)
+ c.num_vary_x = atoi(argv[4+i]);
+ if (argc > 5+i)
+ c.num_vary_y = atoi(argv[5+i]);
+
+ stbhw_get_template_size(&c, &w, &h);
+
+ data = (unsigned char *) malloc(w*h*3);
+
+ if (stbhw_make_template(&c, data, w, h, w*3))
+ stbi_write_png(argv[1], w, h, 3, data, w*3);
+ else
+ fprintf(stderr, "Error: %s\n", stbhw_get_last_error());
+ return 0;
+
+ error:
+ fputs("Invalid command-line arguments\n\n", stderr);
+ usage:
+ fputs("Usage (see source for corner & edge type definitions):\n\n", stderr);
+ fputs("herringbone_generator {outfile} c {sidelen} {c0} {c1} {c2} {c3} [{vx} {vy}]\n"
+ " {outfile} -- filename that template will be written to as PNG\n"
+ " {sidelen} -- length of short side of rectangle in pixels\n"
+ " {c0} -- number of colors for corner type 0\n"
+ " {c1} -- number of colors for corner type 1\n"
+ " {c2} -- number of colors for corner type 2\n"
+ " {c3} -- number of colors for corner type 3\n"
+ " {vx} -- number of color-duplicating variations horizontally in template\n"
+ " {vy} -- number of color-duplicating variations vertically in template\n"
+ "\n"
+ , stderr);
+ fputs("herringbone_generator {outfile} e {sidelen} {e0} {e1} {e2} {e3} {e4} {e5} [{vx} {vy}]\n"
+ " {outfile} -- filename that template will be written to as PNG\n"
+ " {sidelen} -- length of short side of rectangle in pixels\n"
+ " {e0} -- number of colors for edge type 0\n"
+ " {e1} -- number of colors for edge type 1\n"
+ " {e2} -- number of colors for edge type 2\n"
+ " {e3} -- number of colors for edge type 3\n"
+ " {e4} -- number of colors for edge type 4\n"
+ " {e5} -- number of colors for edge type 5\n"
+ " {vx} -- number of color-duplicating variations horizontally in template\n"
+ " {vy} -- number of color-duplicating variations vertically in template\n"
+ , stderr);
+ return 1;
+}