- java.lang.Object
-
- bdv.viewer.render.awt.BufferedImageOverlayRenderer
-
- All Implemented Interfaces:
OverlayRenderer,RenderTarget<BufferedImageRenderResult>
public class BufferedImageOverlayRenderer extends Object implements OverlayRenderer, RenderTarget<BufferedImageRenderResult>
OverlayRendererdrawing aBufferedImage, scaled to fill the canvas. It can be used as aRenderTarget, such that theBufferedImageRenderResultto draw is set by a renderer.- Author:
- Tobias Pietzsch
-
-
Constructor Summary
Constructors Constructor Description BufferedImageOverlayRenderer()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description BufferedImageRenderResultcreateRenderResult()Returns a newRenderResult.voiddrawOverlays(Graphics g)Render overlays.intgetHeight()Get the current canvas height.BufferedImageRenderResultgetReusableRenderResult()Returns aRenderResultfor rendering to.intgetWidth()Get the current canvas width.voidkill()DON'T USE THIS.voidsetCanvasSize(int width, int height)This is called, when the screen size of the canvas (the component displaying the image and generating mouse events) changes.voidsetRenderResult(BufferedImageRenderResult result)Set theRenderResultthat is to be drawn on the canvas.org.scijava.listeners.Listeners<TransformListener<net.imglib2.realtransform.AffineTransform3D>>transformListeners()Add/removeTransformListeners to notify about viewer transformation changes.
-
-
-
Method Detail
-
getReusableRenderResult
public BufferedImageRenderResult getReusableRenderResult()
Description copied from interface:RenderTargetReturns aRenderResultfor rendering to. This may be a newRenderResultor a previouslyset RenderResultthat is no longer needed for display. Note that consecutivegetReusableRenderResult()calls without intermediatesetRenderResult()may return the sameRenderResult.- Specified by:
getReusableRenderResultin interfaceRenderTarget<BufferedImageRenderResult>
-
createRenderResult
public BufferedImageRenderResult createRenderResult()
Description copied from interface:RenderTargetReturns a newRenderResult.- Specified by:
createRenderResultin interfaceRenderTarget<BufferedImageRenderResult>
-
setRenderResult
public void setRenderResult(BufferedImageRenderResult result)
Set theRenderResultthat is to be drawn on the canvas.- Specified by:
setRenderResultin interfaceRenderTarget<BufferedImageRenderResult>- Parameters:
result- image to draw (may be null).
-
getWidth
public int getWidth()
Description copied from interface:RenderTargetGet the current canvas width.- Specified by:
getWidthin interfaceRenderTarget<BufferedImageRenderResult>- Returns:
- canvas width.
-
getHeight
public int getHeight()
Description copied from interface:RenderTargetGet the current canvas height.- Specified by:
getHeightin interfaceRenderTarget<BufferedImageRenderResult>- Returns:
- canvas height.
-
drawOverlays
public void drawOverlays(Graphics g)
Description copied from interface:OverlayRendererRender overlays.- Specified by:
drawOverlaysin interfaceOverlayRenderer
-
setCanvasSize
public void setCanvasSize(int width, int height)Description copied from interface:OverlayRendererThis is called, when the screen size of the canvas (the component displaying the image and generating mouse events) changes. This can be used to determine scale of overlay or screen coordinates relative to the border.- Specified by:
setCanvasSizein interfaceOverlayRenderer- Parameters:
width- the new canvas width.height- the new canvas height.
-
transformListeners
public org.scijava.listeners.Listeners<TransformListener<net.imglib2.realtransform.AffineTransform3D>> transformListeners()
Add/removeTransformListeners to notify about viewer transformation changes. Listeners will be notified when a new image has been rendered (immediately before that image is displayed) with the viewer transform used to render that image.
-
kill
public void kill()
DON'T USE THIS.This is a work around for JDK bug https://bugs.openjdk.java.net/browse/JDK-8029147 which leads to ViewerPanel not being garbage-collected when ViewerFrame is closed. So instead we need to manually let go of resources...
-
-