home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Late Night VRML 2.0 with Java CD-ROM
/
code.zip
/
Ch12
/
geometry
/
Appearance.java
< prev
next >
Wrap
Text File
|
1997-01-04
|
3KB
|
132 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;
import geometry.Material;
import geometry.Texture;
import geometry.TextureTransform;
public class Appearance extends VrmlObject
{
private EventInSFNode _set_material;
private EventInSFNode _set_texture;
private EventInSFNode _set_textureTransform;
private Material material;
private Texture texture;
private TextureTransform textureTransform;
// constructor builds a copy of itself and is added to the scene
// graph.
public Appearance()
{
Browser b = Browser.getBrowser();
if(b != null)
{
node = b.createVrmlFromString("Appearance {}")[0];
_set_material = (EventInSFNode)node.getEventIn("material");
_set_texture = (EventInSFNode)node.getEventIn("texture");
_set_textureTransform =
(EventInSFNode)node.getEventIn("textureTransform");
have_browser = true;
}
}
public Appearance(Browser b)
{
if(b != null)
{
node = b.createVrmlFromString("Appearance {}")[0];
_set_material = (EventInSFNode)node.getEventIn("material");
_set_texture = (EventInSFNode)node.getEventIn("texture");
_set_textureTransform =
(EventInSFNode)node.getEventIn("textureTransform");
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() + "appearance ");
if(name != null)
fp.print("DEF " + name + " ");
fp.println("Appearance {");
// print the contents of the shape node
if(material != null)
material.writeToFile(fp, indent + 1);
if(texture != null)
texture.writeToFile(fp, indent + 1);
if(textureTransform != null)
textureTransform.writeToFile(fp, indent + 1);
fp.println(buffer.toString() + "}");
}
public void set_material(Material mat)
{
material = mat;
if(have_browser)
_set_material.setValue(mat.node);
}
public void set_texture(Texture tex)
{
texture = tex;
if(have_browser)
_set_texture.setValue(tex.node);
}
public void set_textureTransform(TextureTransform tex)
{
textureTransform = tex;
if(have_browser)
_set_textureTransform.setValue(tex.node);
}
public boolean hasMaterial()
{
if(material != null)
return true;
else
return false;
}
public boolean hasTexture()
{
if(texture != null)
return true;
else
return false;
}
public boolean hasTextureTransform()
{
if(textureTransform != null)
return true;
else
return false;
}
}