virtual void OnPaint(Canvas &canvas) override { canvas.ClearWhite(); const GeoPoint a(Angle::Degrees(7.70722), Angle::Degrees(51.052)); const GeoPoint b(Angle::Degrees(11.5228), Angle::Degrees(50.3972)); WindowProjection projection; projection.SetScreenOrigin(canvas.GetWidth() / 2, canvas.GetHeight() / 2); projection.SetGeoLocation(a.Middle(b)); projection.SetScreenSize(canvas.GetSize()); projection.SetScaleFromRadius(fixed(400000)); projection.UpdateScreenBounds(); canvas.SelectBlackPen(); canvas.SelectHollowBrush(); RasterPoint pa = projection.GeoToScreen(a); canvas.DrawCircle(pa.x, pa.y, 4); RasterPoint pb = projection.GeoToScreen(b); canvas.DrawCircle(pb.x, pb.y, 4); RenderFAISector(canvas, projection, a, b, false, settings); }
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]; TCHAR jp2_path[4096]; _tcscpy(jp2_path, PathName(map_path)); _tcscat(jp2_path, _T(DIR_SEPARATOR_S) _T("terrain.jp2")); TCHAR j2w_path[4096]; _tcscpy(j2w_path, PathName(map_path)); _tcscat(j2w_path, _T(DIR_SEPARATOR_S) _T("terrain.j2w")); NullOperationEnvironment operation; RasterMap map(jp2_path, j2w_path, NULL, operation); if (!map.isMapLoaded()) { fprintf(stderr, "failed to load map\n"); return EXIT_FAILURE; } do { map.SetViewCenter(map.GetMapCenter(), fixed(50000)); } while (map.IsDirty()); fixed radius = fixed(50000); WindowProjection projection; projection.SetScreenSize(640, 480); projection.SetScaleFromRadius(radius); projection.SetGeoLocation(map.GetMapCenter()); projection.SetScreenOrigin(320, 240); projection.UpdateScreenBounds(); HeightMatrix matrix; matrix.Fill(map, projection, 1, false); return EXIT_SUCCESS; }