diff options
Diffstat (limited to 'src/classes/javax/media/opengl')
13 files changed, 67 insertions, 914 deletions
diff --git a/src/classes/javax/media/opengl/DefaultGLCapabilitiesChooser.java b/src/classes/javax/media/opengl/DefaultGLCapabilitiesChooser.java deleted file mode 100644 index 5147ab8b7..000000000 --- a/src/classes/javax/media/opengl/DefaultGLCapabilitiesChooser.java +++ /dev/null @@ -1,235 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. 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 - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * 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. - */ - -package javax.media.opengl; - -import com.sun.opengl.impl.Debug; - -/** <P> The default implementation of the {@link - GLCapabilitiesChooser} interface, which provides consistent visual - selection behavior across platforms. The precise algorithm is - deliberately left loosely specified. Some properties are: </P> - - <UL> - - <LI> As long as there is at least one available non-null - GLCapabilities which matches the "stereo" option, will return a - valid index. - - <LI> Attempts to match as closely as possible the given - GLCapabilities, but will select one with fewer capabilities (i.e., - lower color depth) if necessary. - - <LI> Prefers hardware-accelerated visuals to - non-hardware-accelerated. - - <LI> If there is no exact match, prefers a more-capable visual to - a less-capable one. - - <LI> If there is more than one exact match, chooses an arbitrary - one. - - <LI> May select the opposite of a double- or single-buffered - visual (based on the user's request) in dire situations. - - <LI> Color depth (including alpha) mismatches are weighted higher - than depth buffer mismatches, which are in turn weighted higher - than accumulation buffer (including alpha) and stencil buffer - depth mismatches. - - <LI> If a valid windowSystemRecommendedChoice parameter is - supplied, chooses that instead of using the cross-platform code. - - </UL> -*/ - -public class DefaultGLCapabilitiesChooser implements GLCapabilitiesChooser { - private static final boolean DEBUG = Debug.debug("DefaultGLCapabilitiesChooser"); - - public int chooseCapabilities(GLCapabilities desired, - GLCapabilities[] available, - int windowSystemRecommendedChoice) { - if (DEBUG) { - System.err.println("Desired: " + desired); - for (int i = 0; i < available.length; i++) { - System.err.println("Available " + i + ": " + available[i]); - } - System.err.println("Window system's recommended choice: " + windowSystemRecommendedChoice); - } - - if (windowSystemRecommendedChoice >= 0 && - windowSystemRecommendedChoice < available.length && - available[windowSystemRecommendedChoice] != null) { - if (DEBUG) { - System.err.println("Choosing window system's recommended choice of " + windowSystemRecommendedChoice); - System.err.println(available[windowSystemRecommendedChoice]); - } - return windowSystemRecommendedChoice; - } - - // Create score array - int[] scores = new int[available.length]; - int NO_SCORE = -9999999; - int DOUBLE_BUFFER_MISMATCH_PENALTY = 1000; - int STENCIL_MISMATCH_PENALTY = 500; - // Pseudo attempt to keep equal rank penalties scale-equivalent - // (e.g., stencil mismatch is 3 * accum because there are 3 accum - // components) - int COLOR_MISMATCH_PENALTY_SCALE = 36; - int DEPTH_MISMATCH_PENALTY_SCALE = 6; - int ACCUM_MISMATCH_PENALTY_SCALE = 1; - int STENCIL_MISMATCH_PENALTY_SCALE = 3; - for (int i = 0; i < scores.length; i++) { - scores[i] = NO_SCORE; - } - // Compute score for each - for (int i = 0; i < scores.length; i++) { - GLCapabilities cur = available[i]; - if (cur == null) { - continue; - } - if (desired.getStereo() != cur.getStereo()) { - continue; - } - int score = 0; - // Compute difference in color depth - // (Note that this decides the direction of all other penalties) - score += (COLOR_MISMATCH_PENALTY_SCALE * - ((cur.getRedBits() + cur.getGreenBits() + cur.getBlueBits() + cur.getAlphaBits()) - - (desired.getRedBits() + desired.getGreenBits() + desired.getBlueBits() + desired.getAlphaBits()))); - // Compute difference in depth buffer depth - score += (DEPTH_MISMATCH_PENALTY_SCALE * sign(score) * - Math.abs(cur.getDepthBits() - desired.getDepthBits())); - // Compute difference in accumulation buffer depth - score += (ACCUM_MISMATCH_PENALTY_SCALE * sign(score) * - Math.abs((cur.getAccumRedBits() + cur.getAccumGreenBits() + cur.getAccumBlueBits() + cur.getAccumAlphaBits()) - - (desired.getAccumRedBits() + desired.getAccumGreenBits() + desired.getAccumBlueBits() + desired.getAccumAlphaBits()))); - // Compute difference in stencil bits - score += STENCIL_MISMATCH_PENALTY_SCALE * sign(score) * (cur.getStencilBits() - desired.getStencilBits()); - if (cur.getDoubleBuffered() != desired.getDoubleBuffered()) { - score += sign(score) * DOUBLE_BUFFER_MISMATCH_PENALTY; - } - if ((desired.getStencilBits() > 0) && (cur.getStencilBits() == 0)) { - score += sign(score) * STENCIL_MISMATCH_PENALTY; - } - scores[i] = score; - } - // Now prefer hardware-accelerated visuals by pushing scores of - // non-hardware-accelerated visuals out - boolean gotHW = false; - int maxAbsoluteHWScore = 0; - for (int i = 0; i < scores.length; i++) { - int score = scores[i]; - if (score == NO_SCORE) { - continue; - } - GLCapabilities cur = available[i]; - if (cur.getHardwareAccelerated()) { - int absScore = Math.abs(score); - if (!gotHW || - (absScore > maxAbsoluteHWScore)) { - gotHW = true; - maxAbsoluteHWScore = absScore; - } - } - } - if (gotHW) { - for (int i = 0; i < scores.length; i++) { - int score = scores[i]; - if (score == NO_SCORE) { - continue; - } - GLCapabilities cur = available[i]; - if (!cur.getHardwareAccelerated()) { - if (score <= 0) { - score -= maxAbsoluteHWScore; - } else if (score > 0) { - score += maxAbsoluteHWScore; - } - scores[i] = score; - } - } - } - - if (DEBUG) { - System.err.print("Scores: ["); - for (int i = 0; i < available.length; i++) { - if (i > 0) { - System.err.print(","); - } - System.err.print(" " + scores[i]); - } - System.err.println(" ]"); - } - - // Ready to select. Choose score closest to 0. - int scoreClosestToZero = NO_SCORE; - int chosenIndex = -1; - for (int i = 0; i < scores.length; i++) { - int score = scores[i]; - if (score == NO_SCORE) { - continue; - } - // Don't substitute a positive score for a smaller negative score - if ((scoreClosestToZero == NO_SCORE) || - (Math.abs(score) < Math.abs(scoreClosestToZero) && - ((sign(scoreClosestToZero) < 0) || (sign(score) > 0)))) { - scoreClosestToZero = score; - chosenIndex = i; - } - } - if (chosenIndex < 0) { - throw new GLException("Unable to select one of the provided GLCapabilities"); - } - if (DEBUG) { - System.err.println("Chosen index: " + chosenIndex); - System.err.println("Chosen capabilities:"); - System.err.println(available[chosenIndex]); - } - - return chosenIndex; - } - - private static int sign(int score) { - if (score < 0) { - return -1; - } - return 1; - } -} diff --git a/src/classes/javax/media/opengl/GLCapabilities.java b/src/classes/javax/media/opengl/GLCapabilities.java deleted file mode 100644 index 8f89f605c..000000000 --- a/src/classes/javax/media/opengl/GLCapabilities.java +++ /dev/null @@ -1,368 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. 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 - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * 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. - */ - -package javax.media.opengl; - -/** Specifies a set of OpenGL capabilities that a rendering context - must support, such as color depth and whether stereo is enabled. - It currently contains the minimal number of routines which allow - configuration on all supported window systems. */ - -public class GLCapabilities implements Cloneable { - private boolean doubleBuffered = true; - private boolean stereo = false; - private boolean hardwareAccelerated = true; - private int depthBits = 24; - private int stencilBits = 0; - private int redBits = 8; - private int greenBits = 8; - private int blueBits = 8; - private int alphaBits = 0; - private int accumRedBits = 0; - private int accumGreenBits = 0; - private int accumBlueBits = 0; - private int accumAlphaBits = 0; - // Shift bits from PIXELFORMATDESCRIPTOR not present because they - // are unlikely to be supported on Windows anyway - - // Support for full-scene antialiasing (FSAA) - private boolean sampleBuffers = false; - private int numSamples = 2; - - // Support for transparent windows containing OpenGL content - // (currently only has an effect on Mac OS X) - private boolean backgroundOpaque = true; - - // Bits for pbuffer creation - private boolean pbufferFloatingPointBuffers; - private boolean pbufferRenderToTexture; - private boolean pbufferRenderToTextureRectangle; - - /** Creates a GLCapabilities object. All attributes are in a default - state. - */ - public GLCapabilities() {} - - public Object clone() { - try { - return super.clone(); - } catch (CloneNotSupportedException e) { - throw new GLException(e); - } - } - - /** Indicates whether double-buffering is enabled. */ - public boolean getDoubleBuffered() { - return doubleBuffered; - } - - /** Enables or disables double buffering. */ - public void setDoubleBuffered(boolean onOrOff) { - doubleBuffered = onOrOff; - } - - /** Indicates whether stereo is enabled. */ - public boolean getStereo() { - return stereo; - } - - /** Enables or disables stereo viewing. */ - public void setStereo(boolean onOrOff) { - stereo = onOrOff; - } - - /** Indicates whether hardware acceleration is enabled. */ - public boolean getHardwareAccelerated() { - return hardwareAccelerated; - } - - /** Enables or disables hardware acceleration. */ - public void setHardwareAccelerated(boolean onOrOff) { - hardwareAccelerated = onOrOff; - } - - /** Returns the number of bits requested for the depth buffer. */ - public int getDepthBits() { - return depthBits; - } - - /** Sets the number of bits requested for the depth buffer. */ - public void setDepthBits(int depthBits) { - this.depthBits = depthBits; - } - - /** Returns the number of bits requested for the stencil buffer. */ - public int getStencilBits() { - return stencilBits; - } - - /** Sets the number of bits requested for the stencil buffer. */ - public void setStencilBits(int stencilBits) { - this.stencilBits = stencilBits; - } - - /** Returns the number of bits requested for the color buffer's red - component. On some systems only the color depth, which is the - sum of the red, green, and blue bits, is considered. */ - public int getRedBits() { - return redBits; - } - - /** Sets the number of bits requested for the color buffer's red - component. On some systems only the color depth, which is the - sum of the red, green, and blue bits, is considered. */ - public void setRedBits(int redBits) { - this.redBits = redBits; - } - - /** Returns the number of bits requested for the color buffer's - green component. On some systems only the color depth, which is - the sum of the red, green, and blue bits, is considered. */ - public int getGreenBits() { - return greenBits; - } - - /** Sets the number of bits requested for the color buffer's green - component. On some systems only the color depth, which is the - sum of the red, green, and blue bits, is considered. */ - public void setGreenBits(int greenBits) { - this.greenBits = greenBits; - } - - /** Returns the number of bits requested for the color buffer's blue - component. On some systems only the color depth, which is the - sum of the red, green, and blue bits, is considered. */ - public int getBlueBits() { - return blueBits; - } - - /** Sets the number of bits requested for the color buffer's blue - component. On some systems only the color depth, which is the - sum of the red, green, and blue bits, is considered. */ - public void setBlueBits(int blueBits) { - this.blueBits = blueBits; - } - - /** Returns the number of bits requested for the color buffer's - alpha component. On some systems only the color depth, which is - the sum of the red, green, and blue bits, is considered. */ - public int getAlphaBits() { - return alphaBits; - } - - /** Sets the number of bits requested for the color buffer's alpha - component. On some systems only the color depth, which is the - sum of the red, green, and blue bits, is considered. */ - public void setAlphaBits(int alphaBits) { - this.alphaBits = alphaBits; - } - - /** Returns the number of bits requested for the accumulation - buffer's red component. On some systems only the accumulation - buffer depth, which is the sum of the red, green, and blue bits, - is considered. */ - public int getAccumRedBits() { - return accumRedBits; - } - - /** Sets the number of bits requested for the accumulation buffer's - red component. On some systems only the accumulation buffer - depth, which is the sum of the red, green, and blue bits, is - considered. */ - public void setAccumRedBits(int accumRedBits) { - this.accumRedBits = accumRedBits; - } - - /** Returns the number of bits requested for the accumulation - buffer's green component. On some systems only the accumulation - buffer depth, which is the sum of the red, green, and blue bits, - is considered. */ - public int getAccumGreenBits() { - return accumGreenBits; - } - - /** Sets the number of bits requested for the accumulation buffer's - green component. On some systems only the accumulation buffer - depth, which is the sum of the red, green, and blue bits, is - considered. */ - public void setAccumGreenBits(int accumGreenBits) { - this.accumGreenBits = accumGreenBits; - } - - /** Returns the number of bits requested for the accumulation - buffer's blue component. On some systems only the accumulation - buffer depth, which is the sum of the red, green, and blue bits, - is considered. */ - public int getAccumBlueBits() { - return accumBlueBits; - } - - /** Sets the number of bits requested for the accumulation buffer's - blue component. On some systems only the accumulation buffer - depth, which is the sum of the red, green, and blue bits, is - considered. */ - public void setAccumBlueBits(int accumBlueBits) { - this.accumBlueBits = accumBlueBits; - } - - /** Returns the number of bits requested for the accumulation - buffer's alpha component. On some systems only the accumulation - buffer depth, which is the sum of the red, green, and blue bits, - is considered. */ - public int getAccumAlphaBits() { - return accumAlphaBits; - } - - /** Sets number of bits requested for accumulation buffer's alpha - component. On some systems only the accumulation buffer depth, - which is the sum of the red, green, and blue bits, is - considered. */ - public void setAccumAlphaBits(int accumAlphaBits) { - this.accumAlphaBits = accumAlphaBits; - } - - /** Indicates whether sample buffers for full-scene antialiasing - (FSAA) should be allocated for this drawable. Defaults to - false. */ - public void setSampleBuffers(boolean onOrOff) { - sampleBuffers = onOrOff; - } - - /** Returns whether sample buffers for full-scene antialiasing - (FSAA) should be allocated for this drawable. Defaults to - false. */ - public boolean getSampleBuffers() { - return sampleBuffers; - } - - /** If sample buffers are enabled, indicates the number of buffers - to be allocated. Defaults to 2. */ - public void setNumSamples(int numSamples) { - this.numSamples = numSamples; - } - - /** Returns the number of sample buffers to be allocated if sample - buffers are enabled. Defaults to 2. */ - public int getNumSamples() { - return numSamples; - } - - /** For pbuffers only, indicates whether floating-point buffers - should be used if available. Defaults to false. */ - public void setPbufferFloatingPointBuffers(boolean onOrOff) { - pbufferFloatingPointBuffers = onOrOff; - } - - /** For pbuffers only, returns whether floating-point buffers should - be used if available. Defaults to false. */ - public boolean getPbufferFloatingPointBuffers() { - return pbufferFloatingPointBuffers; - } - - /** For pbuffers only, indicates whether the render-to-texture - extension should be used if available. Defaults to false. */ - public void setPbufferRenderToTexture(boolean onOrOff) { - pbufferRenderToTexture = onOrOff; - } - - /** For pbuffers only, returns whether the render-to-texture - extension should be used if available. Defaults to false. */ - public boolean getPbufferRenderToTexture() { - return pbufferRenderToTexture; - } - - /** For pbuffers only, indicates whether the - render-to-texture-rectangle extension should be used if - available. Defaults to false. */ - public void setPbufferRenderToTextureRectangle(boolean onOrOff) { - pbufferRenderToTextureRectangle = onOrOff; - } - - /** For pbuffers only, returns whether the render-to-texture - extension should be used. Defaults to false. */ - public boolean getPbufferRenderToTextureRectangle() { - return pbufferRenderToTextureRectangle; - } - - /** For on-screen OpenGL contexts on some platforms, sets whether - the background of the context should be considered opaque. On - supported platforms, setting this to false, in conjunction with - other changes at the window toolkit level, can allow - hardware-accelerated OpenGL content inside of windows of - arbitrary shape. To achieve this effect it is necessary to use - an OpenGL clear color with an alpha less than 1.0. The default - value for this flag is <code>true</code>; setting it to false - may incur a certain performance penalty, so it is not - recommended to arbitrarily set it to false. */ - public void setBackgroundOpaque(boolean opaque) { - backgroundOpaque = opaque; - } - - /** Indicates whether the background of this OpenGL context should - be considered opaque. Defaults to true. - - @see #setBackgroundOpaque - */ - public boolean isBackgroundOpaque() { - return backgroundOpaque; - } - - /** Returns a textual representation of this GLCapabilities - object. */ - public String toString() { - return ("GLCapabilities [" + - "DoubleBuffered: " + doubleBuffered + - ", Stereo: " + stereo + - ", HardwareAccelerated: " + hardwareAccelerated + - ", DepthBits: " + depthBits + - ", StencilBits: " + stencilBits + - ", Red: " + redBits + - ", Green: " + greenBits + - ", Blue: " + blueBits + - ", Alpha: " + alphaBits + - ", Red Accum: " + accumRedBits + - ", Green Accum: " + accumGreenBits + - ", Blue Accum: " + accumBlueBits + - ", Alpha Accum: " + accumAlphaBits + - ", Multisample: " + sampleBuffers + - (sampleBuffers ? ", Num samples: " + numSamples : "") + - ", Opaque: " + backgroundOpaque + - " ]"); - } -} diff --git a/src/classes/javax/media/opengl/GLCapabilitiesChooser.java b/src/classes/javax/media/opengl/GLCapabilitiesChooser.java deleted file mode 100644 index 9d970ff42..000000000 --- a/src/classes/javax/media/opengl/GLCapabilitiesChooser.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. 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 - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * 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. - */ - -package javax.media.opengl; - -/** Provides a mechanism by which applications can customize the - window type selection for a given {@link GLCapabilities}. - Developers can implement this interface and pass an instance into - the appropriate method of {@link GLDrawableFactory}; the chooser - will be called during the OpenGL context creation process. */ - -public interface GLCapabilitiesChooser { - /** Chooses the index (0..available.length - 1) of the {@link - GLCapabilities} most closely matching the desired one from the - list of all supported. Some of the entries in the - <code>available</code> array may be null; the chooser must - ignore these. The <em>windowSystemRecommendedChoice</em> - parameter may be provided to the chooser by the underlying - window system; if this index is valid, it is recommended, but - not necessarily required, that the chooser select that entry. - - <P> <em>Note:</em> this method is called automatically by the - {@link GLDrawableFactory} when an instance of this class is - passed in to one of its factory methods. It should generally not - be invoked by users directly, unless it is desired to delegate - the choice to some other GLCapabilitiesChooser object. - */ - public int chooseCapabilities(GLCapabilities desired, - GLCapabilities[] available, - int windowSystemRecommendedChoice); -} diff --git a/src/classes/javax/media/opengl/GLDrawable.java b/src/classes/javax/media/opengl/GLDrawable.java index 50c95e688..c2bbcb860 100644 --- a/src/classes/javax/media/opengl/GLDrawable.java +++ b/src/classes/javax/media/opengl/GLDrawable.java @@ -39,6 +39,8 @@ package javax.media.opengl; +import javax.media.nwi.*; + // FIXME: We need some way to tell when the device upon which the canvas is // being displayed has changed (e.g., the user drags the canvas's parent // window from one screen on multi-screen environment to another, when the @@ -141,7 +143,7 @@ public interface GLDrawable { automatically and should not be called by the end user. */ public void swapBuffers() throws GLException; - /** Fetches the {@link GLCapabilities} corresponding to the chosen + /** Fetches the {@link NWCapabilities} corresponding to the chosen OpenGL capabilities (pixel format / visual) for this drawable. Some drawables, in particular on-screen drawables, may be created lazily; null is returned if the drawable is not @@ -151,7 +153,7 @@ public interface GLDrawable { value in this case. Returns a copy of the passed object. */ - public GLCapabilities getChosenGLCapabilities(); + public NWCapabilities getChosenNWCapabilities(); public NativeWindow getNativeWindow(); diff --git a/src/classes/javax/media/opengl/GLDrawableFactory.java b/src/classes/javax/media/opengl/GLDrawableFactory.java index dbbb42a0e..7ef8bdd58 100644 --- a/src/classes/javax/media/opengl/GLDrawableFactory.java +++ b/src/classes/javax/media/opengl/GLDrawableFactory.java @@ -39,6 +39,8 @@ package javax.media.opengl; +import javax.media.nwi.*; + import java.lang.reflect.*; import java.security.*; import com.sun.opengl.impl.*; @@ -46,21 +48,21 @@ import com.sun.opengl.impl.*; /** <P> Provides a virtual machine- and operating system-independent mechanism for creating {@link GLDrawable}s. </P> - <P> The {@link javax.media.opengl.GLCapabilities} objects passed + <P> The {@link javax.media.opengl.NWCapabilities} objects passed in to the various factory methods are used as a hint for the properties of the returned drawable. The default capabilities selection algorithm (equivalent to passing in a null {@link - GLCapabilitiesChooser}) is described in {@link - DefaultGLCapabilitiesChooser}. Sophisticated applications needing + NWCapabilitiesChooser}) is described in {@link + DefaultNWCapabilitiesChooser}. Sophisticated applications needing to change the selection algorithm may pass in their own {@link - GLCapabilitiesChooser} which can select from the available pixel - formats. The GLCapabilitiesChooser mechanism may not be supported + NWCapabilitiesChooser} which can select from the available pixel + formats. The NWCapabilitiesChooser mechanism may not be supported by all implementations or on all platforms, in which case any - passed GLCapabilitiesChooser will be ignored. </P> + passed NWCapabilitiesChooser will be ignored. </P> <P> Because of the multithreaded nature of the Java platform's Abstract Window Toolkit, it is typically not possible to immediately - reject a given {@link GLCapabilities} as being unsupportable by + reject a given {@link NWCapabilities} as being unsupportable by either returning <code>null</code> from the creation routines or raising a {@link GLException}. The semantics of the rejection process are (unfortunately) left unspecified for now. The current @@ -153,19 +155,19 @@ public abstract class GLDrawableFactory { * Returns a GLDrawable that wraps a platform-specific window system * object, such as an AWT or LCDUI Canvas. On platforms which * support it, selects a pixel format compatible with the supplied - * GLCapabilities, or if the passed GLCapabilities object is null, + * NWCapabilities, or if the passed NWCapabilities object is null, * uses a default set of capabilities. On these platforms, uses - * either the supplied GLCapabilitiesChooser object, or if the - * passed GLCapabilitiesChooser object is null, uses a - * DefaultGLCapabilitiesChooser instance. + * either the supplied NWCapabilitiesChooser object, or if the + * passed NWCapabilitiesChooser object is null, uses a + * DefaultNWCapabilitiesChooser instance. * * @throws IllegalArgumentException if the passed target is null * @throws GLException if any window system-specific errors caused * the creation of the GLDrawable to fail. */ public abstract GLDrawable createGLDrawable(NativeWindow target, - GLCapabilities capabilities, - GLCapabilitiesChooser chooser) + NWCapabilities capabilities, + NWCapabilitiesChooser chooser) throws IllegalArgumentException, GLException; //---------------------------------------------------------------------- @@ -186,8 +188,8 @@ public abstract class GLDrawableFactory { * @throws GLException if any window system-specific errors caused * the creation of the GLPbuffer to fail. */ - public abstract GLPbuffer createGLPbuffer(GLCapabilities capabilities, - GLCapabilitiesChooser chooser, + public abstract GLPbuffer createGLPbuffer(NWCapabilities capabilities, + NWCapabilitiesChooser chooser, int initialWidth, int initialHeight, GLContext shareWith) diff --git a/src/classes/javax/media/opengl/GLPbuffer.java b/src/classes/javax/media/opengl/GLPbuffer.java index 04cf7f0ed..0250365b0 100644 --- a/src/classes/javax/media/opengl/GLPbuffer.java +++ b/src/classes/javax/media/opengl/GLPbuffer.java @@ -59,7 +59,7 @@ public interface GLPbuffer extends GLAutoDrawable { /** Binds this pbuffer to its internal texture target. Only valid to call if offscreen render-to-texture has been specified in the - GLCapabilities for this GLPbuffer. If the + NWCapabilities for this GLPbuffer. If the render-to-texture-rectangle capability has also been specified, this will use e.g. wglBindTexImageARB as its implementation and cause the texture to be bound to e.g. the @@ -82,7 +82,7 @@ public interface GLPbuffer extends GLAutoDrawable { /** Indicates which vendor's extension is being used to support floating point channels in this pbuffer if that capability was - requested in the GLCapabilities during pbuffer creation. Returns + requested in the NWCapabilities during pbuffer creation. Returns one of NV_FLOAT, ATI_FLOAT or APPLE_FLOAT, or throws GLException if floating-point channels were not requested for this pbuffer. This function may only be called once the init method for this diff --git a/src/classes/javax/media/opengl/NativeWindow.java b/src/classes/javax/media/opengl/NativeWindow.java deleted file mode 100644 index f7e09520e..000000000 --- a/src/classes/javax/media/opengl/NativeWindow.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. 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 - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * 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. - */ - -package javax.media.opengl; - -/** Provides the mechanism by which the Java / OpenGL binding - interacts with windows. A window toolkit such as the AWT may - either implement this interface directly with one of its - components, or provide and register an implementation of {@link - NativeWindowFactory NativeWindowFactory} which can create - NativeWindow objects for its components. <P> - - A NativeWindow created for a particular on-screen component is - expected to have the same lifetime as that component. As long as - the component is alive, the NativeWindow must be able to control - it, and any time it is visible and locked, provide information - such as the window handle to the Java / OpenGL binding so that - GLDrawables and GLContexts may be created for the window. -*/ - -public interface NativeWindow { - public static final int LOCK_NOT_SUPPORTED = 0; - public static final int LOCK_SURFACE_NOT_READY = 1; - public static final int LOCK_SURFACE_CHANGED = 2; - public static final int LOCK_SUCCESS = 3; - - /** - * Lock this surface - */ - public int lockSurface() throws NativeWindowException ; - - /** - * Unlock this surface - */ - public void unlockSurface(); - public boolean isSurfaceLocked(); - - /** - * render all native window information invalid, - * as if the native window was destroyed - */ - public void invalidate(); - - /** - * Lifetime: locked state - */ - public long getDisplayHandle(); - public long getScreenHandle(); - - /** - * Returns the window handle for this NativeWindow. <P> - * - * The window handle shall reflect the platform one - * for all window related operations, e.g. open, close, resize. <P> - * - * On X11 this returns an entity of type Window. <BR> - * On Microsoft Windows this returns an entity of type HWND. - */ - public long getWindowHandle(); - - /** - * Returns the handle to the surface for this NativeWindow. <P> - * - * The surface handle shall reflect the platform one - * for all drawable surface operations, e.g. opengl, swap-buffer. <P> - * - * On X11 this returns an entity of type Window, - * since there is no differentiation of surface and window there. <BR> - * On Microsoft Windows this returns an entity of type HDC. - */ - public long getSurfaceHandle(); - - /** - * Lifetime: after 1st lock, until invalidation - */ - public long getVisualID(); - public int getScreenIndex(); - - /** Returns the current width of this window. */ - public int getWidth(); - - /** Returns the current height of this window. */ - public int getHeight(); -} diff --git a/src/classes/javax/media/opengl/NativeWindowException.java b/src/classes/javax/media/opengl/NativeWindowException.java deleted file mode 100644 index cb43d3830..000000000 --- a/src/classes/javax/media/opengl/NativeWindowException.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. 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 - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * 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. - */ - -package javax.media.opengl; - -/** A generic exception for OpenGL errors used throughout the binding - as a substitute for {@link RuntimeException}. */ - -public class NativeWindowException extends RuntimeException { - /** Constructs a NativeWindowException object. */ - public NativeWindowException() { - super(); - } - - /** Constructs a NativeWindowException object with the specified detail - message. */ - public NativeWindowException(String message) { - super(message); - } - - /** Constructs a NativeWindowException object with the specified detail - message and root cause. */ - public NativeWindowException(String message, Throwable cause) { - super(message, cause); - } - - /** Constructs a NativeWindowException object with the specified root - cause. */ - public NativeWindowException(Throwable cause) { - super(cause); - } -} diff --git a/src/classes/javax/media/opengl/NativeWindowFactory.java b/src/classes/javax/media/opengl/NativeWindowFactory.java index b80e239ea..c0009444a 100644 --- a/src/classes/javax/media/opengl/NativeWindowFactory.java +++ b/src/classes/javax/media/opengl/NativeWindowFactory.java @@ -32,6 +32,7 @@ package javax.media.opengl; +import javax.media.nwi.*; import java.lang.reflect.*; import java.security.*; import java.util.*; @@ -68,7 +69,7 @@ public abstract class NativeWindowFactory { // make it easier to run this code on mobile devices NativeWindowFactory factory = new NativeWindowFactoryImpl(); - nativeWindowClass = javax.media.opengl.NativeWindow.class; + nativeWindowClass = javax.media.nwi.NativeWindow.class; registerFactory(nativeWindowClass, factory); defaultFactory = factory; @@ -174,7 +175,7 @@ public abstract class NativeWindowFactory { /** * <P> Selects a graphics configuration on the specified graphics - * device compatible with the supplied GLCapabilities. This method + * device compatible with the supplied NWCapabilities. This method * is intended to be used by applications which do not use the * supplied GLCanvas class but instead wrap their own Canvas or * other window toolkit-specific object with a GLDrawable. Some @@ -199,8 +200,8 @@ public abstract class NativeWindowFactory { * the selection of the graphics configuration to fail. */ public abstract AbstractGraphicsConfiguration - chooseGraphicsConfiguration(GLCapabilities capabilities, - GLCapabilitiesChooser chooser, + chooseGraphicsConfiguration(NWCapabilities capabilities, + NWCapabilitiesChooser chooser, AbstractGraphicsDevice device) throws IllegalArgumentException, GLException; diff --git a/src/classes/javax/media/opengl/X11GraphicsConfiguration.java b/src/classes/javax/media/opengl/X11GraphicsConfiguration.java index 95127f2c1..b7784558d 100644 --- a/src/classes/javax/media/opengl/X11GraphicsConfiguration.java +++ b/src/classes/javax/media/opengl/X11GraphicsConfiguration.java @@ -32,6 +32,8 @@ package javax.media.opengl; +import javax.media.nwi.*; + /** Encapsulates a graphics configuration, or OpenGL pixel format, on X11 platforms. Objects of this type are returned from {@link NativeWindowFactory#chooseGraphicsConfiguration diff --git a/src/classes/javax/media/opengl/X11GraphicsDevice.java b/src/classes/javax/media/opengl/X11GraphicsDevice.java index 1a8900f31..31002f1d4 100644 --- a/src/classes/javax/media/opengl/X11GraphicsDevice.java +++ b/src/classes/javax/media/opengl/X11GraphicsDevice.java @@ -32,6 +32,8 @@ package javax.media.opengl; +import javax.media.nwi.*; + /** Encapsulates a graphics device, or screen, on X11 platforms. Objects of this type are passed to {@link NativeWindowFactory#chooseGraphicsConfiguration diff --git a/src/classes/javax/media/opengl/awt/GLCanvas.java b/src/classes/javax/media/opengl/awt/GLCanvas.java index e0d997dc5..42700b9e8 100644 --- a/src/classes/javax/media/opengl/awt/GLCanvas.java +++ b/src/classes/javax/media/opengl/awt/GLCanvas.java @@ -40,6 +40,7 @@ package javax.media.opengl.awt; import javax.media.opengl.*; +import javax.media.nwi.*; import java.awt.Canvas; import java.awt.Color; @@ -76,8 +77,8 @@ public class GLCanvas extends Canvas implements AWTGLAutoDrawable { private boolean sendReshape = false; private GraphicsConfiguration chosen; - private GLCapabilities glCaps; - private GLCapabilitiesChooser glCapChooser; + private NWCapabilities glCaps; + private NWCapabilitiesChooser glCapChooser; static { // Default to the GL2 profile, which is the default on the desktop @@ -96,15 +97,15 @@ public class GLCanvas extends Canvas implements AWTGLAutoDrawable { /** Creates a new GLCanvas component with the requested set of OpenGL capabilities, using the default OpenGL capabilities selection mechanism, on the default screen device. */ - public GLCanvas(GLCapabilities capabilities) { + public GLCanvas(NWCapabilities capabilities) { this(capabilities, null, null, null); } - /** Creates a new GLCanvas component. The passed GLCapabilities + /** Creates a new GLCanvas component. The passed NWCapabilities specifies the OpenGL capabilities for the component; if null, a - default set of capabilities is used. The GLCapabilitiesChooser + default set of capabilities is used. The NWCapabilitiesChooser specifies the algorithm for selecting one of the available - GLCapabilities for the component; a DefaultGLCapabilitesChooser + NWCapabilities for the component; a DefaultGLCapabilitesChooser is used if null is passed for this argument. The passed GLContext specifies an OpenGL context with which to share textures, display lists and other OpenGL state, and may be null @@ -115,8 +116,8 @@ public class GLCanvas extends Canvas implements AWTGLAutoDrawable { which to create the GLCanvas; the GLDrawableFactory uses the default screen device of the local GraphicsEnvironment if null is passed for this argument. */ - public GLCanvas(GLCapabilities capabilities, - GLCapabilitiesChooser chooser, + public GLCanvas(NWCapabilities capabilities, + NWCapabilitiesChooser chooser, GLContext shareWith, GraphicsDevice device) { // The platform-specific GLDrawableFactory will only provide a @@ -407,11 +408,11 @@ public class GLCanvas extends Canvas implements AWTGLAutoDrawable { maybeDoSingleThreadedWorkaround(swapBuffersOnEventDispatchThreadAction, swapBuffersAction); } - public GLCapabilities getChosenGLCapabilities() { + public NWCapabilities getChosenNWCapabilities() { if (drawable == null) return null; - return drawable.getChosenGLCapabilities(); + return drawable.getChosenNWCapabilities(); } public NativeWindow getNativeWindow() { @@ -532,8 +533,8 @@ public class GLCanvas extends Canvas implements AWTGLAutoDrawable { } } - private static GraphicsConfiguration chooseGraphicsConfiguration(GLCapabilities capabilities, - GLCapabilitiesChooser chooser, + private static GraphicsConfiguration chooseGraphicsConfiguration(NWCapabilities capabilities, + NWCapabilitiesChooser chooser, GraphicsDevice device) { // Make GLCanvas behave better in NetBeans GUI builder if (Beans.isDesignTime()) { diff --git a/src/classes/javax/media/opengl/awt/GLJPanel.java b/src/classes/javax/media/opengl/awt/GLJPanel.java index 37f1dfa7b..6711a5ed2 100644 --- a/src/classes/javax/media/opengl/awt/GLJPanel.java +++ b/src/classes/javax/media/opengl/awt/GLJPanel.java @@ -40,6 +40,7 @@ package javax.media.opengl.awt; import javax.media.opengl.*; +import javax.media.nwi.*; import java.awt.*; import java.awt.geom.*; @@ -63,7 +64,7 @@ import com.sun.opengl.impl.awt.*; Z-ordering or LayoutManager problems. <P> The GLJPanel can be made transparent by creating it with a - GLCapabilities object with alpha bits specified and calling {@link + NWCapabilities object with alpha bits specified and calling {@link #setOpaque}(false). Pixels with resulting OpenGL alpha values less than 1.0 will be overlaid on any underlying Swing rendering. <P> @@ -90,8 +91,8 @@ public class GLJPanel extends JPanel implements AWTGLAutoDrawable { private volatile boolean isInitialized; // Data used for either pbuffers or pixmap-based offscreen surfaces - private GLCapabilities offscreenCaps; - private GLCapabilitiesChooser chooser; + private NWCapabilities offscreenCaps; + private NWCapabilitiesChooser chooser; private GLContext shareWith; // Width of the actual GLJPanel private int panelWidth = 0; @@ -158,33 +159,33 @@ public class GLJPanel extends JPanel implements AWTGLAutoDrawable { /** Creates a new GLJPanel component with the requested set of OpenGL capabilities, using the default OpenGL capabilities selection mechanism. */ - public GLJPanel(GLCapabilities capabilities) { + public GLJPanel(NWCapabilities capabilities) { this(capabilities, null, null); } - /** Creates a new GLJPanel component. The passed GLCapabilities + /** Creates a new GLJPanel component. The passed NWCapabilities specifies the OpenGL capabilities for the component; if null, a - default set of capabilities is used. The GLCapabilitiesChooser + default set of capabilities is used. The NWCapabilitiesChooser specifies the algorithm for selecting one of the available - GLCapabilities for the component; a DefaultGLCapabilitesChooser + NWCapabilities for the component; a DefaultGLCapabilitesChooser is used if null is passed for this argument. The passed GLContext specifies an OpenGL context with which to share textures, display lists and other OpenGL state, and may be null if sharing is not desired. See the note in the overview documentation on <a href="../../../overview-summary.html#SHARING">context sharing</a>. */ - public GLJPanel(GLCapabilities capabilities, GLCapabilitiesChooser chooser, GLContext shareWith) { + public GLJPanel(NWCapabilities capabilities, NWCapabilitiesChooser chooser, GLContext shareWith) { super(); // Works around problems on many vendors' cards; we don't need a // back buffer for the offscreen surface anyway if (capabilities != null) { - offscreenCaps = (GLCapabilities) capabilities.clone(); + offscreenCaps = (NWCapabilities) capabilities.clone(); } else { - offscreenCaps = new GLCapabilities(); + offscreenCaps = new NWCapabilities(); } offscreenCaps.setDoubleBuffered(false); - this.chooser = ((chooser != null) ? chooser : new DefaultGLCapabilitiesChooser()); + this.chooser = ((chooser != null) ? chooser : new DefaultNWCapabilitiesChooser()); this.shareWith = shareWith; } @@ -391,8 +392,8 @@ public class GLJPanel extends JPanel implements AWTGLAutoDrawable { return oglPipelineEnabled; } - public GLCapabilities getChosenGLCapabilities() { - return backend.getChosenGLCapabilities(); + public NWCapabilities getChosenNWCapabilities() { + return backend.getChosenNWCapabilities(); } public NativeWindow getNativeWindow() { @@ -578,8 +579,8 @@ public class GLJPanel extends JPanel implements AWTGLAutoDrawable { // Called to get the current backend's GLContext public GLContext getContext(); - // Called to fetch the "real" chosen GLCapabilities for the backend - public GLCapabilities getChosenGLCapabilities(); + // Called to fetch the "real" chosen NWCapabilities for the backend + public NWCapabilities getChosenNWCapabilities(); // Called to handle a reshape event. When this is called, the // OpenGL context associated with the backend is not current, to @@ -815,11 +816,11 @@ public class GLJPanel extends JPanel implements AWTGLAutoDrawable { return offscreenContext; } - public GLCapabilities getChosenGLCapabilities() { + public NWCapabilities getChosenNWCapabilities() { if (offscreenDrawable == null) { return null; } - return offscreenDrawable.getChosenGLCapabilities(); + return offscreenDrawable.getChosenNWCapabilities(); } public void handleReshape() { @@ -902,11 +903,11 @@ public class GLJPanel extends JPanel implements AWTGLAutoDrawable { return pbuffer.getContext(); } - public GLCapabilities getChosenGLCapabilities() { + public NWCapabilities getChosenNWCapabilities() { if (pbuffer == null) { return null; } - return pbuffer.getChosenGLCapabilities(); + return pbuffer.getChosenNWCapabilities(); } public void handleReshape() { @@ -1069,9 +1070,9 @@ public class GLJPanel extends JPanel implements AWTGLAutoDrawable { return joglContext; } - public GLCapabilities getChosenGLCapabilities() { + public NWCapabilities getChosenNWCapabilities() { // FIXME: should do better than this; is it possible to using only platform-independent code? - return new GLCapabilities(); + return new NWCapabilities(); } public void handleReshape() { |