home *** CD-ROM | disk | FTP | other *** search
/ Late Night VRML 2.0 with Java CD-ROM / code.zip / Ch12 / geometry / MovieTexture.java < prev    next >
Text File  |  1997-01-04  |  4KB  |  206 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.PrintStream;
  11. import vrml.external.*;
  12. import vrml.external.field.*;
  13. import vrml.external.exception.*;
  14. import geometry.Texture;
  15.  
  16. public class MovieTexture extends Texture
  17. {
  18.     EventInMFString _set_url;
  19.     EventInSFBool    _set_loop;
  20.     EventInSFFloat    _set_speed;
  21.     EventInSFTime    _set_starttime;
  22.     EventInSFTime    _set_stoptime;
  23.  
  24.     String[]    url;
  25.     boolean    loop = false;
  26.     float    speed = 1;
  27.     double    startTime = 0;
  28.     double    stopTime = 0;
  29.  
  30.  
  31.     // Null constructor since you cannot create just a straight texture
  32.     public MovieTexture()
  33.     {
  34.         Browser b = Browser.getBrowser();
  35.  
  36.         if(b == null)
  37.             return;
  38.  
  39.         node = b.createVrmlFromString("MovieTexture {}")[0];
  40.  
  41.         _set_url = (EventInMFString)node.getEventIn("url");
  42.         _set_loop = (EventInSFBool)node.getEventIn("loop");
  43.         _set_speed = (EventInSFFloat)node.getEventIn("speed");
  44.         _set_starttime = (EventInSFTime)node.getEventIn("startTime");
  45.         _set_stoptime = (EventInSFTime)node.getEventIn("stopTime");
  46.  
  47.         have_browser = true;
  48.     }
  49.  
  50.     public MovieTexture(Browser b)
  51.     {
  52.         if(b == null)
  53.             return;
  54.  
  55.         node = b.createVrmlFromString("MovieTexture {}")[0];
  56.  
  57.         _set_url = (EventInMFString)node.getEventIn("url");
  58.         _set_loop = (EventInSFBool)node.getEventIn("loop");
  59.         _set_speed = (EventInSFFloat)node.getEventIn("speed");
  60.         _set_starttime = (EventInSFTime)node.getEventIn("startTime");
  61.         _set_stoptime = (EventInSFTime)node.getEventIn("stopTime");
  62.  
  63.         have_browser = true;
  64.     }
  65.  
  66.     public MovieTexture(boolean rptS, boolean rptT)
  67.     {
  68.         String  tmp = "MovieTexture { ";
  69.  
  70.         repeatS = rptS;
  71.         repeatT = rptT;
  72.  
  73.         if(!repeatS)
  74.             tmp += "repeatS FALSE ";
  75.         if(!repeatT)
  76.             tmp += "repeatT FALSE ";
  77.  
  78.         tmp += "}";
  79.  
  80.         Browser b = Browser.getBrowser();
  81.  
  82.         if(b == null)
  83.             return;
  84.  
  85.         node = b.createVrmlFromString(tmp)[0];
  86.  
  87.         _set_url = (EventInMFString)node.getEventIn("url");
  88.         _set_loop = (EventInSFBool)node.getEventIn("loop");
  89.         _set_speed = (EventInSFFloat)node.getEventIn("speed");
  90.         _set_starttime = (EventInSFTime)node.getEventIn("startTime");
  91.         _set_stoptime = (EventInSFTime)node.getEventIn("stopTime");
  92.  
  93.         have_browser = true;
  94.     }
  95.  
  96.     public MovieTexture(Browser b, boolean rptS, boolean rptT)
  97.     {
  98.         String  tmp = "MovieTexture { ";
  99.  
  100.         repeatS = rptS;
  101.         repeatT = rptT;
  102.  
  103.         if(!repeatS)
  104.             tmp += "repeatS FALSE ";
  105.         if(!repeatT)
  106.             tmp += "repeatT FALSE ";
  107.  
  108.         tmp += "}";
  109.  
  110.         if(b == null)
  111.             return;
  112.  
  113.         node = b.createVrmlFromString(tmp)[0];
  114.  
  115.         _set_url = (EventInMFString)node.getEventIn("url");
  116.         _set_loop = (EventInSFBool)node.getEventIn("loop");
  117.         _set_speed = (EventInSFFloat)node.getEventIn("speed");
  118.         _set_starttime = (EventInSFTime)node.getEventIn("startTime");
  119.         _set_stoptime = (EventInSFTime)node.getEventIn("stopTime");
  120.  
  121.         have_browser = true;
  122.     }
  123.  
  124.     public void writeToFile(PrintStream fp, int indent)
  125.     {
  126.         int     i;
  127.         StringBuffer buffer = new StringBuffer();
  128.  
  129.         for(i = 0; i < indent; i++)
  130.             buffer.append("  ");
  131.  
  132.         fp.print(buffer.toString() + "texture ");
  133.         if(name != null)
  134.             fp.print("DEF " + name + " ");
  135.  
  136.         fp.println("MovieTexture {");
  137.  
  138.         if(!repeatS)
  139.             fp.println(buffer.toString() + " repeatS FALSE");
  140.         if(!repeatT)
  141.             fp.println(buffer.toString() + " repeatT FALSE");
  142.  
  143.         if(url.length > 0)
  144.         {
  145.             fp.println(buffer.toString() + " url [");
  146.  
  147.             for(i = 0; i < url.length; i++)
  148.             {
  149.                 fp.println(buffer.toString() + "  \"" +
  150.                        url[i] + "\"");
  151.             }
  152.             fp.println(buffer.toString() + " ]");
  153.         }
  154.  
  155.         if(loop)
  156.             fp.println(buffer.toString() + " loop TRUE");
  157.         if(speed != 1)
  158.             fp.println(buffer.toString() + " speed " + speed);
  159.         if(startTime != 0)
  160.             fp.println(buffer.toString() + " startTime " + startTime);
  161.         if(stopTime != 0)
  162.             fp.println(buffer.toString() + " stopTime " + stopTime);
  163.  
  164.     }
  165.  
  166.     public void set_URL(String[] new_url)
  167.     {
  168.         url = new_url;
  169.  
  170.         if(have_browser)
  171.             _set_url.setValue(url);
  172.     }
  173.  
  174.     public void set_loop(boolean val)
  175.     {
  176.         loop = val;
  177.  
  178.         if(have_browser)
  179.             _set_loop.setValue(val);
  180.     }
  181.  
  182.     public void set_speed(float val)
  183.     {
  184.         speed = val;
  185.  
  186.         if(have_browser)
  187.             _set_speed.setValue(val);
  188.     }
  189.  
  190.     public void set_startTime(double val)
  191.     {
  192.         startTime = val;
  193.  
  194.         if(have_browser)
  195.             _set_starttime.setValue(val);
  196.     }
  197.  
  198.     public void set_stopTime(double val)
  199.     {
  200.         stopTime = val;
  201.  
  202.         if(have_browser)
  203.             _set_stoptime.setValue(val);
  204.     }
  205. }
  206.