001: /*
002: * $RCSfile: IndexedTriangleStripArray.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:25 $
029: * $State: Exp $
030: */
031:
032: package javax.media.j3d;
033:
034: /**
035: * The IndexedTriangleStripArray object draws an array of vertices as a set of
036: * connected triangle strips. An array of per-strip index counts specifies
037: * where the separate strips appear in the indexed 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 IndexedTriangleStripArray extends
045: IndexedGeometryStripArray {
046:
047: /**
048: * Package scoped default constructor
049: */
050: IndexedTriangleStripArray() {
051: }
052:
053: /**
054: * Constructs an empty IndexedTriangleStripArray object using the
055: * specified parameters.
056: *
057: * @param vertexCount
058: * see {@link GeometryArray#GeometryArray(int,int)}
059: * for a description of this parameter.
060: *
061: * @param vertexFormat
062: * see {@link GeometryArray#GeometryArray(int,int)}
063: * for a description of this parameter.
064: *
065: * @param indexCount
066: * see {@link IndexedGeometryArray#IndexedGeometryArray(int,int,int)}
067: * for a description of this parameter.
068: *
069: * @param stripIndexCounts
070: * see {@link IndexedGeometryStripArray#IndexedGeometryStripArray(int,int,int,int[])}
071: * for a description of this parameter.
072: *
073: * @exception IllegalArgumentException if vertexCount is less than 1,
074: * or indexCount is less than 3,
075: * or any element in the stripIndexCounts array is less than 3
076: * ;<br>
077: * See {@link IndexedGeometryStripArray#IndexedGeometryStripArray(int,int,int,int[])}
078: * for more exceptions that can be thrown
079: */
080: public IndexedTriangleStripArray(int vertexCount, int vertexFormat,
081: int indexCount, int[] stripIndexCounts) {
082:
083: super (vertexCount, vertexFormat, indexCount, stripIndexCounts);
084:
085: if (vertexCount < 1)
086: throw new IllegalArgumentException(J3dI18N
087: .getString("IndexedTriangleStripArray0"));
088:
089: if (indexCount < 3)
090: throw new IllegalArgumentException(J3dI18N
091: .getString("IndexedTriangleStripArray1"));
092: }
093:
094: /**
095: * Constructs an empty IndexedTriangleStripArray object using the
096: * specified parameters.
097: *
098: * @param vertexCount
099: * see {@link GeometryArray#GeometryArray(int,int,int,int[])}
100: * for a description of this parameter.
101: *
102: * @param vertexFormat
103: * see {@link GeometryArray#GeometryArray(int,int,int,int[])}
104: * for a description of this parameter.
105: *
106: * @param texCoordSetCount
107: * see {@link GeometryArray#GeometryArray(int,int,int,int[])}
108: * for a description of this parameter.
109: *
110: * @param texCoordSetMap
111: * see {@link GeometryArray#GeometryArray(int,int,int,int[])}
112: * for a description of this parameter.
113: *
114: * @param indexCount
115: * see {@link IndexedGeometryArray#IndexedGeometryArray(int,int,int,int[],int)}
116: * for a description of this parameter.
117: *
118: * @param stripIndexCounts
119: * see {@link IndexedGeometryStripArray#IndexedGeometryStripArray(int,int,int,int[],int,int[])}
120: * for a description of this parameter.
121: *
122: * @exception IllegalArgumentException if vertexCount is less than 1,
123: * or indexCount is less than 3,
124: * or any element in the stripIndexCounts array is less than 3
125: * ;<br>
126: * See {@link IndexedGeometryStripArray#IndexedGeometryStripArray(int,int,int,int[],int,int[])}
127: * for more exceptions that can be thrown
128: *
129: * @since Java 3D 1.2
130: */
131: public IndexedTriangleStripArray(int vertexCount, int vertexFormat,
132: int texCoordSetCount, int[] texCoordSetMap, int indexCount,
133: int[] stripIndexCounts) {
134:
135: super (vertexCount, vertexFormat, texCoordSetCount,
136: texCoordSetMap, indexCount, stripIndexCounts);
137:
138: if (vertexCount < 1)
139: throw new IllegalArgumentException(J3dI18N
140: .getString("IndexedTriangleStripArray0"));
141:
142: if (indexCount < 3)
143: throw new IllegalArgumentException(J3dI18N
144: .getString("IndexedTriangleStripArray1"));
145: }
146:
147: /**
148: * Constructs an empty IndexedTriangleStripArray object using the
149: * specified parameters.
150: *
151: * @param vertexCount
152: * see {@link GeometryArray#GeometryArray(int,int,int,int[],int,int[])}
153: * for a description of this parameter.
154: *
155: * @param vertexFormat
156: * see {@link GeometryArray#GeometryArray(int,int,int,int[],int,int[])}
157: * for a description of this parameter.
158: *
159: * @param texCoordSetMap
160: * see {@link GeometryArray#GeometryArray(int,int,int,int[],int,int[])}
161: * for a description of this parameter.
162: *
163: * @param vertexAttrCount
164: * see {@link GeometryArray#GeometryArray(int,int,int,int[],int,int[])}
165: * for a description of this parameter.
166: *
167: * @param vertexAttrSizes
168: * see {@link GeometryArray#GeometryArray(int,int,int,int[],int,int[])}
169: * for a description of this parameter.
170: *
171: * @param indexCount
172: * see {@link IndexedGeometryArray#IndexedGeometryArray(int,int,int,int[],int,int[],int)}
173: * for a description of this parameter.
174: *
175: * @param stripIndexCounts
176: * see {@link IndexedGeometryStripArray#IndexedGeometryStripArray(int,int,int,int[],int,int[],int,int[])}
177: * for a description of this parameter.
178: *
179: * @exception IllegalArgumentException if vertexCount is less than 1,
180: * or indexCount is less than 3,
181: * or any element in the stripIndexCounts array is less than 3
182: * ;<br>
183: * See {@link IndexedGeometryStripArray#IndexedGeometryStripArray(int,int,int,int[],int,int[],int,int[])}
184: * for more exceptions that can be thrown
185: *
186: * @since Java 3D 1.4
187: */
188: public IndexedTriangleStripArray(int vertexCount, int vertexFormat,
189: int texCoordSetCount, int[] texCoordSetMap,
190: int vertexAttrCount, int[] vertexAttrSizes, int indexCount,
191: int[] stripIndexCounts) {
192:
193: super (vertexCount, vertexFormat, texCoordSetCount,
194: texCoordSetMap, vertexAttrCount, vertexAttrSizes,
195: indexCount, stripIndexCounts);
196:
197: if (vertexCount < 1)
198: throw new IllegalArgumentException(J3dI18N
199: .getString("IndexedTriangleStripArray0"));
200:
201: if (indexCount < 3)
202: throw new IllegalArgumentException(J3dI18N
203: .getString("IndexedTriangleStripArray1"));
204: }
205:
206: /**
207: * Creates the retained mode IndexedTriangleStripArrayRetained object that this
208: * IndexedTriangleStripArray object will point to.
209: */
210: void createRetained() {
211: this .retained = new IndexedTriangleStripArrayRetained();
212: this .retained.setSource(this );
213: }
214:
215: /**
216: * @deprecated replaced with cloneNodeComponent(boolean forceDuplicate)
217: */
218: public NodeComponent cloneNodeComponent() {
219: IndexedTriangleStripArrayRetained rt = (IndexedTriangleStripArrayRetained) retained;
220: int stripIndexCounts[] = new int[rt.getNumStrips()];
221: rt.getStripIndexCounts(stripIndexCounts);
222: int texSetCount = rt.getTexCoordSetCount();
223: int[] texMap = null;
224: int vertexAttrCount = rt.getVertexAttrCount();
225: int[] vertexAttrSizes = null;
226: if (texSetCount > 0) {
227: texMap = new int[rt.getTexCoordSetMapLength()];
228: rt.getTexCoordSetMap(texMap);
229: }
230: if (vertexAttrCount > 0) {
231: vertexAttrSizes = new int[vertexAttrCount];
232: rt.getVertexAttrSizes(vertexAttrSizes);
233: }
234: IndexedTriangleStripArray t = new IndexedTriangleStripArray(rt
235: .getVertexCount(), rt.getVertexFormat(), texSetCount,
236: texMap, vertexAttrCount, vertexAttrSizes, rt
237: .getIndexCount(), stripIndexCounts);
238: t.duplicateNodeComponent(this);
239: return t;
240: }
241: }
|