001: /*
002: * $RCSfile: TriangleStripArray.java,v $
003: *
004: * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved.
005: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
006: *
007: * This code is free software; you can redistribute it and/or modify it
008: * under the terms of the GNU General Public License version 2 only, as
009: * published by the Free Software Foundation. Sun designates this
010: * particular file as subject to the "Classpath" exception as provided
011: * by Sun in the LICENSE file that accompanied this code.
012: *
013: * This code is distributed in the hope that it will be useful, but WITHOUT
014: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
015: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
016: * version 2 for more details (a copy is included in the LICENSE file that
017: * accompanied this code).
018: *
019: * You should have received a copy of the GNU General Public License version
020: * 2 along with this work; if not, write to the Free Software Foundation,
021: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
022: *
023: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
024: * CA 95054 USA or visit www.sun.com if you need additional information or
025: * have any questions.
026: *
027: * $Revision: 1.6 $
028: * $Date: 2008/02/28 20:17:32 $
029: * $State: Exp $
030: */
031:
032: package javax.media.j3d;
033:
034: /**
035: * The TriangleStripArray object draws an array of vertices as a set of
036: * connected triangle strips. An array of per-strip vertex counts specifies
037: * where the separate strips appear in the vertex array.
038: * For every strip in the set,
039: * each vertex, beginning with the third vertex in the array,
040: * defines a triangle to be drawn using the current vertex and
041: * the two previous vertices.
042: */
043:
044: public class TriangleStripArray extends GeometryStripArray {
045:
046: // non-public, no parameter constructor
047: TriangleStripArray() {
048: }
049:
050: /**
051: * Constructs an empty TriangleStripArray object using the
052: * specified parameters.
053: *
054: * @param vertexCount
055: * see {@link GeometryArray#GeometryArray(int,int)}
056: * for a description of this parameter.
057: *
058: * @param vertexFormat
059: * see {@link GeometryArray#GeometryArray(int,int)}
060: * for a description of this parameter.
061: *
062: * @param stripVertexCounts
063: * see {@link GeometryStripArray#GeometryStripArray(int,int,int[])}
064: * for a description of this parameter.
065: *
066: * @exception IllegalArgumentException if vertexCount is less than 3
067: * or any element in the stripVertexCounts array is less than 3
068: * ;<br>
069: * See {@link GeometryStripArray#GeometryStripArray(int,int,int[])}
070: * for more exceptions that can be thrown
071: */
072: public TriangleStripArray(int vertexCount, int vertexFormat,
073: int stripVertexCounts[]) {
074:
075: super (vertexCount, vertexFormat, stripVertexCounts);
076:
077: if (vertexCount < 3)
078: throw new IllegalArgumentException(J3dI18N
079: .getString("TriangleStripArray0"));
080: }
081:
082: /**
083: * Constructs an empty TriangleStripArray object using the
084: * specified parameters.
085: *
086: * @param vertexCount
087: * see {@link GeometryArray#GeometryArray(int,int,int,int[])}
088: * for a description of this parameter.
089: *
090: * @param vertexFormat
091: * see {@link GeometryArray#GeometryArray(int,int,int,int[])}
092: * for a description of this parameter.
093: *
094: * @param texCoordSetCount
095: * see {@link GeometryArray#GeometryArray(int,int,int,int[])}
096: * for a description of this parameter.
097: *
098: * @param texCoordSetMap
099: * see {@link GeometryArray#GeometryArray(int,int,int,int[])}
100: * for a description of this parameter.
101: *
102: * @param stripVertexCounts
103: * see {@link GeometryStripArray#GeometryStripArray(int,int,int,int[],int[])}
104: * for a description of this parameter.
105: *
106: * @exception IllegalArgumentException if vertexCount is less than 3
107: * or any element in the stripVertexCounts array is less than 3
108: * ;<br>
109: * See {@link GeometryStripArray#GeometryStripArray(int,int,int,int[],int[])}
110: * for more exceptions that can be thrown
111: *
112: * @since Java 3D 1.2
113: */
114: public TriangleStripArray(int vertexCount, int vertexFormat,
115: int texCoordSetCount, int[] texCoordSetMap,
116: int stripVertexCounts[]) {
117:
118: super (vertexCount, vertexFormat, texCoordSetCount,
119: texCoordSetMap, stripVertexCounts);
120:
121: if (vertexCount < 3)
122: throw new IllegalArgumentException(J3dI18N
123: .getString("TriangleStripArray0"));
124: }
125:
126: /**
127: * Constructs an empty TriangleStripArray object using the
128: * specified parameters.
129: *
130: * @param vertexCount
131: * see {@link GeometryArray#GeometryArray(int,int,int,int[],int,int[])}
132: * for a description of this parameter.
133: *
134: * @param vertexFormat
135: * see {@link GeometryArray#GeometryArray(int,int,int,int[],int,int[])}
136: * for a description of this parameter.
137: *
138: * @param texCoordSetMap
139: * see {@link GeometryArray#GeometryArray(int,int,int,int[],int,int[])}
140: * for a description of this parameter.
141: *
142: * @param vertexAttrCount
143: * see {@link GeometryArray#GeometryArray(int,int,int,int[],int,int[])}
144: * for a description of this parameter.
145: *
146: * @param vertexAttrSizes
147: * see {@link GeometryArray#GeometryArray(int,int,int,int[],int,int[])}
148: * for a description of this parameter.
149: *
150: * @param stripVertexCounts
151: * see {@link GeometryStripArray#GeometryStripArray(int,int,int,int[],int,int[],int[])}
152: * for a description of this parameter.
153: *
154: * @exception IllegalArgumentException if vertexCount is less than 3
155: * or any element in the stripVertexCounts array is less than 3
156: * ;<br>
157: * See {@link GeometryStripArray#GeometryStripArray(int,int,int,int[],int,int[],int[])}
158: * for more exceptions that can be thrown
159: *
160: * @since Java 3D 1.4
161: */
162: public TriangleStripArray(int vertexCount, int vertexFormat,
163: int texCoordSetCount, int[] texCoordSetMap,
164: int vertexAttrCount, int[] vertexAttrSizes,
165: int[] stripVertexCounts) {
166:
167: super (vertexCount, vertexFormat, texCoordSetCount,
168: texCoordSetMap, vertexAttrCount, vertexAttrSizes,
169: stripVertexCounts);
170:
171: if (vertexCount < 3)
172: throw new IllegalArgumentException(J3dI18N
173: .getString("TriangleStripArray0"));
174: }
175:
176: /**
177: * Creates the retained mode TriangleStripArrayRetained object that this
178: * TriangleStripArray object will point to.
179: */
180: void createRetained() {
181: this .retained = new TriangleStripArrayRetained();
182: this .retained.setSource(this );
183: }
184:
185: /**
186: * @deprecated replaced with cloneNodeComponent(boolean forceDuplicate)
187: */
188: public NodeComponent cloneNodeComponent() {
189: TriangleStripArrayRetained rt = (TriangleStripArrayRetained) retained;
190: int stripcounts[] = new int[rt.getNumStrips()];
191: rt.getStripVertexCounts(stripcounts);
192: int texSetCount = rt.getTexCoordSetCount();
193: int[] texMap = null;
194: int vertexAttrCount = rt.getVertexAttrCount();
195: int[] vertexAttrSizes = null;
196: if (texSetCount > 0) {
197: texMap = new int[rt.getTexCoordSetMapLength()];
198: rt.getTexCoordSetMap(texMap);
199: }
200: if (vertexAttrCount > 0) {
201: vertexAttrSizes = new int[vertexAttrCount];
202: rt.getVertexAttrSizes(vertexAttrSizes);
203: }
204: TriangleStripArray t = new TriangleStripArray(rt
205: .getVertexCount(), rt.getVertexFormat(), texSetCount,
206: texMap, vertexAttrCount, vertexAttrSizes, stripcounts);
207: t.duplicateNodeComponent(this);
208: return t;
209: }
210: }
|