extern "C" JNIEXPORT jboolean JNICALL Java_net_osmand_plus_render_NativeOsmandLibrary_initBinaryMapFile(JNIEnv* ienv, jobject obj, jobject path) { // Verify that the version of the library that we linked against is const char* utf = ienv->GetStringUTFChars((jstring) path, NULL); std::string inputName(utf); ienv->ReleaseStringUTFChars((jstring) path, utf); return (initBinaryMapFile(inputName) != NULL); }
int main(int argc, char **argv) { if (argc <= 1) { // 1. Test Rendering rule storage // testRenderingRuleStorage("/home/victor/projects/OsmAnd/git/DataExtractionOSM/src/net/osmand/render/", // "test_depends.render.xml" // "default.render.xml" // ); // 2. Test simple rendering printUsage(""); return 1; } const char* f = argv[1]; if (f[0] == '-') { // command if (f[1]=='v') { if (argc < 2) { printUsage("Missing file parameter"); } else { VerboseInfo* vinfo = new VerboseInfo(argc, argv); printFileInformation(argv[argc -1], vinfo); } } else if (f[1]=='r') { if (argc < 2) { printUsage("Missing file parameter"); } else { RenderingInfo* info = new RenderingInfo(argc, argv); char s[100]; for (int i = 1; i != argc; ++i) { if (sscanf(argv[i], "-renderingInputFile=%s", s)) { BinaryMapFile* mf = initBinaryMapFile(s); osmand_log_print(LOG_INFO, "Init %d (success) binary map file %s.", mf->version, mf->inputName.c_str()); } } runSimpleRendering(info->renderingFileName, info->imagesFileName, info); for (int i = 1; i != argc; ++i) { if (sscanf(argv[i], "-renderingInputFile=%s", s)) { closeBinaryMapFile(s); } } delete info; } } else { printUsage("Unknown command"); } } else { printFileInformation(f, NULL); } SkGraphics::PurgeFontCache(); purgeCachedBitmaps(); }
void printFileInformation(const char* fileName, VerboseInfo* verbose) { BinaryMapFile* file = initBinaryMapFile(fileName); std::vector<BinaryPartIndex*>::iterator its = file->indexes.begin(); time_t date = file->dateCreated/1000; printf("Obf file.\n Version %d, basemap %d, date %s \n", file->version, file->basemap, ctime(&date)); int i = 1; for (; its != file->indexes.end(); its++, i++) { BinaryPartIndex* it = *its; std::string partname = ""; if (it->type == MAP_INDEX) { partname = "Map"; } else if (it->type == TRANSPORT_INDEX) { partname = "Transport"; } else if (it->type == ROUTING_INDEX) { partname = "Routing"; } else if (it->type == POI_INDEX) { partname = "Poi"; } else if (it->type == ADDRESS_INDEX) { partname = "Address"; } printf("%d. %s data %s - %d bytes\n", i, partname.c_str(), it->name.c_str(), it->length); if (it->type == MAP_INDEX) { MapIndex* m = ((MapIndex*) it); int j = 1; std::vector<MapRoot>::iterator rt = m->levels.begin(); for (; rt != m->levels.end(); rt++) { const char* ch = formatBounds(rt->left, rt->right, rt->top, rt->bottom); printf("\t%d.%d Map level minZoom = %d, maxZoom = %d, size = %d bytes \n\t\t Bounds %s \n", i, j++, rt->minZoom, rt->maxZoom, rt->length, ch); } if ((verbose != NULL && verbose->vmap)) { // FIXME //printMapDetailInfo(verbose, index); } } else if (it->type == TRANSPORT_INDEX) { // FIXME // TransportIndex ti = ((TransportIndex) p); // int sh = (31 - BinaryMapIndexReader.TRANSPORT_STOP_ZOOM); // println( // "\t Bounds " // + formatBounds(ti.getLeft() << sh, ti.getRight() << sh, ti.getTop() << sh, // ti.getBottom() << sh)); } else if (it->type == POI_INDEX && (verbose != NULL && verbose->vpoi)) { //printPOIDetailInfo(verbose, index, (PoiRegion) p); } else if (it->type == ADDRESS_INDEX && (verbose != NULL && verbose->vaddress)) { // printAddressDetailedInfo(verbose, index); } } }