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