コード例 #1
0
ファイル: LayerManager.java プロジェクト: denisefan28/Wind
  private void paintImage(final WmsRequest request, Graphics2D g) {

    log.info("painting layers " + request.getLayers());

    if (DRAW_IN_PARALLEL) {
      paintImageParallel(request, g);
    } else {
      // using only a single g2d seems to help with IE8 png transparency
      // bug (fixed in IE9).
      for (final String layerName : request.getLayers()) {
        paintLayer(g, layerName, layers, request);
      }
    }
  }
コード例 #2
0
ファイル: LayerManager.java プロジェクト: denisefan28/Wind
 Map<String, String> getInfos(Date time, WmsRequest request, Point point, String mimeType) {
   Map<String, String> map = new HashMap<String, String>();
   for (String layerName : request.getLayers()) {
     Layer layer = layers.getLayer(layerName);
     if (layer != null) {
       String info = layer.getInfo(time, request, point, mimeType);
       if (info != null) map.put(layerName, info);
     } else log.warn("no getInfo implementation for layer: " + layerName);
   }
   return map;
 }
コード例 #3
0
ファイル: LayerManager.java プロジェクト: denisefan28/Wind
  private void paintImageParallel(WmsRequest request, Graphics2D g) {
    // create future for each worker (layer)
    List<Future<BufferedImage>> futures = new ArrayList<Future<BufferedImage>>();

    for (final String layerName : request.getLayers()) {
      // create a worker for layer
      Callable<BufferedImage> worker = createWorker(layers, layerName, request);
      // start the worker
      Future<BufferedImage> submit = executor.submit(worker);
      // record the worker in a list so we can paint the images in
      // order later
      futures.add(submit);
    }
    // wait for each image to complete in turn then draw it to the
    // everything graphics object
    for (Future<BufferedImage> future : futures) {
      drawImage(g, future);
    }
  }