001: /*
002: * $RCSfile: MFFloat.java,v $
003: *
004: * @(#)MFFloat.java 1.13 98/11/05 20:34:39
005: *
006: * Copyright (c) 1996-1998 Sun Microsystems, Inc. All Rights Reserved.
007: *
008: * Sun grants you ("Licensee") a non-exclusive, royalty free, license to use,
009: * modify and redistribute this software in source and binary code form,
010: * provided that i) this copyright notice and license appear on all copies of
011: * the software; and ii) Licensee does not utilize the software in a manner
012: * which is disparaging to Sun.
013: *
014: * This software is provided "AS IS," without a warranty of any kind. ALL
015: * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY
016: * IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
017: * NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE
018: * LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
019: * OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS
020: * LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,
021: * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
022: * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF
023: * OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
024: * POSSIBILITY OF SUCH DAMAGES.
025: *
026: * This software is not designed or intended for use in on-line control of
027: * aircraft, air traffic, aircraft navigation or aircraft communications; or in
028: * the design, construction, operation or maintenance of any nuclear
029: * facility. Licensee represents and warrants that it will not use or
030: * redistribute the Software for such purposes.
031: * $Revision: 1.2 $
032: * $Date: 2005/02/03 23:06:57 $
033: * $State: Exp $
034: */
035: /*
036: * @Author: Rick Goldberg
037: * @Author: Doug Gehringer
038: *
039: */
040: package org.jdesktop.j3d.loaders.vrml97.impl;
041:
042: import java.util.Observable;
043: import java.util.Observer;
044:
045: /** Description of the Class */
046: public class MFFloat extends MField {
047:
048: float[] mfloat;
049:
050: /**Constructor for the MFFloat object */
051: public MFFloat() {
052: mfloat = new float[0];
053: }
054:
055: /**
056: *Constructor for the MFFloat object
057: *
058: *@param values Description of the Parameter
059: */
060: public MFFloat(float values[]) {
061: mfloat = new float[values.length];
062: System.arraycopy(values, 0, mfloat, 0, values.length);
063:
064: }
065:
066: /**
067: * Gets the value attribute of the MFFloat object
068: *
069: *@param values Description of the Parameter
070: */
071: public void getValue(float values[]) {
072: System.arraycopy(mfloat, 0, values, 0, values.length);
073: }
074:
075: /**
076: * Sets the value attribute of the MFFloat object
077: *
078: *@param values The new value value
079: */
080: public void setValue(float[] values) {
081: mfloat = new float[values.length];
082: System.arraycopy(values, 0, mfloat, 0, values.length);
083: route();
084: }
085:
086: /**
087: * Sets the value attribute of the MFFloat object
088: *
089: *@param size The new value value
090: *@param value The new value value
091: */
092: public void setValue(int size, float[] value) {
093: mfloat = new float[size];
094: System.arraycopy(value, 0, mfloat, 0, size);
095: route();
096: }
097:
098: /**
099: * Sets the value attribute of the MFFloat object
100: *
101: *@param value The new value value
102: */
103: public void setValue(MFFloat value) {
104: setValue(value.mfloat);
105: }
106:
107: /**
108: * Sets the value attribute of the MFFloat object
109: *
110: *@param value The new value value
111: */
112: public void setValue(ConstMFFloat value) {
113: setValue((MFFloat) value.ownerField);
114: }
115:
116: /**
117: * Description of the Method
118: *
119: *@param index Description of the Parameter
120: *@return Description of the Return Value
121: */
122: public float get1Value(int index) {
123: float f = 0.0f;
124: f = mfloat[index];
125: return f;
126: }
127:
128: /**
129: * Description of the Method
130: *
131: *@param index Description of the Parameter
132: *@param f Description of the Parameter
133: */
134: public void set1Value(int index, float f) {
135: mfloat[index] = f;
136: route();
137: }
138:
139: /**
140: * Description of the Method
141: *
142: *@param index Description of the Parameter
143: *@param f Description of the Parameter
144: */
145: public void set1Value(int index, ConstSFFloat f) {
146: set1Value(index, (SFFloat) f.ownerField);
147: }
148:
149: /**
150: * Description of the Method
151: *
152: *@param index Description of the Parameter
153: *@param f Description of the Parameter
154: */
155: public void set1Value(int index, SFFloat f) {
156: set1Value(index, f.value);
157: }
158:
159: /**
160: * Adds a feature to the Value attribute of the MFFloat object
161: *
162: *@param f The feature to be added to the Value attribute
163: */
164: public void addValue(float f) {
165: float[] temp = new float[mfloat.length + 1];
166: System.arraycopy(mfloat, 0, temp, 0, mfloat.length);
167: temp[mfloat.length] = f;
168: mfloat = temp;
169:
170: route();
171: }
172:
173: /**
174: * Adds a feature to the Value attribute of the MFFloat object
175: *
176: *@param f The feature to be added to the Value attribute
177: */
178: public void addValue(ConstSFFloat f) {
179: addValue((SFFloat) f.ownerField);
180: }
181:
182: /**
183: * Adds a feature to the Value attribute of the MFFloat object
184: *
185: *@param f The feature to be added to the Value attribute
186: */
187: public void addValue(SFFloat f) {
188: addValue(f.value);
189: }
190:
191: // the following needs double check
192: /**
193: * Description of the Method
194: *
195: *@param index Description of the Parameter
196: *@param f Description of the Parameter
197: */
198: public void insertValue(int index, float f) {
199:
200: float[] temp = new float[mfloat.length + 1];
201: System.arraycopy(mfloat, 0, temp, 0, index);
202: temp[index] = f;
203: System.arraycopy(mfloat, index, temp, index + 1, mfloat.length
204: - index);
205: mfloat = temp;
206: route();
207: }
208:
209: /**
210: * Description of the Method
211: *
212: *@param index Description of the Parameter
213: *@param f Description of the Parameter
214: */
215: public void insertValue(int index, ConstSFFloat f) {
216: insertValue(index, (SFFloat) f.ownerField);
217: }
218:
219: /**
220: * Description of the Method
221: *
222: *@param index Description of the Parameter
223: *@param f Description of the Parameter
224: */
225: public void insertValue(int index, SFFloat f) {
226: insertValue(index, f.value);
227: }
228:
229: /**
230: * Description of the Method
231: *
232: *@param field Description of the Parameter
233: */
234: public synchronized void update(Field field) {
235: setValue((MFFloat) field);
236: }
237:
238: /**
239: * Description of the Method
240: *
241: *@return Description of the Return Value
242: */
243: public synchronized Object clone() {
244: return new MFFloat(mfloat);
245: }
246:
247: /**
248: * Description of the Method
249: *
250: *@return Description of the Return Value
251: */
252: public synchronized ConstField constify() {
253: if (constField == null) {
254: constField = new ConstMFFloat(this );
255: }
256: return constField;
257: }
258:
259: /**
260: * Gets the size attribute of the MFFloat object
261: *
262: *@return The size value
263: */
264: public int getSize() {
265: return mfloat.length;
266: }
267:
268: /** Description of the Method */
269: public void clear() {
270: mfloat = new float[1];
271: }
272:
273: /**
274: * Description of the Method
275: *
276: *@param i Description of the Parameter
277: */
278: public void delete(int i) {
279: ;
280: }// TBD
281:
282: /**
283: * Description of the Method
284: *
285: *@return Description of the Return Value
286: */
287: public vrml.Field wrap() {
288: return new vrml.field.MFFloat(this);
289: }
290: }
|