001: /*
002: * $RCSfile: TriangleFanArray.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 TriangleFanArray object draws an array of vertices as a set of
036: * connected triangle fans. An array of per-strip
037: * vertex counts specifies where the separate strips (fans) appear
038: * in the vertex array. 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,
041: * the previous vertex and the first vertex. This can be thought of
042: * as a collection of convex polygons.
043: */
044:
045: public class TriangleFanArray extends GeometryStripArray {
046:
047: // non-public, no parameter constructor
048: TriangleFanArray() {
049: }
050:
051: /**
052: * Constructs an empty TriangleFanArray 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 3
068: * or any element in the stripVertexCounts array is less than 3
069: * ;<br>
070: * See {@link GeometryStripArray#GeometryStripArray(int,int,int[])}
071: * for more exceptions that can be thrown
072: */
073: public TriangleFanArray(int vertexCount, int vertexFormat,
074: int stripVertexCounts[]) {
075:
076: super (vertexCount, vertexFormat, stripVertexCounts);
077:
078: if (vertexCount < 3)
079: throw new IllegalArgumentException(J3dI18N
080: .getString("TriangleFanArray0"));
081: }
082:
083: /**
084: * Constructs an empty TriangleFanArray 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 3
108: * or any element in the stripVertexCounts array is less than 3
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 TriangleFanArray(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 < 3)
123: throw new IllegalArgumentException(J3dI18N
124: .getString("TriangleFanArray0"));
125: }
126:
127: /**
128: * Constructs an empty TriangleFanArray 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 3
156: * or any element in the stripVertexCounts array is less than 3
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 TriangleFanArray(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 < 3)
173: throw new IllegalArgumentException(J3dI18N
174: .getString("TriangleFanArray0"));
175: }
176:
177: /**
178: * Creates the retained mode TriangleFanArrayRetained object that this
179: * TriangleFanArray object will point to.
180: */
181: void createRetained() {
182: this .retained = new TriangleFanArrayRetained();
183: this .retained.setSource(this );
184: }
185:
186: /**
187: * @deprecated replaced with cloneNodeComponent(boolean forceDuplicate)
188: */
189: public NodeComponent cloneNodeComponent() {
190: TriangleFanArrayRetained rt = (TriangleFanArrayRetained) 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: TriangleFanArray t = new TriangleFanArray(rt.getVertexCount(),
206: rt.getVertexFormat(), texSetCount, texMap,
207: vertexAttrCount, vertexAttrSizes, stripcounts);
208: t.duplicateNodeComponent(this);
209: return t;
210: }
211:
212: }
|