home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Late Night VRML 2.0 with Java CD-ROM
/
code.zip
/
Ch12
/
geometry
/
TextureTransform.java
< prev
next >
Wrap
Text File
|
1997-01-02
|
4KB
|
172 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.TextureTransform;
public class TextureTransform extends VrmlObject
{
EventInSFVec2f _set_middle;
EventInSFVec2f _set_scale;
EventInSFVec2f _set_trans;
EventInSFFloat _set_rotate;
float[] center;
float[] scale;
float[] translation;
float rotation = 0;
boolean center_changed = false;
boolean scale_changed = false;
boolean translation_changed = false;
// constructor builds a copy of itself and is added to the scene
// graph.
public TextureTransform()
{
center = new float[2];
center[0] = 0;
center[1] = 0;
scale = new float[2];
scale[0] = 1;
scale[1] = 1;
translation = new float[2];
translation[0] = 0;
translation[1] = 0;
Browser b = Browser.getBrowser();
if(b == null)
return;
node = b.createVrmlFromString("TextureTransform {}")[0];
_set_middle = (EventInSFVec2f)node.getEventIn("center");
_set_scale = (EventInSFVec2f)node.getEventIn("scale");
_set_trans = (EventInSFVec2f)node.getEventIn("translation");
_set_rotate = (EventInSFFloat)node.getEventIn("rotation");
have_browser = true;
}
public TextureTransform(Browser b)
{
center = new float[2];
center[0] = 0;
center[1] = 0;
scale = new float[2];
scale[0] = 1;
scale[1] = 1;
translation = new float[2];
translation[0] = 0;
translation[1] = 0;
if(b == null)
return;
node = b.createVrmlFromString("TextureTransform {}")[0];
_set_middle = (EventInSFVec2f)node.getEventIn("center");
_set_scale = (EventInSFVec2f)node.getEventIn("scale");
_set_trans = (EventInSFVec2f)node.getEventIn("translation");
_set_rotate = (EventInSFFloat)node.getEventIn("rotation");
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() + "textureTransform ");
if(name != null)
fp.print("DEF " + name + " ");
fp.println("TextureTransform {");
// print the contents of the shape node
if(center_changed)
fp.println(buffer.toString() + " center " +
center[0] + " " +
center[1]);
if(scale_changed)
fp.println(buffer.toString() + " scale " +
scale[0] + " " +
scale[1]);
if(translation_changed)
fp.println(buffer.toString() + " translation " +
translation[0] + " " +
translation[1]);
if(rotation != 0)
fp.println(buffer.toString() + " rotation " + rotation);
fp.println(buffer.toString() + "}");
}
public void set_center(float x, float y)
{
center[0] = x;
center[1] = y;
if(have_browser);
_set_middle.setValue(center);
if((x == 0) && (y == 0))
center_changed = false;
else
center_changed = true;
}
public void set_scale(float x, float y)
{
scale[0] = x;
scale[1] = y;
if(have_browser);
_set_scale.setValue(scale);
if((x == 0) && (y == 0))
scale_changed = false;
else
scale_changed = true;
}
public void set_translation(float x, float y)
{
translation[0] = x;
translation[1] = y;
if(have_browser);
_set_trans.setValue(scale);
if((x == 0) && (y == 0))
translation_changed = false;
else
translation_changed = true;
}
public void set_rotation(float val)
{
rotation = val;
if(have_browser);
_set_rotate.setValue(rotation);
}
}