home *** CD-ROM | disk | FTP | other *** search
/ Late Night VRML 2.0 with Java CD-ROM / code.zip / Ch12 / geometry / Shape.java < prev    next >
Text File  |  1997-01-05  |  2KB  |  100 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.  
  17. public class Shape extends VrmlObject
  18. {
  19.     private EventInSFNode _set_appearance;
  20.     private EventInSFNode _set_geometry;
  21.     private Appearance appearance = null;
  22.     private Geometry geometry = null;
  23.  
  24.     // constructor builds a copy of itself and is added to the scene
  25.     // graph.
  26.     public Shape()
  27.     {
  28.         Browser b = Browser.getBrowser();
  29.  
  30.         if(b == null)
  31.             return;
  32.  
  33.         node = b.createVrmlFromString("Shape {}")[0];
  34.         _set_appearance = (EventInSFNode)node.getEventIn("appearance");
  35.         _set_geometry = (EventInSFNode)node.getEventIn("geometry");
  36.  
  37.         have_browser = true;
  38.     }
  39.  
  40.     public Shape(Browser b)
  41.     {
  42.         if(b == null)
  43.             return;
  44.  
  45.         node = b.createVrmlFromString("Shape {}")[0];
  46.  
  47.         _set_appearance = (EventInSFNode)node.getEventIn("set_appearance");
  48.         _set_geometry = (EventInSFNode)node.getEventIn("set_geometry");
  49.  
  50.         have_browser = true;
  51.     }
  52.  
  53.     public void writeToFile(PrintStream fp, int indent)
  54.     {
  55.         int    i;
  56.         StringBuffer buffer = new StringBuffer();
  57.  
  58.         for(i = 0; i < indent; i++)
  59.             buffer.append("  ");
  60.  
  61.         fp.print(buffer.toString());
  62.         if(name != null)
  63.             fp.print("DEF " + name + " ");
  64.  
  65.         fp.println("Shape {");
  66.  
  67.         // print the contents of the shape node
  68.         if(geometry != null)
  69.             geometry.writeToFile(fp, indent + 1);
  70.         if(appearance != null)
  71.             appearance.writeToFile(fp, indent + 1);
  72.  
  73.         fp.println(buffer.toString() + "}");
  74.     }
  75.  
  76.     public void set_appearance(Appearance app)
  77.     {
  78.         appearance = app;
  79.         if(have_browser)
  80.             _set_appearance.setValue(app.node);
  81.     }
  82.  
  83.     public void set_geometry(Geometry geom)
  84.     {
  85.         geometry = geom;
  86.         if(have_browser)
  87.             _set_geometry.setValue(geom.node);
  88.     }
  89.     public boolean hasGeometry()
  90.     {
  91.         return(geometry != null);
  92.     }
  93.  
  94.     public boolean hasAppearance()
  95.     {
  96.         return(appearance != null);
  97.     }
  98.  
  99. }
  100.