You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and dots ('.'), can be up to 35 characters long. Letters must be lowercase.
		
		
		
		
		
			
		
			
				
					
					
						
							87 lines
						
					
					
						
							2.9 KiB
						
					
					
				
			
		
		
	
	
							87 lines
						
					
					
						
							2.9 KiB
						
					
					
				#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; | 
						|
}
 | 
						|
 |