source: josm/trunk/src/org/openstreetmap/josm/io/imagery/HTMLGrabber.java@ 8510

Last change on this file since 8510 was 8510, checked in by Don-vip, 9 years ago

checkstyle: enable relevant whitespace checks and fix them

  • Property svn:eol-style set to native
File size: 2.3 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.io.imagery;
3
4import java.awt.image.BufferedImage;
5import java.io.ByteArrayInputStream;
6import java.io.ByteArrayOutputStream;
7import java.io.IOException;
8import java.net.URL;
9import java.text.MessageFormat;
10import java.util.ArrayList;
11import java.util.List;
12import java.util.StringTokenizer;
13
14import org.openstreetmap.josm.Main;
15import org.openstreetmap.josm.data.preferences.StringProperty;
16import org.openstreetmap.josm.gui.MapView;
17import org.openstreetmap.josm.gui.layer.WMSLayer;
18import org.openstreetmap.josm.tools.ImageProvider;
19import org.openstreetmap.josm.tools.Utils;
20
21public class HTMLGrabber extends WMSGrabber {
22 public static final StringProperty PROP_BROWSER = new StringProperty("imagery.wms.browser", "webkit-image {0}");
23
24 public HTMLGrabber(MapView mv, WMSLayer layer, boolean localOnly) {
25 super(mv, layer, localOnly);
26 }
27
28 @Override
29 protected BufferedImage grab(WMSRequest request, URL url, int attempt) throws IOException {
30 String urlstring = url.toExternalForm();
31
32 Main.info("Grabbing HTML " + (attempt > 1 ? "(attempt " + attempt + ") " : "") + url);
33
34 List<String> cmdParams = new ArrayList<>();
35 StringTokenizer st = new StringTokenizer(MessageFormat.format(PROP_BROWSER.get(), urlstring));
36 while (st.hasMoreTokens()) {
37 cmdParams.add(st.nextToken());
38 }
39
40 ProcessBuilder builder = new ProcessBuilder(cmdParams);
41
42 Process browser;
43 try {
44 browser = builder.start();
45 } catch (IOException ioe) {
46 throw new IOException("Could not start browser. Please check that the executable path is correct.\n" + ioe.getMessage(), ioe);
47 }
48
49 ByteArrayOutputStream baos = new ByteArrayOutputStream();
50 Utils.copyStream(browser.getInputStream(), baos);
51 ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
52 BufferedImage img = layer.normalizeImage(ImageProvider.read(bais, true, WMSLayer.PROP_ALPHA_CHANNEL.get()));
53 bais.reset();
54 layer.cache.saveToCache(layer.isOverlapEnabled() ? img : null,
55 bais, Main.getProjection(), request.getPixelPerDegree(), b.minEast, b.minNorth);
56
57 return img;
58 }
59}
Note: See TracBrowser for help on using the repository browser.