[Bprocessor-commit] gl/src/net/sourceforge/bprocessor/gl/view View.java, 1.288, 1.289 PopupMenu.jav
Status: Pre-Alpha
Brought to you by:
henryml
From: Michael L. <he...@us...> - 2009-06-19 14:53:38
|
Update of /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/view In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv4407/src/net/sourceforge/bprocessor/gl/view Modified Files: View.java PopupMenu.java Log Message: new space-select tool Index: PopupMenu.java =================================================================== RCS file: /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/view/PopupMenu.java,v retrieving revision 1.29 retrieving revision 1.30 diff -C2 -d -r1.29 -r1.30 *** PopupMenu.java 21 Apr 2009 10:21:18 -0000 1.29 --- PopupMenu.java 19 Jun 2009 13:32:29 -0000 1.30 *************** *** 836,839 **** --- 836,848 ---- } { + AbstractAction action = new AbstractAction("Mark...") { + public void actionPerformed(ActionEvent event) { + Command command = new Command.Mark(); + AttributeView.instance().display(command); + } + }; + menu.add(action); + } + { AbstractAction action = new AbstractAction("Bounding Sphere") { private Container circle(Vertex i, Vertex j, Vertex origin, double radius) { Index: View.java =================================================================== RCS file: /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/view/View.java,v retrieving revision 1.288 retrieving revision 1.289 diff -C2 -d -r1.288 -r1.289 *** View.java 25 May 2009 12:00:40 -0000 1.288 --- View.java 19 Jun 2009 13:32:29 -0000 1.289 *************** *** 9,12 **** --- 9,13 ---- import net.sourceforge.bprocessor.gl.Editor; import net.sourceforge.bprocessor.gl.tool.SelectTool; + import net.sourceforge.bprocessor.gl.tool.SpaceSelectTool; import net.sourceforge.bprocessor.gl.tool.SpaceTool; import net.sourceforge.bprocessor.gl.model.EdgeAttributes; *************** *** 29,32 **** --- 30,34 ---- import net.sourceforge.bprocessor.model.Selection; import net.sourceforge.bprocessor.model.Container; + import net.sourceforge.bprocessor.model.Space; import net.sourceforge.bprocessor.model.Vertex; import net.sourceforge.bprocessor.model.Surface; *************** *** 43,46 **** --- 45,51 ---- import java.awt.Toolkit; + import java.io.BufferedReader; + import java.io.IOException; + import java.io.StringReader; import java.nio.IntBuffer; *************** *** 750,753 **** --- 755,762 ---- drawSelectionWidget((Surface) candidate, hitdetection); } + } else if (candidate instanceof Space) { + if (editor.getTool() instanceof SpaceSelectTool) { + drawSpeechBubble((Space) candidate, hitdetection); + } } } *************** *** 1129,1133 **** Display.paint(mid, new float[]{0, 0, 0}, 5); ! if (clickable) { --- 1138,1142 ---- Display.paint(mid, new float[]{0, 0, 0}, 5); ! if (clickable) { *************** *** 1170,1177 **** drawString(backTextAnchor.getX(), backTextAnchor.getY(), ! backTextAnchor.getZ(), backName); } } /** * Put labels on a Surface --- 1179,1252 ---- drawString(backTextAnchor.getX(), backTextAnchor.getY(), ! backTextAnchor.getZ(), backName); } } + private void drawSpeechBubble(Space space, boolean clickable) { + Transformation transformation = transformation(); + double width = 240; + double height = 180; + double delta = 10; + + Vertex from = space.center(); + Vertex front = transformation.project(from); + Vertex a = front.add(new Vertex(delta, 2 * delta, 0)); + Vertex b = front.add(new Vertex(3 * delta, 2 * delta, 0)); + Vertex c = a.add(new Vertex(0, height, 0)); + Vertex d = c.add(new Vertex(width, 0, 0)); + Vertex e = a.add(new Vertex(width, 0, 0)); + + front.setZ(1); + gl.glColor4d(0.94f, 0.97f, 1, 0.9); + + gl.glBegin(GL.GL_POLYGON); + gl.glVertex3d(a.getX(), a.getY(), a.getZ()); + gl.glVertex3d(front.getX(), front.getY(), front.getZ()); + gl.glVertex3d(b.getX(), b.getY(), b.getZ()); + gl.glEnd(); + + gl.glBegin(GL.GL_POLYGON); + gl.glVertex3d(a.getX(), a.getY(), a.getZ()); + gl.glVertex3d(c.getX(), c.getY(), c.getZ()); + gl.glVertex3d(d.getX(), d.getY(), d.getZ()); + gl.glVertex3d(e.getX(), e.getY(), e.getZ()); + gl.glEnd(); + + gl.glColor3d(0.1, 0.1, 0.1); + gl.glLineWidth(0.5f); + gl.glBegin(GL.GL_LINES); + gl.glVertex3d(a.getX(), a.getY(), a.getZ()); + gl.glVertex3d(front.getX(), front.getY(), front.getZ()); + gl.glVertex3d(front.getX(), front.getY(), front.getZ()); + gl.glVertex3d(b.getX(), b.getY(), b.getZ()); + gl.glVertex3d(b.getX(), b.getY(), b.getZ()); + gl.glVertex3d(e.getX(), e.getY(), e.getZ()); + gl.glVertex3d(e.getX(), e.getY(), e.getZ()); + gl.glVertex3d(d.getX(), d.getY(), d.getZ()); + gl.glVertex3d(d.getX(), d.getY(), d.getZ()); + gl.glVertex3d(c.getX(), c.getY(), c.getZ()); + gl.glVertex3d(c.getX(), c.getY(), c.getZ()); + gl.glVertex3d(a.getX(), a.getY(), a.getZ()); + gl.glEnd(); + + String text = space.getDescription().toString(); + BufferedReader reader = new BufferedReader(new StringReader(text)); + String line; + try { + line = reader.readLine(); + double x = c.getX() + 5; + double y = c.getY() - 5 - 14; + double z = c.getZ(); + while (line != null) { + drawString(x, y, z, line); + line = reader.readLine(); + y -= 14; + } + } catch (IOException e1) { + // empty + } + + } + /** * Put labels on a Surface *************** *** 1209,1220 **** if (!facingFront(surface)) { frontTextAnchor = new Vertex(front.getX() - (frontWidth / 2), ! front.getY() - 17, front.getZ()); backTextAnchor = new Vertex(front.getX() - (backWidth / 2), ! front.getY() + 7, front.getZ()); } else { frontTextAnchor = new Vertex(front.getX() - (frontWidth / 2), ! front.getY() + 7, front.getZ()); backTextAnchor = new Vertex(front.getX() - (backWidth / 2), ! front.getY() - 17, front.getZ()); } --- 1284,1295 ---- if (!facingFront(surface)) { frontTextAnchor = new Vertex(front.getX() - (frontWidth / 2), ! front.getY() - 17, front.getZ()); backTextAnchor = new Vertex(front.getX() - (backWidth / 2), ! front.getY() + 7, front.getZ()); } else { frontTextAnchor = new Vertex(front.getX() - (frontWidth / 2), ! front.getY() + 7, front.getZ()); backTextAnchor = new Vertex(front.getX() - (backWidth / 2), ! front.getY() - 17, front.getZ()); } *************** *** 1222,1229 **** //Name must be "front" drawClickBox(frontTextAnchor.getX(), frontTextAnchor.getY(), ! frontTextAnchor.getZ(), frontWidth, 10, "front"); //Name must be "back" drawClickBox(backTextAnchor.getX(), backTextAnchor.getY(), ! backTextAnchor.getZ(), backWidth, 10, "back"); //Name must be "bar" pushName(gl, "bar"); --- 1297,1304 ---- //Name must be "front" drawClickBox(frontTextAnchor.getX(), frontTextAnchor.getY(), ! frontTextAnchor.getZ(), frontWidth, 10, "front"); //Name must be "back" drawClickBox(backTextAnchor.getX(), backTextAnchor.getY(), ! backTextAnchor.getZ(), backWidth, 10, "back"); //Name must be "bar" pushName(gl, "bar"); |