int main(int argc, char **argv) { Args args(argc, argv, "PATH"); const char *map_path = args.ExpectNext(); args.ExpectEnd(); char jp2_path[4096]; strcpy(jp2_path, map_path); strcat(jp2_path, DIR_SEPARATOR_S "terrain.jp2"); TCHAR j2w_path[4096]; _tcscpy(j2w_path, PathName(map_path)); _tcscat(j2w_path, _T(DIR_SEPARATOR_S) _T("terrain.j2w")); NullOperationEnvironment operation; RasterTileCache rtc; if (!rtc.LoadOverview(jp2_path, j2w_path, operation)) { fprintf(stderr, "LoadOverview failed\n"); return EXIT_FAILURE; } GeoBounds bounds = rtc.GetBounds(); printf("bounds = %f|%f - %f|%f\n", (double)bounds.GetWest().Degrees(), (double)bounds.GetNorth().Degrees(), (double)bounds.GetEast().Degrees(), (double)bounds.GetSouth().Degrees()); do { rtc.UpdateTiles(jp2_path, rtc.GetWidth() / 2, rtc.GetHeight() / 2, 1000); } while (rtc.IsDirty()); return EXIT_SUCCESS; }
int main(int argc, char **argv) { Args args(argc, argv, "PATH"); const auto map_path = args.ExpectNext(); args.ExpectEnd(); ZZIP_DIR *dir = zzip_dir_open(map_path, nullptr); if (dir == nullptr) { fprintf(stderr, "Failed to open %s\n", map_path); return EXIT_FAILURE; } NullOperationEnvironment operation; RasterTileCache rtc; if (!LoadTerrainOverview(dir, rtc, operation)) { fprintf(stderr, "LoadOverview failed\n"); zzip_dir_close(dir); return EXIT_FAILURE; } GeoBounds bounds = rtc.GetBounds(); printf("bounds = %f|%f - %f|%f\n", (double)bounds.GetWest().Degrees(), (double)bounds.GetNorth().Degrees(), (double)bounds.GetEast().Degrees(), (double)bounds.GetSouth().Degrees()); SharedMutex mutex; do { UpdateTerrainTiles(dir, rtc, mutex, rtc.GetWidth() / 2, rtc.GetHeight() / 2, 1000); } while (rtc.IsDirty()); zzip_dir_close(dir); return EXIT_SUCCESS; }
int main(int argc, char **argv) { if (argc != 2) { fprintf(stderr, "Usage: %s PATH\n", argv[0]); return 1; } const char *map_path = argv[1]; char jp2_path[4096]; strcpy(jp2_path, map_path); strcat(jp2_path, DIR_SEPARATOR_S "terrain.jp2"); TCHAR j2w_path[4096]; _tcscpy(j2w_path, PathName(map_path)); _tcscat(j2w_path, _T(DIR_SEPARATOR_S) _T("terrain.j2w")); NullOperationEnvironment operation; RasterTileCache rtc; if (!rtc.LoadOverview(jp2_path, j2w_path, operation)) { fprintf(stderr, "LoadOverview failed\n"); return EXIT_FAILURE; } GeoBounds bounds = rtc.GetBounds(); printf("bounds = %f|%f - %f|%f\n", (double)bounds.west.value_degrees(), (double)bounds.north.value_degrees(), (double)bounds.east.value_degrees(), (double)bounds.south.value_degrees()); do { rtc.UpdateTiles(jp2_path, rtc.GetWidth() / 2, rtc.GetHeight() / 2, fixed(50000)); } while (rtc.IsDirty()); return EXIT_SUCCESS; }
gcc_pure bool inside(const GeoPoint &pt) const { return raster_tile_cache.GetBounds().IsInside(pt); }
bool isMapLoaded() const { return raster_tile_cache.GetInitialised(); }
const GeoBounds &GetBounds() const { return raster_tile_cache.GetBounds(); }
bool jas_rtc_PollTiles(int view_x, int view_y) { return jas_rtc.PollTiles(view_x, view_y); }
const Serial &GetSerial() const { return raster_tile_cache.GetSerial(); }
void jas_rtc_SetTile(int index, int xstart, int ystart, int xend, int yend) { jas_rtc.SetTile(index, xstart, ystart, xend, yend); }
bool jas_rtc_GetInitialised(void) { return jas_rtc.GetInitialised(); }
void jas_rtc_SetInitialised(bool val) { jas_rtc.SetInitialised(val); }
void jas_rtc_SetSize(int width, int height) { jas_rtc.SetSize(width, height); }
void jas_rtc_SetLatLonBounds(double lon_min, double lon_max, double lat_min, double lat_max) { jas_rtc.SetLatLonBounds(lon_min, lon_max, lat_min, lat_max); }
short* jas_rtc_GetImageBuffer(int index) { return jas_rtc.GetImageBuffer(index); }
gcc_pure GeoPoint GetMapCenter() const { return raster_tile_cache.GetBounds().GetCenter(); }
/** * Determines if SetViewCenter() should be called again to continue * loading. */ gcc_pure bool IsDirty() const { return raster_tile_cache.IsDirty(); }
bool SaveCache(FILE *file) const { return raster_tile_cache.SaveCache(file); }
bool IsDefined() const { return raster_tile_cache.IsValid(); }
bool jas_rtc_TileRequest(int index) { return jas_rtc.TileRequest(index); }