home *** CD-ROM | disk | FTP | other *** search
/ Late Night VRML 2.0 with Java CD-ROM / code.zip / Ch12 / geometry / Appearance.java < prev    next >
Text File  |  1997-01-04  |  3KB  |  132 lines

  1. // VRML Generator
  2. // Copyright Justin Couch 1996
  3. //
  4. // Chapter 13: Late Night VRML 2.0 and Java
  5. //
  6. // Shape class
  7.  
  8. package geometry;
  9.  
  10. import java.io.*;
  11. import java.awt.*;
  12. import vrml.external.*;
  13. import vrml.external.field.*;
  14. import vrml.external.exception.*;
  15. import geometry.VrmlObject;
  16. import geometry.Material;
  17. import geometry.Texture;
  18. import geometry.TextureTransform;
  19.  
  20. public class Appearance extends VrmlObject
  21. {
  22.     private EventInSFNode    _set_material;
  23.     private EventInSFNode    _set_texture;
  24.     private EventInSFNode    _set_textureTransform;
  25.  
  26.     private Material    material;
  27.     private Texture        texture;
  28.     private TextureTransform textureTransform;
  29.  
  30.     // constructor builds a copy of itself and is added to the scene
  31.     // graph.
  32.     public Appearance()
  33.     {
  34.         Browser b = Browser.getBrowser();
  35.  
  36.         if(b != null)
  37.         {
  38.             node = b.createVrmlFromString("Appearance {}")[0];
  39.             _set_material = (EventInSFNode)node.getEventIn("material");
  40.             _set_texture = (EventInSFNode)node.getEventIn("texture");
  41.             _set_textureTransform =
  42.                  (EventInSFNode)node.getEventIn("textureTransform");
  43.  
  44.             have_browser = true;
  45.         }
  46.     }
  47.  
  48.     public Appearance(Browser b)
  49.     {
  50.         if(b != null)
  51.         {
  52.             node = b.createVrmlFromString("Appearance {}")[0];
  53.             _set_material = (EventInSFNode)node.getEventIn("material");
  54.             _set_texture = (EventInSFNode)node.getEventIn("texture");
  55.             _set_textureTransform =
  56.                  (EventInSFNode)node.getEventIn("textureTransform");
  57.  
  58.             have_browser = true;
  59.         }
  60.     }
  61.  
  62.     public void writeToFile(PrintStream fp, int indent)
  63.     {
  64.         int    i;
  65.         StringBuffer buffer = new StringBuffer();
  66.  
  67.         for(i = 0; i < indent; i++)
  68.             buffer.append("  ");
  69.  
  70.         fp.print(buffer.toString() + "appearance ");
  71.         if(name != null)
  72.             fp.print("DEF " + name + " ");
  73.  
  74.         fp.println("Appearance {");
  75.  
  76.         // print the contents of the shape node
  77.         if(material != null)
  78.             material.writeToFile(fp, indent + 1);
  79.         if(texture != null)
  80.             texture.writeToFile(fp, indent + 1);
  81.         if(textureTransform != null)
  82.             textureTransform.writeToFile(fp, indent + 1);
  83.  
  84.         fp.println(buffer.toString() + "}");
  85.     }
  86.  
  87.     public void set_material(Material mat)
  88.     {
  89.         material = mat;
  90.         if(have_browser)
  91.             _set_material.setValue(mat.node);
  92.     }
  93.  
  94.     public void set_texture(Texture tex)
  95.     {
  96.         texture = tex;
  97.         if(have_browser)
  98.             _set_texture.setValue(tex.node);
  99.     }
  100.  
  101.     public void set_textureTransform(TextureTransform tex)
  102.     {
  103.         textureTransform = tex;
  104.         if(have_browser)
  105.             _set_textureTransform.setValue(tex.node);
  106.     }
  107.  
  108.     public boolean hasMaterial()
  109.     {
  110.         if(material != null)
  111.             return true;
  112.         else
  113.             return false;
  114.     }
  115.  
  116.     public boolean hasTexture()
  117.     {
  118.         if(texture != null)
  119.             return true;
  120.         else
  121.             return false;
  122.     }
  123.  
  124.     public boolean hasTextureTransform()
  125.     {
  126.         if(textureTransform != null)
  127.             return true;
  128.         else
  129.             return false;
  130.     }
  131. }
  132.