// ********************************************************************** // // <copyright> // // BBN Technologies // 10 Moulton Street // Cambridge, MA 02138 // (617) 873-8000 // // Copyright (C) BBNT Solutions LLC. All rights reserved. // // </copyright> // ********************************************************************** // // $Source: /cvs/distapps/openmap/src/openmap/com/bbn/openmap/layer/policy/StandardRenderPolicy.java,v $ // $RCSfile: StandardRenderPolicy.java,v $ // $Revision: 1.9 $ // $Date: 2005/10/26 15:47:42 $ // $Author: dietrick $ // // ********************************************************************** package com.bbn.openmap.layer.policy; import java.awt.Composite; import java.awt.Graphics; import java.awt.Graphics2D; import java.util.logging.Level; import java.util.logging.Logger; import com.bbn.openmap.OMComponent; import com.bbn.openmap.layer.OMGraphicHandlerLayer; import com.bbn.openmap.omGraphics.OMGraphicList; import com.bbn.openmap.proj.Projection; /** * The StandardRenderPolicy is a RenderPolicy that simply paints the current * graphic list. No conditions or deviations are considered. */ public class StandardRenderPolicy extends OMComponent implements RenderPolicy { public static Logger logger = Logger.getLogger("com.bbn.openmap.layer.policy.RenderPolicy"); /** * Don't let this be null, nothing will happen. At all. */ protected OMGraphicHandlerLayer layer; protected Composite composite; public StandardRenderPolicy() { } /** * Don't pass in a null layer. */ public StandardRenderPolicy(OMGraphicHandlerLayer layer) { this(); setLayer(layer); } public void setLayer(OMGraphicHandlerLayer l) { layer = l; } public OMGraphicHandlerLayer getLayer() { return layer; } public Composite getComposite() { return composite; } /** * Can be used to set Composite objects (like AlphaComposite) on Graphics2D * objects before the layer is painted. * * @param composite */ public void setComposite(Composite composite) { this.composite = composite; } /** * Call made by the policy from the paint(g) method in order to set the * composite on the Graphics2D object. This method is meant to be overridden * if needed. * * @param g Graphics2D that the Composite will be set on. */ protected void setCompositeOnGraphics(Graphics2D g) { if (composite != null) { g.setComposite(composite); } } /** * The StandardRenderPolicy doesn't need to do anything before prepare() * returns. */ public void prePrepare(Projection newProj) { // NOOP } public OMGraphicList prepare() { if (layer != null) { return layer.prepare(); } else { return null; } } /** * Assumes that the OMGraphicList to be rendered is set on the * OMGraphicHandlerLayer, available via setList(). */ public void paint(Graphics g) { if (layer != null) { OMGraphicList list = layer.getList(); Projection proj = layer.getProjection(); if (list != null && layer.isProjectionOK(proj)) { setCompositeOnGraphics((Graphics2D) g); list.render(g); } else if (logger.isLoggable(Level.FINE)) { logger.fine(layer.getName() + " StandardRenderPolicy.paint(): " + (list == null ? "NULL list, skipping..." : " skipping due to projection.")); } } else { logger.fine("StandardRenderPolicy.paint(): NULL layer, skipping..."); } } }