static void sample_tile(texgz_tex_t* src, texgz_tex_t* dst, int month, int x, int y, double latT, double lonL, double latB, double lonR) { assert(src); assert(dst); int m; int n; for(m = 0; m < SUBTILE_SIZE; ++m) { for(n = 0; n < SUBTILE_SIZE; ++n) { sample_data(src, dst, x, y, m, n, latT, lonL, latB, lonR); } } // export the tile char fname[256]; snprintf(fname, 256, "png256/%i/9/%i/%i.png", month, x, y); fname[255] = '\0'; mymkdir(fname); texgz_png_export(dst, fname); }
int main(int argc, char** argv) { unsigned char dx = 0; unsigned char dy = 0; const char* arg_format = NULL; const char* arg_src = NULL; const char* arg_dst = NULL; if(argc == 6) { dx = (unsigned char) strtoul(argv[2], (char**) NULL, 10); dy = (unsigned char) strtoul(argv[3], (char**) NULL, 10); arg_format = argv[1]; arg_src = argv[4]; arg_dst = argv[5]; } else if(argc == 4) { arg_format = argv[1]; arg_src = argv[2]; arg_dst = argv[3]; if(check_ext(arg_src, "mgm")) { usage(argv[0]); return EXIT_FAILURE; } } else { usage(argv[0]); return EXIT_FAILURE; } // parse format int type; int format; if(strcmp(arg_format, "RGBA-8888") == 0) { type = TEXGZ_UNSIGNED_BYTE; format = TEXGZ_RGBA; } else if(strcmp(arg_format, "BGRA-8888") == 0) { type = TEXGZ_UNSIGNED_BYTE; format = TEXGZ_BGRA; } else if(strcmp(arg_format, "RGB-565") == 0) { type = TEXGZ_UNSIGNED_SHORT_5_6_5; format = TEXGZ_RGB; } else if(strcmp(arg_format, "RGBA-4444") == 0) { type = TEXGZ_UNSIGNED_SHORT_4_4_4_4; format = TEXGZ_RGBA; } else if(strcmp(arg_format, "RGB-888") == 0) { type = TEXGZ_UNSIGNED_BYTE; format = TEXGZ_RGB; } else if(strcmp(arg_format, "RGBA-5551") == 0) { type = TEXGZ_UNSIGNED_SHORT_5_5_5_1; format = TEXGZ_RGBA; } else if(strcmp(arg_format, "LUMINANCE") == 0) { type = TEXGZ_UNSIGNED_BYTE; format = TEXGZ_LUMINANCE; } else if(strcmp(arg_format, "LUMINANCE-F") == 0) { type = TEXGZ_FLOAT; format = TEXGZ_LUMINANCE; } else { LOGE("invalid format=%s", arg_format); return EXIT_FAILURE; } // import src texgz_tex_t* tex = NULL; if(check_ext(arg_src, "texgz")) { tex = texgz_tex_import(arg_src); } else if(check_ext(arg_src, "jpg")) { tex = texgz_jpeg_import(arg_src); } else if(check_ext(arg_src, "png")) { tex = texgz_png_import(arg_src); } else if(check_ext(arg_src, "mgm")) { tex = texgz_mgm_import(arg_src, dx, dy); } else { LOGE("invalid src=%s", arg_src); return EXIT_FAILURE; } if(tex == NULL) { return EXIT_FAILURE; } // convert to format if(texgz_tex_convert(tex, type, format) == 0) { goto fail_convert; } // export dst int ret = 0; if(check_ext(arg_dst, "texgz")) { ret = texgz_tex_export(tex, arg_dst); } else if(check_ext(arg_dst, "jpg")) { ret = texgz_jpeg_export(tex, arg_dst); } else if(check_ext(arg_dst, "png")) { ret = texgz_png_export(tex, arg_dst); } else { LOGE("invalid dst=%s", arg_dst); goto fail_dst; } if(ret == 0) { goto fail_export; } texgz_tex_delete(&tex); // success return EXIT_SUCCESS; // failure fail_export: fail_dst: fail_convert: texgz_tex_delete(&tex); return EXIT_FAILURE; }