Class NewtCanvasAWT
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Canvas
-
- com.jogamp.newt.awt.NewtCanvasAWT
-
- All Implemented Interfaces:
AWTPrintLifecycle
,NativeSurfaceHolder
,NativeWindowHolder
,OffscreenLayerOption
,WindowClosingProtocol
,ImageObserver
,MenuContainer
,Serializable
,Accessible
public class NewtCanvasAWT extends Canvas implements NativeWindowHolder, WindowClosingProtocol, OffscreenLayerOption, AWTPrintLifecycle
AWTCanvas
containing a NEWTWindow
using native parenting.Offscreen Layer Remarks
setShallUseOffscreenLayer(true)
maybe called to use an offscreen drawable (FBO or PBuffer) allowing the underlying JAWT mechanism to composite the image, if supported.- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class java.awt.Component
Component.BaselineResizeBehavior
-
Nested classes/interfaces inherited from interface com.jogamp.nativewindow.awt.AWTPrintLifecycle
AWTPrintLifecycle.Context
-
Nested classes/interfaces inherited from interface com.jogamp.nativewindow.WindowClosingProtocol
WindowClosingProtocol.WindowClosingMode
-
-
Field Summary
Fields Modifier and Type Field Description static boolean
DEBUG
-
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
-
Fields inherited from interface com.jogamp.nativewindow.awt.AWTPrintLifecycle
DEFAULT_PRINT_TILE_SIZE
-
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
-
-
Constructor Summary
Constructors Constructor Description NewtCanvasAWT()
Instantiates a NewtCanvas without a NEWT child.NewtCanvasAWT(Window child)
Instantiates a NewtCanvas with a NEWT child.NewtCanvasAWT(GraphicsConfiguration gc)
Instantiates a NewtCanvas without a NEWT child.NewtCanvasAWT(GraphicsConfiguration gc, Window child)
Instantiates a NewtCanvas with a NEWT child.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addNotify()
void
destroy()
Destroys this resource: Make the NEWT Child invisible Disconnects the NEWT Child from this Canvas NativeWindow, reparent to NULL Issuesdestroy()
on the NEWT Child Remove reference to the NEWT ChildWindowClosingProtocol.WindowClosingMode
getDefaultCloseOperation()
GraphicsConfiguration
getGraphicsConfiguration()
NativeSurface
getNativeSurface()
Returns the associatedNativeSurface
of thisNativeSurfaceHolder
.NativeWindow
getNativeWindow()
Returns the associatedNativeWindow
of thisNativeWindowHolder
, which is identical toNativeSurfaceHolder.getNativeSurface()
Window
getNEWTChild()
boolean
getShallUseOffscreenLayer()
Returns the property set byOffscreenLayerOption.setShallUseOffscreenLayer(boolean)
.boolean
getSkipJAWTDestroy()
boolean
isApplet()
Returns true if the AWT component is parented to anApplet
, otherwise false.boolean
isAWTEventPassThrough()
Returnstrue
if Key and Mouse input events will be passed through AWT, otherwise only theNEWT child
will receive them.boolean
isOffscreenLayerSurfaceEnabled()
Returns true if this instance uses an offscreen layer, otherwise false.void
paint(Graphics g)
void
print(Graphics graphics)
void
releasePrint()
Shall be called afterPrinterJob.print()
.void
removeNotify()
void
reshape(int x, int y, int width, int height)
WindowClosingProtocol.WindowClosingMode
setDefaultCloseOperation(WindowClosingProtocol.WindowClosingMode op)
Window
setNEWTChild(Window newChild)
Sets a new NEWT child, provoking reparenting.void
setShallUseOffscreenLayer(boolean v)
Request an offscreen layer, if supported.void
setSkipJAWTDestroy(boolean v)
Mitigates Bug 910 (IcedTea-Web), i.e.void
setupPrint(double scaleMatX, double scaleMatY, int numSamples, int tileWidth, int tileHeight)
Shall be called beforePrinterJob.print()
.void
update(Graphics g)
-
Methods inherited from class java.awt.Canvas
createBufferStrategy, createBufferStrategy, getAccessibleContext, getBufferStrategy
-
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, bounds, checkImage, checkImage, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, deliverEvent, disable, dispatchEvent, doLayout, enable, enable, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getAlignmentX, getAlignmentY, getBackground, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentAt, getComponentAt, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeys, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getListeners, getLocale, getLocation, getLocation, getLocationOnScreen, getMaximumSize, getMinimumSize, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPreferredSize, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getToolkit, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, invalidate, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusCycleRoot, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, layout, list, list, list, list, list, locate, location, lostFocus, minimumSize, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, preferredSize, prepareImage, prepareImage, printAll, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resize, resize, revalidate, setBackground, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeys, setFocusTraversalKeysEnabled, setFont, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setMinimumSize, setMixingCutoutShape, setName, setPreferredSize, setSize, setSize, setVisible, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle, validate
-
-
-
-
Constructor Detail
-
NewtCanvasAWT
public NewtCanvasAWT()
Instantiates a NewtCanvas without a NEWT child.
-
NewtCanvasAWT
public NewtCanvasAWT(GraphicsConfiguration gc)
Instantiates a NewtCanvas without a NEWT child.
-
NewtCanvasAWT
public NewtCanvasAWT(Window child)
Instantiates a NewtCanvas with a NEWT child.
-
NewtCanvasAWT
public NewtCanvasAWT(GraphicsConfiguration gc, Window child)
Instantiates a NewtCanvas with a NEWT child.
-
-
Method Detail
-
setShallUseOffscreenLayer
public void setShallUseOffscreenLayer(boolean v)
Description copied from interface:OffscreenLayerOption
Request an offscreen layer, if supported.Shall be called before the first
NativeSurface.lockSurface()
, and hence before realization.- Specified by:
setShallUseOffscreenLayer
in interfaceOffscreenLayerOption
- See Also:
OffscreenLayerOption.getShallUseOffscreenLayer()
,OffscreenLayerOption.isOffscreenLayerSurfaceEnabled()
-
getShallUseOffscreenLayer
public final boolean getShallUseOffscreenLayer()
Description copied from interface:OffscreenLayerOption
Returns the property set byOffscreenLayerOption.setShallUseOffscreenLayer(boolean)
.- Specified by:
getShallUseOffscreenLayer
in interfaceOffscreenLayerOption
-
isOffscreenLayerSurfaceEnabled
public final boolean isOffscreenLayerSurfaceEnabled()
Description copied from interface:OffscreenLayerOption
Returns true if this instance uses an offscreen layer, otherwise false.This instance is an offscreen layer, if
The return value is undefined before issuing the firstsetShallUseOffscreenLayer(true)
has been called before it's realization and first lock and the underlying implementation supports it.NativeSurface.lockSurface()
.- Specified by:
isOffscreenLayerSurfaceEnabled
in interfaceOffscreenLayerOption
- See Also:
OffscreenLayerOption.setShallUseOffscreenLayer(boolean)
-
isApplet
public final boolean isApplet()
Returns true if the AWT component is parented to anApplet
, otherwise false. This information is valid only afteraddNotify()
is issued.
-
setNEWTChild
public Window setNEWTChild(Window newChild)
Sets a new NEWT child, provoking reparenting.A previously detached
newChild
will be released to top-level status and made invisible.Note: When switching NEWT child's, detaching the previous first via
setNEWTChild(null)
produced much cleaner visual results.- Returns:
- the previous attached newt child.
-
getNEWTChild
public Window getNEWTChild()
- Returns:
- the current NEWT child
-
getNativeWindow
public NativeWindow getNativeWindow()
Returns the associatedNativeWindow
of thisNativeWindowHolder
, which is identical toNativeSurfaceHolder.getNativeSurface()
- Specified by:
getNativeWindow
in interfaceNativeWindowHolder
- Returns:
- this AWT Canvas
NativeWindow
representation, may be null in caseremoveNotify()
has been called, oraddNotify()
hasn't been called yet.
-
getNativeSurface
public NativeSurface getNativeSurface()
Returns the associatedNativeSurface
of thisNativeSurfaceHolder
.- Specified by:
getNativeSurface
in interfaceNativeSurfaceHolder
- Returns:
- this AWT Canvas
NativeSurface
representation, may be null in caseremoveNotify()
has been called, oraddNotify()
hasn't been called yet.
-
getDefaultCloseOperation
public WindowClosingProtocol.WindowClosingMode getDefaultCloseOperation()
- Specified by:
getDefaultCloseOperation
in interfaceWindowClosingProtocol
- Returns:
- the current close operation value
- See Also:
WindowClosingProtocol.WindowClosingMode.DISPOSE_ON_CLOSE
,WindowClosingProtocol.WindowClosingMode.DO_NOTHING_ON_CLOSE
-
setDefaultCloseOperation
public WindowClosingProtocol.WindowClosingMode setDefaultCloseOperation(WindowClosingProtocol.WindowClosingMode op)
- Specified by:
setDefaultCloseOperation
in interfaceWindowClosingProtocol
- Parameters:
op
- the new close operation value- Returns:
- the previous close operation value
- See Also:
WindowClosingProtocol.WindowClosingMode.DISPOSE_ON_CLOSE
,WindowClosingProtocol.WindowClosingMode.DO_NOTHING_ON_CLOSE
-
setSkipJAWTDestroy
public final void setSkipJAWTDestroy(boolean v)
Mitigates Bug 910 (IcedTea-Web), i.e. crash via removeNotify() invoked before Applet.destroy().skipJAWTDestroy
defaults tofalse
. Due to above IcedTea-Web issue theApplet
code needs to avoid JAWT destruction beforeApplet.destroy()
is reached by settingskipJAWTDestroy
totrue
. Afterwards the value should be reset tofalse
anddestroy()
needs to be called, which finally will perform the pending JAWT destruction.
-
getSkipJAWTDestroy
public final boolean getSkipJAWTDestroy()
-
getGraphicsConfiguration
public GraphicsConfiguration getGraphicsConfiguration()
Overridden to choose a
GraphicsConfiguration
from a parent container'sGraphicsDevice
.Method also intercepts
GraphicsConfiguration
changes regarding to its capabilities and itsGraphicsDevice
. This may happen in case the display changes its configuration or the component is moved to another screen.- Overrides:
getGraphicsConfiguration
in classComponent
-
removeNotify
public void removeNotify()
- Overrides:
removeNotify
in classComponent
-
destroy
public final void destroy()
Destroys this resource:- Make the NEWT Child invisible
- Disconnects the NEWT Child from this Canvas NativeWindow, reparent to NULL
- Issues
destroy()
on the NEWT Child - Remove reference to the NEWT Child
- See Also:
Window.destroy()
-
reshape
public void reshape(int x, int y, int width, int height)
-
setupPrint
public void setupPrint(double scaleMatX, double scaleMatY, int numSamples, int tileWidth, int tileHeight)
Description copied from interface:AWTPrintLifecycle
Shall be called beforePrinterJob.print()
.See Usage.
- Specified by:
setupPrint
in interfaceAWTPrintLifecycle
- Parameters:
scaleMatX
-Graphics2D
scaling factor
, i.e. rendering 1/scaleMatX * width pixelsscaleMatY
-Graphics2D
scaling factor
, i.e. rendering 1/scaleMatY * height pixelsnumSamples
- multisampling value: < 0 turns off, == 0 leaves as-is, > 0 enables using given num samplestileWidth
- custom tile width fortile renderer
, pass -1 for default.tileHeight
- custom tile height fortile renderer
, pass -1 for default. FIXME: Add border size !
-
releasePrint
public void releasePrint()
Description copied from interface:AWTPrintLifecycle
Shall be called afterPrinterJob.print()
.See Usage.
- Specified by:
releasePrint
in interfaceAWTPrintLifecycle
-
isAWTEventPassThrough
public final boolean isAWTEventPassThrough()
Returnstrue
if Key and Mouse input events will be passed through AWT, otherwise only theNEWT child
will receive them.Normally only the
NEWT child
will receive Key and Mouse input events. In offscreen mode, e.g. OSX/CALayer, the AWT events will be received and translated into NEWT events and delivered to the NEWT child window.
Note: AWT key events willconsumed
in pass-through mode.
-
-