diff options
Diffstat (limited to 'examples/org.eclipse.swt.opengl.examples/src/org/eclipse/swt/opengl/examples/StencilTab.java')
-rw-r--r-- | examples/org.eclipse.swt.opengl.examples/src/org/eclipse/swt/opengl/examples/StencilTab.java | 230 |
1 files changed, 0 insertions, 230 deletions
diff --git a/examples/org.eclipse.swt.opengl.examples/src/org/eclipse/swt/opengl/examples/StencilTab.java b/examples/org.eclipse.swt.opengl.examples/src/org/eclipse/swt/opengl/examples/StencilTab.java deleted file mode 100644 index 3b337e669f..0000000000 --- a/examples/org.eclipse.swt.opengl.examples/src/org/eclipse/swt/opengl/examples/StencilTab.java +++ /dev/null @@ -1,230 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2003 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.swt.opengl.examples; - - -import org.eclipse.opengl.*; -import org.eclipse.swt.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; - -class StencilTab extends OpenGLTab { - private abstract class Shape { - private String name; - /** - * Constructor - * - * @param name the shape's name - */ - Shape(String name) { - super(); - this.name = name; - } - /** - * Draws this shape. - */ - abstract void draw(); - /** - * Returns the name. - * - * @return String - */ - String getName() { - return name; - } - } - - private Shape[] shapes = new Shape[5]; - private Shape currentShape; - private float xPos = 0, yPos = 0; - private float size = 0.45f; - private int texture; - private int quadratic; - private final static String IMAGE = "images/splash.bmp"; - private final static int SLEEP_LENGTH = 50; - - /** - * @see OpenGLTab#createControls(Composite) - */ - void createControls(Composite composite) { - Composite controls = new Composite(composite, SWT.NONE); - GridLayout layout = new GridLayout(2, false); - layout.marginHeight = 0; - layout.marginWidth = 0; - controls.setLayout(layout); - new Label(controls, SWT.NONE).setText("Object:"); - final Combo shapeCombo = new Combo(controls, SWT.READ_ONLY); - for (int i = 0; i < shapes.length; i++) { - shapeCombo.add(shapes[i].getName()); - } - shapeCombo.select(0); - shapeCombo.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event e) { - currentShape = shapes[shapeCombo.getSelectionIndex()]; - } - }); - - new Label(composite, SWT.NONE).setText("Size:"); - final Slider sizeSlider = new Slider(composite, SWT.HORIZONTAL); - sizeSlider.setValues(0, 15, 75, 5, 5, 10); - sizeSlider.setSelection(45); - sizeSlider.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event e) { - size = ((float) sizeSlider.getSelection()) / 100; - } - }); - } - - /** - * @see OpenGLTab#dispose() - */ - void dispose() { - super.dispose(); - GLU.gluDeleteQuadric(quadratic); - } - - /** - * @see OpenGLTab#getSleepLength() - */ - int getSleepLength() { - return SLEEP_LENGTH; - } - - /** - * @see OpenGLTab#getTabText() - */ - String getTabText() { - return "Stencil"; - } - - /** - * @see OpenGLTab#init() - */ - void init() { - if (!hasStencilSupport()) return; - - GL.glClearColor(1.0f, 1.0f, 1.0f, 1.0f); - GL.glClearDepth(1.0f); - int[] textureOut = new int[1]; - GL.glGenTextures(1, textureOut); - loadTexture(getGlCanvas(), IMAGE, 0, textureOut); - this.texture = textureOut[0]; - quadratic = GLU.gluNewQuadric(); - GLU.gluQuadricNormals(quadratic, GLU.GLU_SMOOTH); - GL.glDepthFunc(GL.GL_LEQUAL); - GL.glEnable(GL.GL_STENCIL_TEST); - GL.glEnable(GL.GL_TEXTURE_2D); - GL.glEnable(GL.GL_DEPTH_TEST); - // create shapes - shapes[0] = new Shape("Triangle") { - public void draw() { - GL.glBegin(GL.GL_TRIANGLES); - GL.glVertex3f(0.0f, size, 0.0f); - GL.glVertex3f(-size, -size, 0.0f); - GL.glVertex3f(size, -size, 0.0f); - GL.glEnd(); - } - }; - - shapes[1] = new Shape("Disk") { - public void draw() { - GLU.gluDisk(quadratic, 0.0f, size, 32, 32); - } - }; - - shapes[2] = new Shape("Square") { - public void draw() { - GL.glRectf(-size, -size, size, size); - } - }; - - shapes[3] = new Shape("Hour Glass") { - public void draw() { - GL.glBegin(GL.GL_TRIANGLES); - GL.glVertex3f(0.0f, size, 0.0f); - GL.glVertex3f(-size, -size, 0.0f); - GL.glVertex3f(size, -size, 0.0f); - GL.glVertex3f(0.0f, -size, 0.0f); - GL.glVertex3f(size, size, 0.0f); - GL.glVertex3f(-size, size, 0.0f); - GL.glEnd(); - } - }; - - shapes[4] = new Shape("Star") { - public void draw() { - GL.glBegin(GL.GL_TRIANGLES); - GL.glVertex3f(-0.3f, 0, 0.0f); - GL.glVertex3f(2 * size - 0.3f, 0, 0.0f); - GL.glVertex3f(size - 0.3f, 2 * size * 0.85f, 0.0f); - GL.glVertex3f(2 * size - 0.3f, size, 0.0f); - GL.glVertex3f(0 - 0.3f, size, 0.0f); - GL.glVertex3f(size - 0.3f, -size * 0.85f, 0.0f); - GL.glEnd(); - } - }; - - currentShape = shapes[0]; - } - - /** - * @see OpenGLTab#isStencilSupportNeeded - */ - boolean isStencilSupportNeeded() { - return true; - } - - /** - * @see OpenGLTab#renderScene() - */ - void renderScene() { - GL.glClear( - GL.GL_COLOR_BUFFER_BIT - | GL.GL_DEPTH_BUFFER_BIT - | GL.GL_STENCIL_BUFFER_BIT); - - GL.glLoadIdentity(); - GL.glTranslatef( - (float) (1.5 * Math.cos(xPos)), - (float) (1.0 * Math.sin(yPos)), - -3.0f); - xPos += 0.15f; - yPos += 0.3f; - - GL.glColorMask(false, false, false, false); - GL.glStencilFunc(GL.GL_ALWAYS, 1, 1); - GL.glStencilOp(GL.GL_KEEP, GL.GL_KEEP, GL.GL_REPLACE); - GL.glDisable(GL.GL_DEPTH_TEST); - GL.glColor4f(1.0f, 1.0f, 1.0f, 1.0f); - - currentShape.draw(); - - GL.glEnable(GL.GL_DEPTH_TEST); - GL.glColorMask(true, true, true, true); - GL.glStencilFunc(GL.GL_EQUAL, 1, 1); - GL.glStencilOp(GL.GL_KEEP, GL.GL_KEEP, GL.GL_KEEP); - - GL.glLoadIdentity(); - // load the texture behind the stencil object - GL.glTranslatef(0.0f, 0.0f, -3.1f); - GL.glBindTexture(GL.GL_TEXTURE_2D, texture); - GL.glBegin(GL.GL_QUADS); - GL.glTexCoord2f(0.0f, 0.0f); - GL.glVertex3f(-0.85f, -0.85f, 1.0f); - GL.glTexCoord2f(1.0f, 0.0f); - GL.glVertex3f(0.85f, -0.85f, 1.0f); - GL.glTexCoord2f(1.0f, 1.0f); - GL.glVertex3f(0.85f, 0.85f, 1.0f); - GL.glTexCoord2f(0.0f, 1.0f); - GL.glVertex3f(-0.85f, 0.85f, 1.0f); - GL.glEnd(); - } -} |