diff options
Diffstat (limited to 'src/jogl')
4 files changed, 111 insertions, 71 deletions
diff --git a/src/jogl/classes/javax/media/opengl/GLCapabilities.java b/src/jogl/classes/javax/media/opengl/GLCapabilities.java index 8b832b310..61ab2e58d 100644 --- a/src/jogl/classes/javax/media/opengl/GLCapabilities.java +++ b/src/jogl/classes/javax/media/opengl/GLCapabilities.java @@ -1,22 +1,22 @@ /* * Copyright (c) 2003-2009 Sun Microsystems, Inc. All Rights Reserved. * Copyright (c) 2010 JogAmp Community. All rights reserved. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: - * + * * - Redistribution of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. - * + * * - Redistribution in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * + * * Neither the name of Sun Microsystems, Inc. or the names of * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. - * + * * This software is provided "AS IS," without a warranty of any kind. ALL * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A @@ -29,11 +29,11 @@ * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * + * * You acknowledge that this software is not designed or intended for use * in the design, construction, operation or maintenance of any nuclear * facility. - * + * * Sun gratefully acknowledges that this software was originally authored * and developed by Kenneth Bradley Russell and Christopher John Kline. */ @@ -41,6 +41,7 @@ package javax.media.opengl; import javax.media.nativewindow.Capabilities; +import javax.media.nativewindow.CapabilitiesImmutable; /** Specifies a set of OpenGL capabilities.<br> At creation time of a {@link GLDrawable} using {@link GLDrawableFactory}, @@ -86,10 +87,12 @@ public class GLCapabilities extends Capabilities implements Cloneable, GLCapabil glProfile = (null!=glp)?glp:GLProfile.getDefault(GLProfile.getDefaultDevice()); } + @Override public Object cloneMutable() { return clone(); } + @Override public Object clone() { try { return super.clone(); @@ -98,6 +101,7 @@ public class GLCapabilities extends Capabilities implements Cloneable, GLCapabil } } + @Override public int hashCode() { // 31 * x == (x << 5) - x int hash = 31 + this.glProfile.hashCode() ; @@ -119,6 +123,7 @@ public class GLCapabilities extends Capabilities implements Cloneable, GLCapabil return hash; } + @Override public boolean equals(Object obj) { if(this == obj) { return true; } if(!(obj instanceof GLCapabilitiesImmutable)) { @@ -142,46 +147,52 @@ public class GLCapabilities extends Capabilities implements Cloneable, GLCapabil other.getPbufferRenderToTextureRectangle()==pbufferRenderToTextureRectangle; if(sampleBuffers) { res = res && - other.getNumSamples()==numSamples && + other.getNumSamples()==numSamples && other.getSampleExtension().equals(sampleExtension) ; } return res; } /** comparing hw/sw, stereo, multisample, stencil, RGBA and depth only */ - public int compareTo(Object o) { - if ( ! ( o instanceof GLCapabilities ) ) { + @Override + public int compareTo(final CapabilitiesImmutable o) { + if ( ! ( o instanceof GLCapabilitiesImmutable ) ) { Class<?> c = (null != o) ? o.getClass() : null ; - throw new ClassCastException("Not a GLCapabilities object: " + c); + throw new ClassCastException("Not a GLCapabilitiesImmutable object, but " + c); } + final GLCapabilitiesImmutable caps = (GLCapabilitiesImmutable) o; - final GLCapabilities caps = (GLCapabilities) o; + if(hardwareAccelerated && !caps.getHardwareAccelerated()) { + return 1; + } else if(!hardwareAccelerated && caps.getHardwareAccelerated()) { + return -1; + } - if(hardwareAccelerated && !caps.hardwareAccelerated) { + if(stereo && !caps.getStereo()) { return 1; - } else if(!hardwareAccelerated && caps.hardwareAccelerated) { + } else if(!stereo && caps.getStereo()) { return -1; } - if(stereo && !caps.stereo) { + if(doubleBuffered && !caps.getDoubleBuffered()) { return 1; - } else if(!stereo && caps.stereo) { + } else if(!doubleBuffered && caps.getDoubleBuffered()) { return -1; } final int ms = sampleBuffers ? numSamples : 0; - final int xms = caps.sampleBuffers ? caps.numSamples : 0; + final int xms = caps.getSampleBuffers() ? caps.getNumSamples() : 0; if(ms > xms) { return 1; } else if( ms < xms ) { return -1; } - // ignore the sample extension + // ignore the sample extension - if(stencilBits > caps.stencilBits) { + if(stencilBits > caps.getStencilBits()) { return 1; - } else if(stencilBits < caps.stencilBits) { + } else if(stencilBits < caps.getStencilBits()) { return -1; } @@ -190,16 +201,17 @@ public class GLCapabilities extends Capabilities implements Cloneable, GLCapabil return sc; } - if(depthBits > caps.depthBits) { + if(depthBits > caps.getDepthBits()) { return 1; - } else if(depthBits < caps.depthBits) { + } else if(depthBits < caps.getDepthBits()) { return -1; } return 0; // they are equal: hw/sw, stereo, multisample, stencil, RGBA and depth } - public GLProfile getGLProfile() { + @Override + public final GLProfile getGLProfile() { return glProfile; } @@ -208,11 +220,12 @@ public class GLCapabilities extends Capabilities implements Cloneable, GLCapabil glProfile=profile; } - public boolean isPBuffer() { + @Override + public final boolean isPBuffer() { return pbuffer; } - /** + /** * Enables or disables pbuffer usage.<br> * If enabled this method also invokes {@link #setOnscreen(int) setOnscreen(false)}<br> * Defaults to false. @@ -229,6 +242,7 @@ public class GLCapabilities extends Capabilities implements Cloneable, GLCapabil * If enabled this method also invokes {@link #setPBuffer(int) setPBuffer(false)}<br> * Defaults to true. */ + @Override public void setOnscreen(boolean onscreen) { if(onscreen) { setPBuffer(false); @@ -236,7 +250,8 @@ public class GLCapabilities extends Capabilities implements Cloneable, GLCapabil super.setOnscreen(onscreen); } - public boolean getDoubleBuffered() { + @Override + public final boolean getDoubleBuffered() { return doubleBuffered; } @@ -245,25 +260,28 @@ public class GLCapabilities extends Capabilities implements Cloneable, GLCapabil doubleBuffered = enable; } - public boolean getStereo() { + @Override + public final boolean getStereo() { return stereo; } - + /** Enables or disables stereo viewing. */ public void setStereo(boolean enable) { stereo = enable; } - public boolean getHardwareAccelerated() { + @Override + public final boolean getHardwareAccelerated() { return hardwareAccelerated; } - + /** Enables or disables hardware acceleration. */ public void setHardwareAccelerated(boolean enable) { hardwareAccelerated = enable; } - public int getDepthBits() { + @Override + public final int getDepthBits() { return depthBits; } @@ -271,8 +289,9 @@ public class GLCapabilities extends Capabilities implements Cloneable, GLCapabil public void setDepthBits(int depthBits) { this.depthBits = depthBits; } - - public int getStencilBits() { + + @Override + public final int getStencilBits() { return stencilBits; } @@ -280,8 +299,9 @@ public class GLCapabilities extends Capabilities implements Cloneable, GLCapabil public void setStencilBits(int stencilBits) { this.stencilBits = stencilBits; } - - public int getAccumRedBits() { + + @Override + public final int getAccumRedBits() { return accumRedBits; } @@ -293,7 +313,8 @@ public class GLCapabilities extends Capabilities implements Cloneable, GLCapabil this.accumRedBits = accumRedBits; } - public int getAccumGreenBits() { + @Override + public final int getAccumGreenBits() { return accumGreenBits; } @@ -305,7 +326,8 @@ public class GLCapabilities extends Capabilities implements Cloneable, GLCapabil this.accumGreenBits = accumGreenBits; } - public int getAccumBlueBits() { + @Override + public final int getAccumBlueBits() { return accumBlueBits; } @@ -317,7 +339,8 @@ public class GLCapabilities extends Capabilities implements Cloneable, GLCapabil this.accumBlueBits = accumBlueBits; } - public int getAccumAlphaBits() { + @Override + public final int getAccumAlphaBits() { return accumAlphaBits; } @@ -333,14 +356,15 @@ public class GLCapabilities extends Capabilities implements Cloneable, GLCapabil * Sets the desired extension for full-scene antialiasing * (FSAA), default is {@link #DEFAULT_SAMPLE_EXTENSION}. */ - public void setSampleExtension(String se) { - sampleExtension = se; + public void setSampleExtension(String se) { + sampleExtension = se; } - - public String getSampleExtension() { - return sampleExtension; + + @Override + public final String getSampleExtension() { + return sampleExtension; } - + /** * Defaults to false.<br> * Indicates whether sample buffers for full-scene antialiasing @@ -353,10 +377,11 @@ public class GLCapabilities extends Capabilities implements Cloneable, GLCapabil sampleBuffers = enable; if(sampleBuffers && getAlphaBits()==0) { setAlphaBits(1); - } + } } - public boolean getSampleBuffers() { + @Override + public final boolean getSampleBuffers() { return sampleBuffers; } @@ -366,7 +391,8 @@ public class GLCapabilities extends Capabilities implements Cloneable, GLCapabil this.numSamples = numSamples; } - public int getNumSamples() { + @Override + public final int getNumSamples() { return numSamples; } @@ -376,7 +402,8 @@ public class GLCapabilities extends Capabilities implements Cloneable, GLCapabil pbufferFloatingPointBuffers = enable; } - public boolean getPbufferFloatingPointBuffers() { + @Override + public final boolean getPbufferFloatingPointBuffers() { return pbufferFloatingPointBuffers; } @@ -386,7 +413,8 @@ public class GLCapabilities extends Capabilities implements Cloneable, GLCapabil pbufferRenderToTexture = enable; } - public boolean getPbufferRenderToTexture() { + @Override + public final boolean getPbufferRenderToTexture() { return pbufferRenderToTexture; } @@ -397,10 +425,12 @@ public class GLCapabilities extends Capabilities implements Cloneable, GLCapabil pbufferRenderToTextureRectangle = enable; } - public boolean getPbufferRenderToTextureRectangle() { + @Override + public final boolean getPbufferRenderToTextureRectangle() { return pbufferRenderToTextureRectangle; } + @Override public StringBuilder toString(StringBuilder sink) { if(null == sink) { sink = new StringBuilder(); @@ -441,12 +471,13 @@ public class GLCapabilities extends Capabilities implements Cloneable, GLCapabil sink.append(", pixmap"); } } - + return sink; } /** Returns a textual representation of this GLCapabilities - object. */ + object. */ + @Override public String toString() { StringBuilder msg = new StringBuilder(); msg.append("GLCaps["); diff --git a/src/jogl/classes/jogamp/opengl/egl/EGLGLCapabilities.java b/src/jogl/classes/jogamp/opengl/egl/EGLGLCapabilities.java index f813edf86..70a570174 100644 --- a/src/jogl/classes/jogamp/opengl/egl/EGLGLCapabilities.java +++ b/src/jogl/classes/jogamp/opengl/egl/EGLGLCapabilities.java @@ -37,17 +37,17 @@ import javax.media.opengl.GLProfile; public class EGLGLCapabilities extends GLCapabilities { private long eglcfg; final private int eglcfgid; - final private int renderableType; + final private int renderableType; final private int nativeVisualID; - + /** - * + * * @param eglcfg * @param eglcfgid * @param visualID native visualID if valid, otherwise VisualIDHolder.VID_UNDEFINED * @param glp desired GLProfile, or null if determined by renderableType * @param renderableType actual EGL renderableType - * + * * May throw GLException if given GLProfile is not compatible w/ renderableType */ public EGLGLCapabilities(long eglcfg, int eglcfgid, int visualID, GLProfile glp, int renderableType) { @@ -62,10 +62,12 @@ public class EGLGLCapabilities extends GLCapabilities { this.nativeVisualID = visualID; } + @Override public Object cloneMutable() { return clone(); } + @Override public Object clone() { try { return super.clone(); @@ -73,13 +75,13 @@ public class EGLGLCapabilities extends GLCapabilities { throw new GLException(e); } } - + final protected void setEGLConfig(long v) { eglcfg=v; } final public long getEGLConfig() { return eglcfg; } final public int getEGLConfigID() { return eglcfgid; } final public int getRenderableType() { return renderableType; } final public int getNativeVisualID() { return nativeVisualID; } - + @Override final public int getVisualID(VIDType type) throws NativeWindowException { switch(type) { @@ -90,9 +92,9 @@ public class EGLGLCapabilities extends GLCapabilities { return getNativeVisualID(); default: throw new NativeWindowException("Invalid type <"+type+">"); - } + } } - + public static boolean isCompatible(GLProfile glp, int renderableType) { if(null == glp) { return true; @@ -121,7 +123,7 @@ public class EGLGLCapabilities extends GLCapabilities { } return null; } - + public static StringBuilder renderableTypeToString(StringBuilder sink, int renderableType) { if(null == sink) { sink = new StringBuilder(); @@ -139,9 +141,10 @@ public class EGLGLCapabilities extends GLCapabilities { if(0 != (renderableType & EGL.EGL_OPENVG_API)) { if(!first) sink.append(", "); sink.append("VG"); first=false; } - return sink; + return sink; } - + + @Override public StringBuilder toString(StringBuilder sink) { if(null == sink) { sink = new StringBuilder(); diff --git a/src/jogl/classes/jogamp/opengl/windows/wgl/WGLGLCapabilities.java b/src/jogl/classes/jogamp/opengl/windows/wgl/WGLGLCapabilities.java index 5ff63d93b..e255a0672 100644 --- a/src/jogl/classes/jogamp/opengl/windows/wgl/WGLGLCapabilities.java +++ b/src/jogl/classes/jogamp/opengl/windows/wgl/WGLGLCapabilities.java @@ -119,7 +119,7 @@ public class WGLGLCapabilities extends GLCapabilities { if (iresults[i] == WGLExt.WGL_TYPE_RGBA_FLOAT_ARB) { setPbufferFloatingPointBuffers(true); } - + // normal RGBA FB: WGLExt.WGL_TYPE_RGBA_ARB // ignore unknown results here break; @@ -177,10 +177,12 @@ public class WGLGLCapabilities extends GLCapabilities { return true; } + @Override public Object cloneMutable() { return clone(); } + @Override public Object clone() { try { return super.clone(); @@ -191,11 +193,11 @@ public class WGLGLCapabilities extends GLCapabilities { final public PIXELFORMATDESCRIPTOR getPFD() { return pfd; } final public int getPFDID() { return pfdID; } - + final public boolean isSetByARB() { return 0 < arb_pixelformat; } final public boolean isSetByGDI() { return 0 > arb_pixelformat; } final public boolean isSet() { return 0 != arb_pixelformat; } - + @Override final public int getVisualID(VIDType type) throws NativeWindowException { switch(type) { @@ -205,16 +207,17 @@ public class WGLGLCapabilities extends GLCapabilities { return getPFDID(); default: throw new NativeWindowException("Invalid type <"+type+">"); - } + } } - + + @Override public StringBuilder toString(StringBuilder sink) { if(null == sink) { sink = new StringBuilder(); } sink.append("wgl vid 0x").append(Integer.toHexString(pfdID)).append(" "); switch (arb_pixelformat) { - case -1: + case -1: sink.append("gdi"); break; case 0: diff --git a/src/jogl/classes/jogamp/opengl/x11/glx/X11GLCapabilities.java b/src/jogl/classes/jogamp/opengl/x11/glx/X11GLCapabilities.java index 96d4c7713..e0b69ffd4 100644 --- a/src/jogl/classes/jogamp/opengl/x11/glx/X11GLCapabilities.java +++ b/src/jogl/classes/jogamp/opengl/x11/glx/X11GLCapabilities.java @@ -55,10 +55,12 @@ public class X11GLCapabilities extends GLCapabilities { this.fbcfgid = VisualIDHolder.VID_UNDEFINED; } + @Override public Object cloneMutable() { return clone(); } + @Override public Object clone() { try { return super.clone(); @@ -86,9 +88,10 @@ public class X11GLCapabilities extends GLCapabilities { return getFBConfigID(); default: throw new NativeWindowException("Invalid type <"+type+">"); - } + } } - + + @Override public StringBuilder toString(StringBuilder sink) { if(null == sink) { sink = new StringBuilder(); |