001: /*
002: * $RCSfile: TriangleArray.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 TriangleArray object draws the array of vertices as individual
036: * triangles. Each group
037: * of three vertices defines a triangle to be drawn.
038: */
039:
040: public class TriangleArray extends GeometryArray {
041:
042: // non-public, no parameter constructor
043: TriangleArray() {
044: }
045:
046: /**
047: * Constructs an empty TriangleArray object using the specified
048: * parameters.
049: *
050: * @param vertexCount
051: * see {@link GeometryArray#GeometryArray(int,int)}
052: * for a description of this parameter.
053: *
054: * @param vertexFormat
055: * see {@link GeometryArray#GeometryArray(int,int)}
056: * for a description of this parameter.
057: *
058: * @exception IllegalArgumentException if vertexCount is less than 3
059: * or vertexCount is <i>not</i> a multiple of 3
060: * ;<br>
061: * See {@link GeometryArray#GeometryArray(int,int)}
062: * for more exceptions that can be thrown
063: */
064: public TriangleArray(int vertexCount, int vertexFormat) {
065: super (vertexCount, vertexFormat);
066:
067: if (vertexCount < 3 || ((vertexCount % 3) != 0))
068: throw new IllegalArgumentException(J3dI18N
069: .getString("TriangleArray0"));
070: }
071:
072: /**
073: * Constructs an empty TriangleArray object using the specified
074: * parameters.
075: *
076: * @param vertexCount
077: * see {@link GeometryArray#GeometryArray(int,int,int,int[])}
078: * for a description of this parameter.
079: *
080: * @param vertexFormat
081: * see {@link GeometryArray#GeometryArray(int,int,int,int[])}
082: * for a description of this parameter.
083: *
084: * @param texCoordSetCount
085: * see {@link GeometryArray#GeometryArray(int,int,int,int[])}
086: * for a description of this parameter.
087: *
088: * @param texCoordSetMap
089: * see {@link GeometryArray#GeometryArray(int,int,int,int[])}
090: * for a description of this parameter.
091: *
092: * @exception IllegalArgumentException if vertexCount is less than 3
093: * or vertexCount is <i>not</i> a multiple of 3
094: * ;<br>
095: * See {@link GeometryArray#GeometryArray(int,int,int,int[])}
096: * for more exceptions that can be thrown
097: *
098: * @since Java 3D 1.2
099: */
100: public TriangleArray(int vertexCount, int vertexFormat,
101: int texCoordSetCount, int[] texCoordSetMap) {
102:
103: super (vertexCount, vertexFormat, texCoordSetCount,
104: texCoordSetMap);
105:
106: if (vertexCount < 3 || ((vertexCount % 3) != 0))
107: throw new IllegalArgumentException(J3dI18N
108: .getString("TriangleArray0"));
109: }
110:
111: /**
112: * Constructs an empty TriangleArray object using the specified
113: * parameters.
114: *
115: * @param vertexCount
116: * see {@link GeometryArray#GeometryArray(int,int,int,int[],int,int[])}
117: * for a description of this parameter.
118: *
119: * @param vertexFormat
120: * see {@link GeometryArray#GeometryArray(int,int,int,int[],int,int[])}
121: * for a description of this parameter.
122: *
123: * @param texCoordSetMap
124: * see {@link GeometryArray#GeometryArray(int,int,int,int[],int,int[])}
125: * for a description of this parameter.
126: *
127: * @param vertexAttrCount
128: * see {@link GeometryArray#GeometryArray(int,int,int,int[],int,int[])}
129: * for a description of this parameter.
130: *
131: * @param vertexAttrSizes
132: * see {@link GeometryArray#GeometryArray(int,int,int,int[],int,int[])}
133: * for a description of this parameter.
134: *
135: * @exception IllegalArgumentException if vertexCount is less than 3
136: * or vertexCount is <i>not</i> a multiple of 3
137: * ;<br>
138: * See {@link GeometryArray#GeometryArray(int,int,int,int[],int,int[])}
139: * for more exceptions that can be thrown
140: *
141: * @since Java 3D 1.4
142: */
143: public TriangleArray(int vertexCount, int vertexFormat,
144: int texCoordSetCount, int[] texCoordSetMap,
145: int vertexAttrCount, int[] vertexAttrSizes) {
146:
147: super (vertexCount, vertexFormat, texCoordSetCount,
148: texCoordSetMap, vertexAttrCount, vertexAttrSizes);
149:
150: if (vertexCount < 3 || ((vertexCount % 3) != 0))
151: throw new IllegalArgumentException(J3dI18N
152: .getString("TriangleArray0"));
153: }
154:
155: /**
156: * Creates the retained mode TriangleArrayRetained object that this
157: * TriangleArray object will point to.
158: */
159: void createRetained() {
160: this .retained = new TriangleArrayRetained();
161: this .retained.setSource(this );
162: }
163:
164: /**
165: * @deprecated replaced with cloneNodeComponent(boolean forceDuplicate)
166: */
167: public NodeComponent cloneNodeComponent() {
168: TriangleArrayRetained rt = (TriangleArrayRetained) retained;
169: int texSetCount = rt.getTexCoordSetCount();
170: int[] texMap = null;
171: int vertexAttrCount = rt.getVertexAttrCount();
172: int[] vertexAttrSizes = null;
173: if (texSetCount > 0) {
174: texMap = new int[rt.getTexCoordSetMapLength()];
175: rt.getTexCoordSetMap(texMap);
176: }
177: if (vertexAttrCount > 0) {
178: vertexAttrSizes = new int[vertexAttrCount];
179: rt.getVertexAttrSizes(vertexAttrSizes);
180: }
181: TriangleArray t = new TriangleArray(rt.getVertexCount(), rt
182: .getVertexFormat(), texSetCount, texMap,
183: vertexAttrCount, vertexAttrSizes);
184: t.duplicateNodeComponent(this);
185: return t;
186: }
187: }
|