home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Late Night VRML 2.0 with Java CD-ROM
/
code.zip
/
Ch12
/
geometry
/
Shape.java
< prev
next >
Wrap
Text File
|
1997-01-05
|
2KB
|
100 lines
// VRML Generator
// Copyright Justin Couch 1996
//
// Chapter 13: Late Night VRML 2.0 and Java
//
// Shape class
package geometry;
import java.io.*;
import java.awt.*;
import vrml.external.*;
import vrml.external.field.*;
import vrml.external.exception.*;
import geometry.VrmlObject;
public class Shape extends VrmlObject
{
private EventInSFNode _set_appearance;
private EventInSFNode _set_geometry;
private Appearance appearance = null;
private Geometry geometry = null;
// constructor builds a copy of itself and is added to the scene
// graph.
public Shape()
{
Browser b = Browser.getBrowser();
if(b == null)
return;
node = b.createVrmlFromString("Shape {}")[0];
_set_appearance = (EventInSFNode)node.getEventIn("appearance");
_set_geometry = (EventInSFNode)node.getEventIn("geometry");
have_browser = true;
}
public Shape(Browser b)
{
if(b == null)
return;
node = b.createVrmlFromString("Shape {}")[0];
_set_appearance = (EventInSFNode)node.getEventIn("set_appearance");
_set_geometry = (EventInSFNode)node.getEventIn("set_geometry");
have_browser = true;
}
public void writeToFile(PrintStream fp, int indent)
{
int i;
StringBuffer buffer = new StringBuffer();
for(i = 0; i < indent; i++)
buffer.append(" ");
fp.print(buffer.toString());
if(name != null)
fp.print("DEF " + name + " ");
fp.println("Shape {");
// print the contents of the shape node
if(geometry != null)
geometry.writeToFile(fp, indent + 1);
if(appearance != null)
appearance.writeToFile(fp, indent + 1);
fp.println(buffer.toString() + "}");
}
public void set_appearance(Appearance app)
{
appearance = app;
if(have_browser)
_set_appearance.setValue(app.node);
}
public void set_geometry(Geometry geom)
{
geometry = geom;
if(have_browser)
_set_geometry.setValue(geom.node);
}
public boolean hasGeometry()
{
return(geometry != null);
}
public boolean hasAppearance()
{
return(appearance != null);
}
}