1 /* Asset Package Compiler */
11 extern void yyerror();
16 int handle_fname(char *);
17 int eval_png_file(char*);
18 int read_png_file(char*);
21 %define parse.error verbose
26 /* %token <str> EXT */
28 /* %token <str> SPR */
33 /* SS: SPR '/' MD '.' EXT */
43 FLIST : FLIST FNAME {printf("reducing to flist\n");} /* Now output to asspack.o */ | FNAME
44 FNAME : FDAT {printf("handle_fname(%s)\n", $1);handle_fname(yylval.str);printf("handled fname\n");}
48 main(int argc, char** argv)
50 /* Parse cmd line arguments */
53 yyparse(); /* runs handle_fname for each filename */
59 yyerror (char const *s)
61 fprintf(stderr, "%s\n", s);
66 /* Analyze file_name for information on sprite sheet,
67 store sprite sheet and label into sprite then
68 push sprite onto sprites[]*/
70 handle_fname(char* file_name)
72 /* Parse the file_name for data */
75 /* Get the specs of the PNG file */
76 if(eval_png_file(file_name))
78 printf("Failed in eval_png_file\n");
82 /* Insert sprite sheet from PNG into sprite_sheets */
88 /* Store dir/filename in label as well as any other data that fits */
90 int eval_png_file(char* file_name)
92 /* Evaluate file_name for metadata */
94 /* Extracts header info from png_file */
95 read_png_file(file_name);
97 /* Create the symbol and put it in symbol_table[]*/
104 /* variables for libPNG */
105 int png_width,png_height;
112 read_png_file( char* file_name)
117 char* dir = "pngfiles";
119 /* TODO: Change this fopen to a real var! */
120 FILE *fp = fopen("pngfiles/env_street_road03_0.png","rb");
123 { printf("Could not read file %s in handle_fname()", file_name);
127 fread(header, 1, 8, fp);
129 is_png = !png_sig_cmp(header, 0, 8);
133 png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
136 { printf("Failed to allocate png_ptr\n");
139 info_ptr = png_create_info_struct(png_ptr);
142 { printf("Failed to create info_ptr\n");
143 png_destroy_read_struct(&png_ptr,(png_infopp)NULL, (png_infopp)NULL);
147 png_infop end_info = png_create_info_struct(png_ptr);
149 { printf("Failed to create end_info \n");
150 png_destroy_read_struct(&png_ptr,(png_infopp)NULL, (png_infopp)NULL);
154 if(setjmp(png_jmpbuf(png_ptr)))
155 { printf("Failed in init_io\n");
156 png_destroy_read_struct(&png_ptr,(png_infopp)NULL, (png_infopp)NULL);
160 png_init_io(png_ptr, fp);
161 png_set_sig_bytes(png_ptr, 8);
163 png_read_info(png_ptr, info_ptr);
165 png_width = png_get_image_width(png_ptr, info_ptr);
166 png_height = png_get_image_height(png_ptr, info_ptr);
167 color_type = png_get_color_type(png_ptr, info_ptr);
168 bit_depth = png_get_bit_depth(png_ptr, info_ptr);
170 png_read_update_info(png_ptr, info_ptr);
172 printf("successfully read png file %s\n", file_name);