Package javax.media.j3d

Source Code of javax.media.j3d.ShaderAttributeValueRetained$Matrix3fWrapper

/*
* 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;
  }
    }
    */

TOP

Related Classes of javax.media.j3d.ShaderAttributeValueRetained$Matrix3fWrapper

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.