aboutsummaryrefslogtreecommitdiffstats
path: root/src/javax/media/j3d/ShaderAttributeValueRetained.java
diff options
context:
space:
mode:
authorHarvey Harrison <[email protected]>2015-04-19 21:02:06 -0700
committerHarvey Harrison <[email protected]>2015-04-19 21:02:06 -0700
commit7a2e20caac9db6f789a7b3fab344b9758af45335 (patch)
treeb5236ff2570178de356eab569225108948eb4d30 /src/javax/media/j3d/ShaderAttributeValueRetained.java
parentf76ce302c4bb2a9f03bbee571ec5d05c29633023 (diff)
j3dcore: flatten the directory structure a bit
Signed-off-by: Harvey Harrison <[email protected]>
Diffstat (limited to 'src/javax/media/j3d/ShaderAttributeValueRetained.java')
-rw-r--r--src/javax/media/j3d/ShaderAttributeValueRetained.java537
1 files changed, 537 insertions, 0 deletions
diff --git a/src/javax/media/j3d/ShaderAttributeValueRetained.java b/src/javax/media/j3d/ShaderAttributeValueRetained.java
new file mode 100644
index 0000000..9555355
--- /dev/null
+++ b/src/javax/media/j3d/ShaderAttributeValueRetained.java
@@ -0,0 +1,537 @@
+/*
+ * Copyright 2005-2008 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ *
+ */
+
+package javax.media.j3d;
+
+import javax.vecmath.Matrix3f;
+import javax.vecmath.Matrix4f;
+import javax.vecmath.Point2f;
+import javax.vecmath.Point2i;
+import javax.vecmath.Point3f;
+import javax.vecmath.Point3i;
+import javax.vecmath.Point4f;
+import javax.vecmath.Point4i;
+import javax.vecmath.Tuple2f;
+import javax.vecmath.Tuple2i;
+import javax.vecmath.Tuple3f;
+import javax.vecmath.Tuple3i;
+import javax.vecmath.Tuple4f;
+import javax.vecmath.Tuple4i;
+
+/**
+ * The ShaderAttributeValueRetained object encapsulates a uniform shader
+ * attribute whose value is specified explicitly.
+ */
+
+class ShaderAttributeValueRetained extends ShaderAttributeObjectRetained {
+
+ ShaderAttributeValueRetained() {
+ }
+
+ @Override
+ synchronized void createMirrorObject() {
+ // System.err.println("ShaderAttributeValueRetained : createMirrorObject");
+ // This method should only call by setLive().
+ if (mirror == null) {
+ ShaderAttributeValueRetained mirrorSAV = new ShaderAttributeValueRetained();
+ mirrorSAV.createObjectData(getValue());
+ mirror = mirrorSAV;
+ mirror.source = source;
+
+ }
+ initMirrorObject();
+ }
+
+ /**
+ * Computes the base class from the specified object. A
+ * ClassCastException is thrown if the object is not an instance
+ * of one of the allowed classes.
+ */
+ @Override
+ int computeClassType(Object value) {
+ Class objClass = value.getClass();
+ if (objClass.isArray()) {
+ throw new ClassCastException(objClass + " -- array class not allowed");
+ }
+
+ for (int i = 0; i < classTable.length; i++) {
+ if (classTable[i].isInstance(value)) {
+ return i;
+ }
+ }
+ throw new ClassCastException(objClass + " -- unrecognized class");
+ }
+
+ /**
+ * Returns the base class represented by the specified class type.
+ */
+ @Override
+ Class getBaseClass(int classType) {
+ return classTable[classType];
+ }
+
+ /**
+ * Creates an attribute wrapper object of the specified class
+ * type, and stores the specified object.
+ */
+ @Override
+ AttrWrapper createAttrWrapper(Object value, int classType) {
+ ValueWrapper attrWrapper = null;
+ switch (classType) {
+ case TYPE_INTEGER:
+ attrWrapper = new IntegerWrapper();
+ break;
+ case TYPE_FLOAT:
+ attrWrapper = new FloatWrapper();
+ break;
+// case TYPE_DOUBLE:
+// attrWrapper = new DoubleWrapper();
+// break;
+ case TYPE_TUPLE2I:
+ attrWrapper = new Tuple2iWrapper();
+ break;
+ case TYPE_TUPLE2F:
+ attrWrapper = new Tuple2fWrapper();
+ break;
+// case TYPE_TUPLE2D:
+// attrWrapper = new Tuple2dWrapper();
+// break;
+ case TYPE_TUPLE3I:
+ attrWrapper = new Tuple3iWrapper();
+ break;
+ case TYPE_TUPLE3F:
+ attrWrapper = new Tuple3fWrapper();
+ break;
+// case TYPE_TUPLE3D:
+// attrWrapper = new Tuple3dWrapper();
+// break;
+ case TYPE_TUPLE4I:
+ attrWrapper = new Tuple4iWrapper();
+ break;
+ case TYPE_TUPLE4F:
+ attrWrapper = new Tuple4fWrapper();
+ break;
+// case TYPE_TUPLE4D:
+// attrWrapper = new Tuple4dWrapper();
+// break;
+ case TYPE_MATRIX3F:
+ attrWrapper = new Matrix3fWrapper();
+ break;
+// case TYPE_MATRIX3D:
+// attrWrapper = new Matrix3dWrapper();
+// break;
+ case TYPE_MATRIX4F:
+ attrWrapper = new Matrix4fWrapper();
+ break;
+// case TYPE_MATRIX4D:
+// attrWrapper = new Matrix4dWrapper();
+// break;
+ default:
+ // Should never get here
+ assert false;
+ return null;
+ }
+
+ attrWrapper.set(value);
+ return attrWrapper;
+ }
+
+ //
+ // The following wrapper classes are used to store a copy of the
+ // user-specified shader attribute value. There is a wrapper class
+ // for each supported base class.
+ //
+
+ // Base wrapper class for non-array attribute types
+ static abstract class ValueWrapper extends AttrWrapper {
+ // No additional fields or methods are defined in this class
+ }
+
+ // Wrapper class for Integer
+ static class IntegerWrapper extends ValueWrapper {
+ private int[] value = new int[1];
+
+ @Override
+ void set(Object value) {
+ this.value[0] = ((Integer)value).intValue();
+ }
+
+ @Override
+ Object get() {
+ return new Integer(this.value[0]);
+ }
+
+ @Override
+ Object getRef() {
+ return this.value;
+ }
+ }
+
+ // Wrapper class for Float
+ static class FloatWrapper extends ValueWrapper {
+ private float[] value = new float[1];
+
+ @Override
+ void set(Object value) {
+ this.value[0] = ((Float)value).floatValue();
+ }
+
+ @Override
+ Object get() {
+ return new Float(this.value[0]);
+ }
+
+ @Override
+ Object getRef() {
+ return this.value;
+ }
+ }
+
+ /*
+ // Wrapper class for Double
+ static class DoubleWrapper extends ValueWrapper {
+ private double[] value = new double[1];
+
+ void set(Object value) {
+ this.value[0] = ((Double)value).doubleValue();
+ }
+
+ Object get() {
+ return new Double(value[0]);
+ }
+
+ Object getRef() {
+ return value;
+ }
+ }
+ */
+
+ // Wrapper class for Tuple2i
+ static class Tuple2iWrapper extends ValueWrapper {
+ private int[] value = new int[2];
+
+ @Override
+ void set(Object value) {
+ ((Tuple2i)value).get(this.value);
+ }
+
+ @Override
+ Object get() {
+ return new Point2i(value);
+ }
+
+ @Override
+ Object getRef() {
+ return value;
+ }
+ }
+
+ // Wrapper class for Tuple2f
+ static class Tuple2fWrapper extends ValueWrapper {
+ private float[] value = new float[2];
+
+ @Override
+ void set(Object value) {
+ ((Tuple2f)value).get(this.value);
+ }
+
+ @Override
+ Object get() {
+ return new Point2f(value);
+ }
+
+ @Override
+ Object getRef() {
+ return value;
+ }
+ }
+
+ /*
+ // Wrapper class for Tuple2d
+ static class Tuple2dWrapper extends ValueWrapper {
+ private double[] value = new double[2];
+
+ void set(Object value) {
+ ((Tuple2d)value).get(this.value);
+ }
+
+ Object get() {
+ return new Point2d(value);
+ }
+
+ Object getRef() {
+ return value;
+ }
+ }
+ */
+
+ // Wrapper class for Tuple3i
+ static class Tuple3iWrapper extends ValueWrapper {
+ private int[] value = new int[3];
+
+ @Override
+ void set(Object value) {
+ ((Tuple3i)value).get(this.value);
+ }
+
+ @Override
+ Object get() {
+ return new Point3i(value);
+ }
+
+ @Override
+ Object getRef() {
+ return value;
+ }
+ }
+
+ // Wrapper class for Tuple3f
+ static class Tuple3fWrapper extends ValueWrapper {
+ private float[] value = new float[3];
+
+ @Override
+ void set(Object value) {
+ ((Tuple3f)value).get(this.value);
+ }
+
+ @Override
+ Object get() {
+ return new Point3f(value);
+ }
+
+ @Override
+ Object getRef() {
+ return value;
+ }
+ }
+
+ /*
+ // Wrapper class for Tuple3d
+ static class Tuple3dWrapper extends ValueWrapper {
+ private double[] value = new double[3];
+
+ void set(Object value) {
+ ((Tuple3d)value).get(this.value);
+ }
+
+ Object get() {
+ return new Point3d(value);
+ }
+
+ Object getRef() {
+ return value;
+ }
+ }
+ */
+
+ // Wrapper class for Tuple4i
+ static class Tuple4iWrapper extends ValueWrapper {
+ private int[] value = new int[4];
+
+ @Override
+ void set(Object value) {
+ ((Tuple4i)value).get(this.value);
+ }
+
+ @Override
+ Object get() {
+ return new Point4i(value);
+ }
+
+ @Override
+ Object getRef() {
+ return value;
+ }
+ }
+
+ // Wrapper class for Tuple4f
+ static class Tuple4fWrapper extends ValueWrapper {
+ private float[] value = new float[4];
+
+ @Override
+ void set(Object value) {
+ ((Tuple4f)value).get(this.value);
+ }
+
+ @Override
+ Object get() {
+ return new Point4f(value);
+ }
+
+ @Override
+ Object getRef() {
+ return value;
+ }
+ }
+
+ /*
+ // Wrapper class for Tuple4d
+ static class Tuple4dWrapper extends ValueWrapper {
+ private double[] value = new double[4];
+
+ void set(Object value) {
+ ((Tuple4d)value).get(this.value);
+ }
+
+ Object get() {
+ return new Point4d(value);
+ }
+
+ Object getRef() {
+ return value;
+ }
+ }
+ */
+
+ // Wrapper class for Matrix3f
+ static class Matrix3fWrapper extends ValueWrapper {
+ private float[] value = new float[9];
+
+ @Override
+ void set(Object value) {
+ Matrix3f m = (Matrix3f)value;
+ this.value[0] = m.m00;
+ this.value[1] = m.m01;
+ this.value[2] = m.m02;
+ this.value[3] = m.m10;
+ this.value[4] = m.m11;
+ this.value[5] = m.m12;
+ this.value[6] = m.m20;
+ this.value[7] = m.m21;
+ this.value[8] = m.m22;
+ }
+
+ @Override
+ Object get() {
+ return new Matrix3f(value);
+ }
+
+ @Override
+ Object getRef() {
+ return value;
+ }
+ }
+
+ /*
+ // Wrapper class for Matrix3d
+ static class Matrix3dWrapper extends ValueWrapper {
+ private double[] value = new double[9];
+
+ void set(Object value) {
+ Matrix3d m = (Matrix3d)value;
+ this.value[0] = m.m00;
+ this.value[1] = m.m01;
+ this.value[2] = m.m02;
+ this.value[3] = m.m10;
+ this.value[4] = m.m11;
+ this.value[5] = m.m12;
+ this.value[6] = m.m20;
+ this.value[7] = m.m21;
+ this.value[8] = m.m22;
+ }
+
+ Object get() {
+ return new Matrix3d(value);
+ }
+
+ Object getRef() {
+ return value;
+ }
+ }
+ */
+
+ // Wrapper class for Matrix4f
+ static class Matrix4fWrapper extends ValueWrapper {
+ private float[] value = new float[16];
+
+ @Override
+ void set(Object value) {
+ Matrix4f m = (Matrix4f)value;
+ this.value[0] = m.m00;
+ this.value[1] = m.m01;
+ this.value[2] = m.m02;
+ this.value[3] = m.m03;
+ this.value[4] = m.m10;
+ this.value[5] = m.m11;
+ this.value[6] = m.m12;
+ this.value[7] = m.m13;
+ this.value[8] = m.m20;
+ this.value[9] = m.m21;
+ this.value[10] = m.m22;
+ this.value[11] = m.m23;
+ this.value[12] = m.m30;
+ this.value[13] = m.m31;
+ this.value[14] = m.m32;
+ this.value[15] = m.m33;
+ }
+
+ @Override
+ Object get() {
+ return new Matrix4f(value);
+ }
+
+ @Override
+ Object getRef() {
+ return value;
+ }
+ }
+
+ /*
+ // Wrapper class for Matrix4d
+ static class Matrix4dWrapper extends ValueWrapper {
+ private double[] value = new double[16];
+
+ void set(Object value) {
+ Matrix4d m = (Matrix4d)value;
+ this.value[0] = m.m00;
+ this.value[1] = m.m01;
+ this.value[2] = m.m02;
+ this.value[3] = m.m03;
+ this.value[4] = m.m10;
+ this.value[5] = m.m11;
+ this.value[6] = m.m12;
+ this.value[7] = m.m13;
+ this.value[8] = m.m20;
+ this.value[9] = m.m21;
+ this.value[10] = m.m22;
+ this.value[11] = m.m23;
+ this.value[12] = m.m30;
+ this.value[13] = m.m31;
+ this.value[14] = m.m32;
+ this.value[15] = m.m33;
+ }
+
+ Object get() {
+ return new Matrix4d(value);
+ }
+
+ Object getRef() {
+ return value;
+ }
+ }
+ */
+
+}