コード例 #1
0
ファイル: LayerManager.java プロジェクト: denisefan28/Wind
 private void paintBackground(WmsRequest request, Graphics2D g) {
   g.setColor(request.getBackgroundColor());
   g.setBackground(request.getBackgroundColor());
   if (request.isTransparent()) g.setComposite(AlphaComposite.getInstance(AlphaComposite.CLEAR));
   else g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.0f));
   g.fillRect(0, 0, 100, 100);
   g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1.0f));
 }
コード例 #2
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);
      }
    }
  }
コード例 #3
0
ファイル: LayerManager.java プロジェクト: denisefan28/Wind
  private MyGraphics createGraphics(WmsRequest request) {
    log.info("creating buffered image");
    BufferedImage image =
        new BufferedImage(request.getWidth(), request.getHeight(), BufferedImage.TYPE_INT_ARGB);
    Graphics2D g = (Graphics2D) image.getGraphics();

    // set rendering options
    prepareGraphics(g);

    // paint the background with transparency as required
    paintBackground(request, g);

    log.info("image ready");
    return new MyGraphics(image, g);
  }
コード例 #4
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;
 }
コード例 #5
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);
    }
  }