001: /*
002: * $RCSfile: LineStripArray.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 LineStripArray object draws an array of vertices as a set of
036: * connected line 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, 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 LineStripArray extends GeometryStripArray {
044:
045: /**
046: * Package scoped default constructor used by cloneNodeComponent.
047: */
048: LineStripArray() {
049: }
050:
051: /**
052: * Constructs an empty LineStripArray 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 stripVertexCounts
064: * see {@link GeometryStripArray#GeometryStripArray(int,int,int[])}
065: * for a description of this parameter.
066: *
067: * @exception IllegalArgumentException if vertexCount is less than 2
068: * or any element in the stripVertexCounts array is less than 2
069: * ;<br>
070: * See {@link GeometryStripArray#GeometryStripArray(int,int,int[])}
071: * for more exceptions that can be thrown
072: */
073: public LineStripArray(int vertexCount, int vertexFormat,
074: int stripVertexCounts[]) {
075:
076: super (vertexCount, vertexFormat, stripVertexCounts);
077:
078: if (vertexCount < 2)
079: throw new IllegalArgumentException(J3dI18N
080: .getString("LineStripArray0"));
081: }
082:
083: /**
084: * Constructs an empty LineStripArray object using the
085: * specified parameters.
086: *
087: * @param vertexCount
088: * see {@link GeometryArray#GeometryArray(int,int,int,int[])}
089: * for a description of this parameter.
090: *
091: * @param vertexFormat
092: * see {@link GeometryArray#GeometryArray(int,int,int,int[])}
093: * for a description of this parameter.
094: *
095: * @param texCoordSetCount
096: * see {@link GeometryArray#GeometryArray(int,int,int,int[])}
097: * for a description of this parameter.
098: *
099: * @param texCoordSetMap
100: * see {@link GeometryArray#GeometryArray(int,int,int,int[])}
101: * for a description of this parameter.
102: *
103: * @param stripVertexCounts
104: * see {@link GeometryStripArray#GeometryStripArray(int,int,int,int[],int[])}
105: * for a description of this parameter.
106: *
107: * @exception IllegalArgumentException if vertexCount is less than 2
108: * or any element in the stripVertexCounts array is less than 2
109: * ;<br>
110: * See {@link GeometryStripArray#GeometryStripArray(int,int,int,int[],int[])}
111: * for more exceptions that can be thrown
112: *
113: * @since Java 3D 1.2
114: */
115: public LineStripArray(int vertexCount, int vertexFormat,
116: int texCoordSetCount, int[] texCoordSetMap,
117: int stripVertexCounts[]) {
118:
119: super (vertexCount, vertexFormat, texCoordSetCount,
120: texCoordSetMap, stripVertexCounts);
121:
122: if (vertexCount < 2)
123: throw new IllegalArgumentException(J3dI18N
124: .getString("LineStripArray0"));
125: }
126:
127: /**
128: * Constructs an empty LineStripArray object using the
129: * specified parameters.
130: *
131: * @param vertexCount
132: * see {@link GeometryArray#GeometryArray(int,int,int,int[],int,int[])}
133: * for a description of this parameter.
134: *
135: * @param vertexFormat
136: * see {@link GeometryArray#GeometryArray(int,int,int,int[],int,int[])}
137: * for a description of this parameter.
138: *
139: * @param texCoordSetMap
140: * see {@link GeometryArray#GeometryArray(int,int,int,int[],int,int[])}
141: * for a description of this parameter.
142: *
143: * @param vertexAttrCount
144: * see {@link GeometryArray#GeometryArray(int,int,int,int[],int,int[])}
145: * for a description of this parameter.
146: *
147: * @param vertexAttrSizes
148: * see {@link GeometryArray#GeometryArray(int,int,int,int[],int,int[])}
149: * for a description of this parameter.
150: *
151: * @param stripVertexCounts
152: * see {@link GeometryStripArray#GeometryStripArray(int,int,int,int[],int,int[],int[])}
153: * for a description of this parameter.
154: *
155: * @exception IllegalArgumentException if vertexCount is less than 2
156: * or any element in the stripVertexCounts array is less than 2
157: * ;<br>
158: * See {@link GeometryStripArray#GeometryStripArray(int,int,int,int[],int,int[],int[])}
159: * for more exceptions that can be thrown
160: *
161: * @since Java 3D 1.4
162: */
163: public LineStripArray(int vertexCount, int vertexFormat,
164: int texCoordSetCount, int[] texCoordSetMap,
165: int vertexAttrCount, int[] vertexAttrSizes,
166: int[] stripVertexCounts) {
167:
168: super (vertexCount, vertexFormat, texCoordSetCount,
169: texCoordSetMap, vertexAttrCount, vertexAttrSizes,
170: stripVertexCounts);
171:
172: if (vertexCount < 2)
173: throw new IllegalArgumentException(J3dI18N
174: .getString("LineStripArray0"));
175: }
176:
177: /**
178: * Creates the retained mode LineStripArrayRetained object that this
179: * LineStripArray object will point to.
180: */
181: void createRetained() {
182: this .retained = new LineStripArrayRetained();
183: this .retained.setSource(this );
184: }
185:
186: /**
187: * @deprecated replaced with cloneNodeComponent(boolean forceDuplicate)
188: */
189: public NodeComponent cloneNodeComponent() {
190: LineStripArrayRetained rt = (LineStripArrayRetained) retained;
191: int stripcounts[] = new int[rt.getNumStrips()];
192: rt.getStripVertexCounts(stripcounts);
193: int texSetCount = rt.getTexCoordSetCount();
194: int[] texMap = null;
195: int vertexAttrCount = rt.getVertexAttrCount();
196: int[] vertexAttrSizes = null;
197: if (texSetCount > 0) {
198: texMap = new int[rt.getTexCoordSetMapLength()];
199: rt.getTexCoordSetMap(texMap);
200: }
201: if (vertexAttrCount > 0) {
202: vertexAttrSizes = new int[vertexAttrCount];
203: rt.getVertexAttrSizes(vertexAttrSizes);
204: }
205: LineStripArray l = new LineStripArray(rt.getVertexCount(), rt
206: .getVertexFormat(), texSetCount, texMap,
207: vertexAttrCount, vertexAttrSizes, stripcounts);
208: l.duplicateNodeComponent(this);
209: return l;
210: }
211: }
|