/******************************************************************************* * Copyright 2012 Geoscience Australia * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. ******************************************************************************/ package au.gov.ga.earthsci.worldwind.common.render; import gov.nasa.worldwind.Model; import gov.nasa.worldwind.View; import gov.nasa.worldwind.avlist.AVList; import gov.nasa.worldwind.cache.GpuResourceCache; import gov.nasa.worldwind.event.Message; import gov.nasa.worldwind.geom.Angle; import gov.nasa.worldwind.geom.Extent; import gov.nasa.worldwind.geom.Position; import gov.nasa.worldwind.geom.Sector; import gov.nasa.worldwind.geom.Vec4; import gov.nasa.worldwind.globes.Globe; import gov.nasa.worldwind.layers.Layer; import gov.nasa.worldwind.layers.LayerList; import gov.nasa.worldwind.pick.PickedObject; import gov.nasa.worldwind.pick.PickedObjectList; import gov.nasa.worldwind.render.AnnotationRenderer; import gov.nasa.worldwind.render.DeclutteringTextRenderer; import gov.nasa.worldwind.render.DrawContext; import gov.nasa.worldwind.render.GLRuntimeCapabilities; import gov.nasa.worldwind.render.LightingModel; import gov.nasa.worldwind.render.OrderedRenderable; import gov.nasa.worldwind.render.OutlinedShape; import gov.nasa.worldwind.render.ScreenCredit; import gov.nasa.worldwind.render.SurfaceTileRenderer; import gov.nasa.worldwind.render.TextRendererCache; import gov.nasa.worldwind.terrain.SectorGeometryList; import gov.nasa.worldwind.terrain.Terrain; import gov.nasa.worldwind.util.ClutterFilter; import gov.nasa.worldwind.util.PerformanceStatistic; import gov.nasa.worldwind.util.PickPointFrustumList; import java.awt.Color; import java.awt.Dimension; import java.awt.Point; import java.awt.Rectangle; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.nio.FloatBuffer; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Queue; import java.util.Set; import javax.media.opengl.GL; import javax.media.opengl.GLContext; import javax.media.opengl.GLDrawable; import javax.media.opengl.glu.GLU; import com.jogamp.opengl.util.texture.TextureCoords; /** * {@link DrawContext} implementation that simply delegates all of it's * functionality to a local DrawContext instance. * * @author Michael de Hoog (michael.dehoog@ga.gov.au) */ public class DrawContextDelegate implements DrawContext { private final DrawContext delegate; public DrawContextDelegate(DrawContext delegate) { this.delegate = delegate; } @Override public void dispose() { delegate.dispose(); } @Override public void onMessage(Message msg) { delegate.onMessage(msg); } @Override public Object setValue(String key, Object value) { return delegate.setValue(key, value); } @Override public void propertyChange(PropertyChangeEvent evt) { delegate.propertyChange(evt); } @Override public void setGLContext(GLContext glContext) { delegate.setGLContext(glContext); } @Override public AVList setValues(AVList avList) { return delegate.setValues(avList); } @Override public GLContext getGLContext() { return delegate.getGLContext(); } @Override public Object getValue(String key) { return delegate.getValue(key); } @Override public GL getGL() { return delegate.getGL(); } @Override public Collection<Object> getValues() { return delegate.getValues(); } @Override public GLU getGLU() { return delegate.getGLU(); } @Override public String getStringValue(String key) { return delegate.getStringValue(key); } @Override public GLDrawable getGLDrawable() { return delegate.getGLDrawable(); } @Override public Set<Entry<String, Object>> getEntries() { return delegate.getEntries(); } @Override public boolean hasKey(String key) { return delegate.hasKey(key); } @Override public int getDrawableWidth() { return delegate.getDrawableWidth(); } @Override public int getDrawableHeight() { return delegate.getDrawableHeight(); } @Override public Object removeKey(String key) { return delegate.removeKey(key); } @Override public GLRuntimeCapabilities getGLRuntimeCapabilities() { return delegate.getGLRuntimeCapabilities(); } @Override public void setGLRuntimeCapabilities(GLRuntimeCapabilities capabilities) { delegate.setGLRuntimeCapabilities(capabilities); } @Override public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) { delegate.addPropertyChangeListener(propertyName, listener); } @Override public void initialize(GLContext glContext) { delegate.initialize(glContext); } @Override public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) { delegate.removePropertyChangeListener(propertyName, listener); } @Override public void setView(View view) { delegate.setView(view); } @Override public View getView() { return delegate.getView(); } @Override public void addPropertyChangeListener(PropertyChangeListener listener) { delegate.addPropertyChangeListener(listener); } @Override public void setModel(Model model) { delegate.setModel(model); } @Override public void removePropertyChangeListener(PropertyChangeListener listener) { delegate.removePropertyChangeListener(listener); } @Override public Model getModel() { return delegate.getModel(); } @Override public Globe getGlobe() { return delegate.getGlobe(); } @Override public void firePropertyChange(String propertyName, Object oldValue, Object newValue) { delegate.firePropertyChange(propertyName, oldValue, newValue); } @Override public LayerList getLayers() { return delegate.getLayers(); } @Override public Sector getVisibleSector() { return delegate.getVisibleSector(); } @Override public void firePropertyChange(PropertyChangeEvent propertyChangeEvent) { delegate.firePropertyChange(propertyChangeEvent); } @Override public void setVisibleSector(Sector s) { delegate.setVisibleSector(s); } @Override public AVList copy() { return delegate.copy(); } @Override public void setVerticalExaggeration(double verticalExaggeration) { delegate.setVerticalExaggeration(verticalExaggeration); } @Override public AVList clearList() { return delegate.clearList(); } @Override public double getVerticalExaggeration() { return delegate.getVerticalExaggeration(); } @Override public SectorGeometryList getSurfaceGeometry() { return delegate.getSurfaceGeometry(); } @Override public PickedObjectList getPickedObjects() { return delegate.getPickedObjects(); } @Override public void addPickedObjects(PickedObjectList pickedObjects) { delegate.addPickedObjects(pickedObjects); } @Override public void addPickedObject(PickedObject pickedObject) { delegate.addPickedObject(pickedObject); } @Override public PickedObjectList getObjectsInPickRectangle() { return delegate.getObjectsInPickRectangle(); } @Override public void addObjectInPickRectangle(PickedObject pickedObject) { delegate.addObjectInPickRectangle(pickedObject); } @Override public Color getUniquePickColor() { return delegate.getUniquePickColor(); } @Override public Color getClearColor() { return delegate.getClearColor(); } @Override public int getPickColorAtPoint(Point point) { return delegate.getPickColorAtPoint(point); } @Override public int[] getPickColorsInRectangle(Rectangle rectangle, int[] minAndMaxColorCodes) { return delegate.getPickColorsInRectangle(rectangle, minAndMaxColorCodes); } @Override public void enablePickingMode() { delegate.enablePickingMode(); } @Override public boolean isPickingMode() { return delegate.isPickingMode(); } @Override public void disablePickingMode() { delegate.disablePickingMode(); } @Override public void setDeepPickingEnabled(boolean tf) { delegate.setDeepPickingEnabled(tf); } @Override public boolean isDeepPickingEnabled() { return delegate.isDeepPickingEnabled(); } @Override public void addOrderedRenderable(OrderedRenderable orderedRenderable) { delegate.addOrderedRenderable(orderedRenderable); } @Override public void addOrderedRenderable(OrderedRenderable orderedRenderable, boolean isBehind) { delegate.addOrderedRenderable(orderedRenderable, isBehind); } @Override public void addOrderedSurfaceRenderable(OrderedRenderable orderedRenderable) { delegate.addOrderedSurfaceRenderable(orderedRenderable); } @Override public Queue<OrderedRenderable> getOrderedSurfaceRenderables() { return delegate.getOrderedSurfaceRenderables(); } @Override public void drawUnitQuad() { delegate.drawUnitQuad(); } @Override public void drawUnitQuad(TextureCoords texCoords) { delegate.drawUnitQuad(texCoords); } @Override public void drawUnitQuadOutline() { delegate.drawUnitQuadOutline(); } @Override public void setSurfaceGeometry(SectorGeometryList surfaceGeometry) { delegate.setSurfaceGeometry(surfaceGeometry); } @Override public Vec4 getPointOnTerrain(Angle latitude, Angle longitude) { return delegate.getPointOnTerrain(latitude, longitude); } @Override public SurfaceTileRenderer getGeographicSurfaceTileRenderer() { return delegate.getGeographicSurfaceTileRenderer(); } @Override public Point getPickPoint() { return delegate.getPickPoint(); } @Override public void setPickPoint(Point pickPoint) { delegate.setPickPoint(pickPoint); } @Override public Rectangle getPickRectangle() { return delegate.getPickRectangle(); } @Override public void setPickRectangle(Rectangle pickRect) { delegate.setPickRectangle(pickRect); } @Override public GpuResourceCache getTextureCache() { return delegate.getTextureCache(); } @Override public GpuResourceCache getGpuResourceCache() { return delegate.getGpuResourceCache(); } @Override public void setGpuResourceCache(GpuResourceCache gpuResourceCache) { delegate.setGpuResourceCache(gpuResourceCache); } @Override public Collection<PerformanceStatistic> getPerFrameStatistics() { return delegate.getPerFrameStatistics(); } @Override public void setPerFrameStatisticsKeys(Set<String> statKeys, Collection<PerformanceStatistic> stats) { delegate.setPerFrameStatisticsKeys(statKeys, stats); } @Override public void setPerFrameStatistic(String key, String displayName, Object statistic) { delegate.setPerFrameStatistic(key, displayName, statistic); } @Override public void setPerFrameStatistics(Collection<PerformanceStatistic> stats) { delegate.setPerFrameStatistics(stats); } @Override public Set<String> getPerFrameStatisticsKeys() { return delegate.getPerFrameStatisticsKeys(); } @Override public Point getViewportCenterScreenPoint() { return delegate.getViewportCenterScreenPoint(); } @Override public void setViewportCenterScreenPoint(Point viewportCenterPoint) { delegate.setViewportCenterScreenPoint(viewportCenterPoint); } @Override public Position getViewportCenterPosition() { return delegate.getViewportCenterPosition(); } @Override public void setViewportCenterPosition(Position viewportCenterPosition) { delegate.setViewportCenterPosition(viewportCenterPosition); } @Override public TextRendererCache getTextRendererCache() { return delegate.getTextRendererCache(); } @Override public void setTextRendererCache(TextRendererCache textRendererCache) { delegate.setTextRendererCache(textRendererCache); } @Override public AnnotationRenderer getAnnotationRenderer() { return delegate.getAnnotationRenderer(); } @Override public void setAnnotationRenderer(AnnotationRenderer annotationRenderer) { delegate.setAnnotationRenderer(annotationRenderer); } @Override public long getFrameTimeStamp() { return delegate.getFrameTimeStamp(); } @Override public void setFrameTimeStamp(long frameTimeStamp) { delegate.setFrameTimeStamp(frameTimeStamp); } @Override public List<Sector> getVisibleSectors(double[] resolutions, long timeLimit, Sector searchSector) { return delegate.getVisibleSectors(resolutions, timeLimit, searchSector); } @Override public void setCurrentLayer(Layer layer) { delegate.setCurrentLayer(layer); } @Override public Layer getCurrentLayer() { return delegate.getCurrentLayer(); } @Override public void addScreenCredit(ScreenCredit credit) { delegate.addScreenCredit(credit); } @Override public Map<ScreenCredit, Long> getScreenCredits() { return delegate.getScreenCredits(); } @Override public int getRedrawRequested() { return delegate.getRedrawRequested(); } @Override public void setRedrawRequested(int redrawRequested) { delegate.setRedrawRequested(redrawRequested); } @Override public PickPointFrustumList getPickFrustums() { return delegate.getPickFrustums(); } @Override public void setPickPointFrustumDimension(Dimension dim) { delegate.setPickPointFrustumDimension(dim); } @Override public Dimension getPickPointFrustumDimension() { return delegate.getPickPointFrustumDimension(); } @Override public void addPickPointFrustum() { delegate.addPickPointFrustum(); } @Override public void addPickRectangleFrustum() { delegate.addPickRectangleFrustum(); } @Override public Collection<Throwable> getRenderingExceptions() { return delegate.getRenderingExceptions(); } @Override public void setRenderingExceptions(Collection<Throwable> exceptions) { delegate.setRenderingExceptions(exceptions); } @Override public void addRenderingException(Throwable t) { delegate.addRenderingException(t); } @Override public void pushProjectionOffest(Double offset) { delegate.pushProjectionOffest(offset); } @Override public void popProjectionOffest() { delegate.popProjectionOffest(); } @Override public boolean isOrderedRenderingMode() { return delegate.isOrderedRenderingMode(); } @Override public void setOrderedRenderingMode(boolean tf) { delegate.setOrderedRenderingMode(tf); } @Override public void drawOutlinedShape(OutlinedShape renderer, Object shape) { delegate.drawOutlinedShape(renderer, shape); } @Override public void beginStandardLighting() { delegate.beginStandardLighting(); } @Override public void endStandardLighting() { delegate.endStandardLighting(); } @Override public LightingModel getStandardLightingModel() { return delegate.getStandardLightingModel(); } @Override public void setStandardLightingModel(LightingModel standardLighting) { delegate.setStandardLightingModel(standardLighting); } @Override public Vec4 computeTerrainPoint(Angle lat, Angle lon, double offset) { return delegate.computeTerrainPoint(lat, lon, offset); } @Override public boolean isSmall(Extent extent, int numPixels) { return delegate.isSmall(extent, numPixels); } @Override public void drawNormals(float length, FloatBuffer vBuf, FloatBuffer nBuf) { delegate.drawNormals(length, vBuf, nBuf); } @Override public OrderedRenderable peekOrderedRenderables() { return delegate.peekOrderedRenderables(); } @Override public OrderedRenderable pollOrderedRenderables() { return delegate.pollOrderedRenderables(); } @Override public Terrain getTerrain() { return delegate.getTerrain(); } @Override public void restoreDefaultBlending() { delegate.restoreDefaultBlending(); } @Override public void restoreDefaultCurrentColor() { delegate.restoreDefaultCurrentColor(); } @Override public void restoreDefaultDepthTesting() { delegate.restoreDefaultDepthTesting(); } @Override public boolean isPreRenderMode() { return delegate.isPreRenderMode(); } @Override public void setPreRenderMode(boolean preRenderMode) { delegate.setPreRenderMode(preRenderMode); } @Override public Vec4 computePointFromPosition(Position position, int altitudeMode) { return delegate.computePointFromPosition(position, altitudeMode); } @Override public DeclutteringTextRenderer getDeclutteringTextRenderer() { return delegate.getDeclutteringTextRenderer(); } @Override public void applyClutterFilter() { delegate.applyClutterFilter(); } @Override public void setClutterFilter(ClutterFilter filter) { delegate.setClutterFilter(filter); } @Override public ClutterFilter getClutterFilter() { return delegate.getClutterFilter(); } }