Update of /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/view
In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv987/src/net/sourceforge/bprocessor/gl/view
Modified Files:
View.java
Log Message:
Translations and Rotations in scripting
Index: View.java
===================================================================
RCS file: /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/view/View.java,v
retrieving revision 1.152
retrieving revision 1.153
diff -C2 -d -r1.152 -r1.153
*** View.java 20 Sep 2006 11:01:42 -0000 1.152
--- View.java 27 Sep 2006 08:36:38 -0000 1.153
***************
*** 16,20 ****
import net.sourceforge.bprocessor.model.CoordinateSystem;
import net.sourceforge.bprocessor.model.Defaults;
! import net.sourceforge.bprocessor.model.FullRotate;
import net.sourceforge.bprocessor.model.Geometric;
import net.sourceforge.bprocessor.model.Geometry;
--- 16,20 ----
import net.sourceforge.bprocessor.model.CoordinateSystem;
import net.sourceforge.bprocessor.model.Defaults;
! import net.sourceforge.bprocessor.model.AxisRotate;
import net.sourceforge.bprocessor.model.Geometric;
import net.sourceforge.bprocessor.model.Geometry;
***************
*** 29,32 ****
--- 29,33 ----
import net.sourceforge.bprocessor.model.Selection;
import net.sourceforge.bprocessor.model.Space;
+ import net.sourceforge.bprocessor.model.TransformStack;
import net.sourceforge.bprocessor.model.Translate;
import net.sourceforge.bprocessor.model.Vertex;
***************
*** 36,40 ****
import java.util.ArrayList;
- import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
--- 37,40 ----
***************
*** 992,995 ****
--- 992,1034 ----
}
+ /**
+ *
+ * @param space Space
+ */
+ private void transformTo(Space space) {
+ if (space.getOwner() != null) {
+ transformTo(space.getOwner());
+ }
+ transform(space.getTransformations());
+ }
+
+ /**
+ * Apply transformations
+ * @param transformations List of transformations
+ */
+ private void transform(TransformStack transformations) {
+ Iterator iter = transformations.stack().iterator();
+ while (iter.hasNext()) {
+ Transform current = (Transform) iter.next();
+ if (current instanceof Translate) {
+ Translate translate = (Translate) current;
+ gl.glTranslated(translate.tx(), translate.ty(), translate.tz());
+ }
+ if (current instanceof Scale) {
+ Scale scale = (Scale) current;
+ gl.glScaled(scale.sx(), scale.sy(), scale.sz());
+ }
+ if (current instanceof Rotate) {
+ Rotate rotate = (Rotate) current;
+ gl.glRotated(rotate.rx(), 1, 0, 0);
+ gl.glRotated(rotate.ry(), 0, 1, 0);
+ gl.glRotated(rotate.rz(), 0, 0, 1);
+ }
+ if (current instanceof AxisRotate) {
+ AxisRotate rotate = (AxisRotate) current;
+ gl.glRotated(rotate.angle(), rotate.rx(), rotate.ry(), rotate.rz());
+ }
+ }
+ }
/**
***************
*** 1000,1029 ****
private void drawSpace(Space space, GLDrawable gld) {
gl.glPushMatrix();
! {
! List transforms = new LinkedList(space.getTransformations());
! Collections.reverse(transforms);
! Iterator iter = transforms.iterator();
! while (iter.hasNext()) {
! Transform current = (Transform) iter.next();
! if (current instanceof Translate) {
! Translate translate = (Translate) current;
! gl.glTranslated(translate.tx(), translate.ty(), translate.tz());
! }
! if (current instanceof Scale) {
! Scale scale = (Scale) current;
! gl.glScaled(scale.sx(), scale.sy(), scale.sz());
! }
! if (current instanceof Rotate) {
! Rotate rotate = (Rotate) current;
! gl.glRotated(rotate.rx(), 1, 0, 0);
! gl.glRotated(rotate.ry(), 0, 1, 0);
! gl.glRotated(rotate.rz(), 0, 0, 1);
! }
! if (current instanceof FullRotate) {
! FullRotate rotate = (FullRotate) current;
! gl.glRotated(rotate.angle(), rotate.rx(), rotate.ry(), rotate.rz());
! }
! }
! }
Collection surfaces = space.getSurfaces();
switch (drawMode) {
--- 1039,1043 ----
private void drawSpace(Space space, GLDrawable gld) {
gl.glPushMatrix();
! transform(space.getTransformations());
Collection surfaces = space.getSurfaces();
switch (drawMode) {
***************
*** 1158,1161 ****
--- 1172,1177 ----
while (true) {
if (active != null) {
+ gl.glPushMatrix();
+ transformTo(active);
Collection cons = active.getConstructors();
Iterator iter = cons.iterator();
***************
*** 1170,1173 ****
--- 1186,1190 ----
}
}
+ gl.glPopMatrix();
} else {
break;
|