001: /*
002: * $RCSfile: Leafer.java,v $
003: *
004: * @(#)Leafer.java 1.12 98/11/05 20:34:37
005: *
006: * Copyright (c) 1996-1998 Sun Microsystems, Inc. All Rights Reserved.
007: *
008: * Sun grants you ("Licensee") a non-exclusive, royalty free, license to use,
009: * modify and redistribute this software in source and binary code form,
010: * provided that i) this copyright notice and license appear on all copies of
011: * the software; and ii) Licensee does not utilize the software in a manner
012: * which is disparaging to Sun.
013: *
014: * This software is provided "AS IS," without a warranty of any kind. ALL
015: * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY
016: * IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
017: * NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE
018: * LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
019: * OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS
020: * LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,
021: * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
022: * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF
023: * OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
024: * POSSIBILITY OF SUCH DAMAGES.
025: *
026: * This software is not designed or intended for use in on-line control of
027: * aircraft, air traffic, aircraft navigation or aircraft communications; or in
028: * the design, construction, operation or maintenance of any nuclear
029: * facility. Licensee represents and warrants that it will not use or
030: * redistribute the Software for such purposes.
031: *
032: * $Revision: 1.2 $
033: * $Date: 2005/02/03 23:06:57 $
034: * $State: Exp $
035: */
036: /*
037: * @Author: Rick Goldberg
038: * @Author: Doug Gehringer
039: */
040: package org.jdesktop.j3d.loaders.vrml97.impl;
041:
042: import java.util.Enumeration;
043:
044: import javax.media.j3d.*;
045: import javax.vecmath.Color3f;
046:
047: /** Description of the Class */
048: public class Leafer {
049:
050: final static int LIGHTS = 0;
051: final static int BOUNDINGLEAF = 1;
052: final static int VIEWPLAT = 2;
053: final static int SHAPE = 3;
054: final static int UNLINKABLE = 9;
055:
056: /**
057: * Description of the Method
058: *
059: *@param l Description of the Parameter
060: *@param leafType Description of the Parameter
061: */
062: public static void clean(Locale l, int leafType) {
063:
064: try {
065: Enumeration e = l.getAllBranchGraphs();
066: while (e.hasMoreElements()) {
067: Object o = e.nextElement();
068: if (o instanceof Locale) {
069: clean((Locale) o, leafType);
070: } else if (o instanceof SceneGraphObject) {
071: clean((SceneGraphObject) o, leafType);
072: } else {
073: System.out.println(o + " unknown and in tree");
074: }
075: }
076: } catch (CapabilityNotSetException e) {
077: //System.out.println("No capability to read children");
078: }
079: }
080:
081: /**
082: * Description of the Method
083: *
084: *@param sgo Description of the Parameter
085: *@param leafType Description of the Parameter
086: */
087: public static void clean(javax.media.j3d.SceneGraphObject sgo,
088: int leafType) {
089:
090: if (sgo instanceof javax.media.j3d.Group) {
091: try {
092: Enumeration e = ((javax.media.j3d.Group) sgo)
093: .getAllChildren();
094: while (e.hasMoreElements()) {
095: clean((SceneGraphObject) (e.nextElement()),
096: leafType);
097: }
098: } catch (CapabilityNotSetException e) {
099: //System.out.println(sgo+ "can't read children!");
100: }
101: } else {
102: switch (leafType) {
103: case LIGHTS:
104: if (sgo instanceof javax.media.j3d.Light) {
105: ((javax.media.j3d.Light) sgo).setEnable(false);
106: //System.out.println(sgo+"light disabled");
107: }
108: break;
109: default:
110: break;
111: }
112: }
113: }
114:
115: /**
116: * Description of the Method
117: *
118: *@param l Description of the Parameter
119: *@param leafType Description of the Parameter
120: *@return Description of the Return Value
121: */
122: public static boolean has(Locale l, int leafType) {
123:
124: try {
125: Enumeration e = l.getAllBranchGraphs();
126: while (e.hasMoreElements()) {
127: Object o = e.nextElement();
128: if (o instanceof Locale) {
129: return has((Locale) o, leafType);
130: } else if (o instanceof SceneGraphObject) {
131: return has((SceneGraphObject) o, leafType);
132: } else {
133: System.out.println(o + " unknown and in tree");
134: }
135: }
136: } catch (CapabilityNotSetException e) {
137: //System.out.println("No capability to read children");
138: }
139: return false;
140: }
141:
142: /**
143: * Description of the Method
144: *
145: *@param sgo Description of the Parameter
146: *@param leafType Description of the Parameter
147: *@return Description of the Return Value
148: */
149: public static boolean has(javax.media.j3d.SceneGraphObject sgo,
150: int leafType) {
151:
152: if (sgo instanceof javax.media.j3d.Group) {
153: try {
154: Enumeration e = ((javax.media.j3d.Group) sgo)
155: .getAllChildren();
156: boolean hasIt = false;
157: while (e.hasMoreElements()) {
158: hasIt |= has((SceneGraphObject) (e.nextElement()),
159: leafType);
160: }
161: return hasIt;
162: } catch (CapabilityNotSetException e) {
163: //System.out.println(sgo+" Can't read children (cap not set)");
164: ((javax.media.j3d.Group) sgo)
165: .setCapability(javax.media.j3d.Group.ALLOW_CHILDREN_READ);
166: return has(sgo, leafType);
167: }
168: } else {
169: switch (leafType) {
170: case LIGHTS:
171: if (sgo instanceof javax.media.j3d.Light) {
172: Color3f c = new Color3f();
173: ((javax.media.j3d.Light) sgo).getColor(c);
174: System.out.println(c);
175: System.out.println(sgo + " found");
176: return true;
177: }
178: break;
179: case BOUNDINGLEAF:
180: if (sgo instanceof javax.media.j3d.BoundingLeaf) {
181: return true;
182: }
183: break;
184: case VIEWPLAT:
185: if (sgo instanceof javax.media.j3d.ViewPlatform) {
186: return true;
187: }
188: break;
189: case SHAPE:
190: if (sgo instanceof javax.media.j3d.Shape3D) {
191: return true;
192: }
193: break;
194: case UNLINKABLE:
195: return ((sgo instanceof javax.media.j3d.Background)
196: | (sgo instanceof javax.media.j3d.Behavior)
197: | (sgo instanceof javax.media.j3d.Clip)
198: | (sgo instanceof javax.media.j3d.Fog)
199: | (sgo instanceof javax.media.j3d.Soundscape) | (sgo instanceof javax.media.j3d.ViewPlatform));
200: default:
201: break;
202: }
203: return false;
204: }
205: }
206:
207: }
|