- // Create file and write basics
- writer = new FileWriter(inFile);
- writeStartOfFile(writer, model.getModelSize(), lineSeparator);
+ // Write base image if necessary
+ ImageDefinition imageDef = _baseImagePanel.getImageDefinition();
+ boolean useImage = imageDef.getUseImage();
+ if (useImage)
+ {
+ // Get base image from grouter
+ MapSource mapSource = MapSourceLibrary.getSource(imageDef.getSourceIndex());
+ MapGrouter grouter = _baseImagePanel.getGrouter();
+ GroutedImage baseImage = grouter.getMapImage(_track, mapSource, imageDef.getZoom());
+ try
+ {
+ useImage = ImageIO.write(baseImage.getImage(), "png", inImageFile);
+ }
+ catch (IOException ioe) {
+ System.err.println("Can't write image: " + ioe.getClass().getName());
+ useImage = false;
+ }
+ if (!useImage) {
+ _app.showErrorMessage(getNameKey(), "dialog.exportpov.cannotmakebaseimage");
+ }
+ }
+
+ boolean useTerrain = _terrainPanel.getUseTerrain();
+ if (useTerrain)
+ {
+ TerrainHelper terrainHelper = new TerrainHelper(_terrainPanel.getGridSize());
+ Track terrainTrack = terrainHelper.createGridTrack(_track);
+ // Get the altitudes from SRTM for all the points in the track
+ LookupSrtmFunction srtmLookup = (LookupSrtmFunction) FunctionLibrary.FUNCTION_LOOKUP_SRTM;
+ srtmLookup.begin(terrainTrack);
+ while (srtmLookup.isRunning())
+ {
+ try {
+ Thread.sleep(750); // just polling in a wait loop isn't ideal but simple
+ }
+ catch (InterruptedException e) {}
+ }
+ // Fix the voids
+ terrainHelper.fixVoids(terrainTrack);
+
+ model.setTerrain(terrainTrack);
+ model.scale();