001: /*
002: * $RCSfile: DoubleBufferWrapper.java,v $
003: *
004: * Copyright (c) 2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * Redistribution and use in source and binary forms, with or without
007: * modification, are permitted provided that the following conditions
008: * are met:
009: *
010: * - Redistribution of source code must retain the above copyright
011: * notice, this list of conditions and the following disclaimer.
012: *
013: * - Redistribution in binary form must reproduce the above copyright
014: * notice, this list of conditions and the following disclaimer in
015: * the documentation and/or other materials provided with the
016: * distribution.
017: *
018: * Neither the name of Sun Microsystems, Inc. or the names of
019: * contributors may be used to endorse or promote products derived
020: * from this software without specific prior written permission.
021: *
022: * This software is provided "AS IS," without a warranty of any
023: * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
024: * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
025: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY
026: * EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL
027: * NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF
028: * USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS
029: * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR
030: * ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL,
031: * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND
032: * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR
033: * INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
034: * POSSIBILITY OF SUCH DAMAGES.
035: *
036: * You acknowledge that this software is not designed, licensed or
037: * intended for use in the design, construction, operation or
038: * maintenance of any nuclear facility.
039: *
040: * $Revision: 1.4 $
041: * $Date: 2007/02/09 17:20:05 $
042: * $State: Exp $
043: */
044:
045: package com.sun.j3d.internal;
046:
047: import javax.media.j3d.J3DBuffer;
048: import java.nio.DoubleBuffer;
049:
050: /**
051: * NIO Buffers are new in Java 1.4 but we need to run on 1.3
052: * as well, so this class was created to hide the NIO classes
053: * from non-1.4 Java 3D users.
054: *
055: * <p>
056: * NOTE: We no longer need to support JDK 1.3 as of the Java 3D 1.3.2
057: * community source release on java.net. We should be able to get rid
058: * of this class.
059: */
060:
061: public class DoubleBufferWrapper extends BufferWrapper {
062:
063: private DoubleBuffer buffer = null;
064:
065: /**
066: * Constructor initializes buffer with a
067: * java.nio.DoubleBuffer object.
068: */
069: public DoubleBufferWrapper(DoubleBuffer buffer) {
070: this .buffer = buffer;
071: }
072:
073: /**
074: * Constructor initializes buffer with a
075: * javax.media.j3d.J3DBuffer object.
076: */
077: public DoubleBufferWrapper(J3DBuffer b) {
078: buffer = (DoubleBuffer) (b.getBuffer());
079: }
080:
081: /**
082: * Returns the java.nio.Buffer contained within this
083: * DoubleBufferWrapper.
084: */
085: public java.nio.Buffer getBuffer() {
086: return this .buffer;
087: }
088:
089: // Wrapper for all relevant DoubleBuffer methods.
090:
091: /**
092: * @return A boolean indicating whether the java.nio.Buffer
093: * object contained within this DoubleBuffer is direct or
094: * indirect.
095: */
096: public boolean isDirect() {
097: return buffer.isDirect();
098: }
099:
100: /**
101: * Reads the double at this buffer's current position,
102: * and then increments the position.
103: */
104: public double get() {
105: return buffer.get();
106: }
107:
108: /**
109: * Reads the double at the given offset into the buffer.
110: */
111: public double get(int index) {
112: return buffer.get(index);
113: }
114:
115: /**
116: * Bulk <i>get</i> method. Transfers <code>dst.length</code>
117: * doubles from
118: * the buffer to the destination array and increments the
119: * buffer's position by <code>dst.length</code>.
120: */
121: public DoubleBufferWrapper get(double[] dst) {
122: buffer.get(dst);
123: return this ;
124: }
125:
126: /**
127: * Bulk <i>get</i> method. Transfers <i>length</i> doubles
128: * from the buffer starting at position <i>offset</i> into
129: * the destination array.
130: */
131: public DoubleBufferWrapper get(double[] dst, int offset, int length) {
132: buffer.get(dst, offset, length);
133: return this ;
134: }
135:
136: /**
137: * Bulk <i>put</i> method. Transfers <code>src.length</code>
138: * doubles into the buffer at the current position.
139: */
140: public DoubleBufferWrapper put(double[] src) {
141: buffer.put(src);
142: return this ;
143: }
144:
145: /**
146: * Creates and returns a J3DBuffer object containing the
147: * buffer in this DoubleBufferWrapper object.
148: */
149: public J3DBuffer getJ3DBuffer() {
150: return new J3DBuffer(buffer);
151: }
152:
153: }
|