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