Author: paperwing
Date: 2011-12-21 13:15:55 -0800 (Wed, 21 Dec 2011)
New Revision: 27855
Added:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/BirdsEyeGraphics.java
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/GraphicsHandler.java
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/MainGraphics.java
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/BirdsEyeCoordinator.java
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/CoordinatorProcessor.java
Removed:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/MapGraphics.java
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/BirdsEyeViewCoordinator.java
Modified:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/Graphics.java
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/GraphicsData.java
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/InputProcessor.java
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/ShapePicker.java
Log:
think last commit did not go through\; this commit marks the beginning of the
GraphicsHandler interface for main and birds eye view, as well as camera
movement coordinated with the birds eye view
Added:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/BirdsEyeGraphics.java
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/BirdsEyeGraphics.java
(rev 0)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/BirdsEyeGraphics.java
2011-12-21 21:15:55 UTC (rev 27855)
@@ -0,0 +1,62 @@
+package org.cytoscape.paperwing.internal;
+
+import org.cytoscape.paperwing.internal.graphics.BirdsEyeCoordinator;
+import org.cytoscape.paperwing.internal.graphics.CoordinatorProcessor;
+import org.cytoscape.paperwing.internal.graphics.GraphicsData;
+import org.cytoscape.paperwing.internal.graphics.InputProcessor;
+import org.cytoscape.paperwing.internal.graphics.ShapePicker;
+import org.cytoscape.view.model.CyNetworkView;
+import org.cytoscape.view.model.VisualLexicon;
+
+public class BirdsEyeGraphics implements GraphicsHandler {
+
+ @Override
+ public InputProcessor getInputProcessor() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public ShapePicker getShapePicker() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public BirdsEyeCoordinator getCoordinator(GraphicsData graphicsData) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public CoordinatorProcessor getCoordinatorProcessor() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public void initializeGraphicsProcedures(GraphicsData graphicsData) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void resetSceneForDrawing(GraphicsData graphicsData) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void drawScene(GraphicsData graphicsData) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void setupLighting(GraphicsData graphicsData) {
+ // TODO Auto-generated method stub
+
+ }
+
+
+}
Property changes on:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/BirdsEyeGraphics.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/Graphics.java
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/Graphics.java
2011-12-21 18:55:35 UTC (rev 27854)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/Graphics.java
2011-12-21 21:15:55 UTC (rev 27855)
@@ -42,7 +42,8 @@
import org.cytoscape.model.CyEdge.Type;
import org.cytoscape.model.CyNetworkManager;
import org.cytoscape.model.CyNode;
-import org.cytoscape.paperwing.internal.graphics.BirdsEyeViewCoordinator;
+import org.cytoscape.paperwing.internal.graphics.BirdsEyeCoordinator;
+import org.cytoscape.paperwing.internal.graphics.CoordinatorProcessor;
import org.cytoscape.paperwing.internal.graphics.GraphicsData;
import org.cytoscape.paperwing.internal.graphics.InputProcessor;
import org.cytoscape.paperwing.internal.graphics.ReadOnlyGraphicsProcedure;
@@ -64,7 +65,6 @@
* @author Paperwing (Yue Dong)
*/
public class Graphics implements GLEventListener {
-
/** A monitor to keep track of keyboard events */
private KeyboardMonitor keys;
@@ -76,21 +76,14 @@
private boolean lowerQuality = false;
private GraphicsData graphicsData;
- private Map<String, ReadOnlyGraphicsProcedure> renderProcedures;
private InputProcessor inputProcessor;
private ShapePicker shapePicker;
+ private BirdsEyeCoordinator coordinator;
+ private CoordinatorProcessor coordinatorProcessor;
- private BirdsEyeViewCoordinator coordinator;
+ private GraphicsHandler handler;
- /** A class capable of storing the edge and node indices of edges and
nodes
- * that were found to be selected using the shape picking methods
- */
- public class PickResults {
- public Set<Integer> nodeIndices = new LinkedHashSet<Integer>();
- public Set<Integer> edgeIndices = new LinkedHashSet<Integer>();
- }
-
/** Initialize a singleton that seems to help with JOGL in some
compatibility
* aspects
*/
@@ -105,23 +98,14 @@
* View<CyNetwork> object that we are rendering
* @param visualLexicon The visual lexicon being used
*/
- public Graphics(CyNetworkView networkView, VisualLexicon visualLexicon)
{
+ public Graphics(CyNetworkView networkView, VisualLexicon visualLexicon,
GraphicsHandler handler) {
keys = new KeyboardMonitor();
mouse = new MouseMonitor();
-
- if (BirdsEyeViewCoordinator.getCoordinator(networkView) !=
null) {
- coordinator =
BirdsEyeViewCoordinator.getCoordinator(networkView);
- } else {
- coordinator =
BirdsEyeViewCoordinator.createCoordinator(networkView);
- }
-
- System.out.println("coordinator found for default graphics " +
this);
- renderProcedures = new LinkedHashMap<String,
ReadOnlyGraphicsProcedure>();
- renderProcedures.put("nodes", new RenderNodesProcedure());
- renderProcedures.put("edges", new RenderEdgesProcedure());
- renderProcedures.put("selectionBox", new
RenderSelectionBoxProcedure());
+// renderProcedures.put("nodes", new RenderNodesProcedure());
+// renderProcedures.put("edges", new RenderEdgesProcedure());
+// renderProcedures.put("selectionBox", new
RenderSelectionBoxProcedure());
// TODO: add default constant speeds for camera movement
graphicsData = new GraphicsData();
@@ -131,8 +115,9 @@
graphicsData.setNetworkView(networkView);
graphicsData.setVisualLexicon(visualLexicon);
- shapePicker = new ShapePicker(graphicsData,
renderProcedures.get("nodes"), renderProcedures.get("edges"));
- inputProcessor = new InputProcessor();
+ coordinator = handler.getCoordinator(graphicsData);
+ shapePicker = handler.getShapePicker();
+ inputProcessor = handler.getInputProcessor();
}
/** Attach the KeyboardMonitor and MouseMonitors, which are listeners,
@@ -162,81 +147,23 @@
graphicsData.setGlContext(gl);
// Check input
- processInput();
+ inputProcessor.processInput(keys, mouse, graphicsData,
shapePicker);
// Update data for bird's eye view camera movement
- checkBevCameraMovement();
+ coordinatorProcessor.extractData(coordinator, graphicsData);
// Reset the scene for drawing
- resetSceneForDrawing(gl);
+ handler.resetSceneForDrawing(graphicsData);
// Draw the scene
- drawScene(gl);
+ handler.drawScene(graphicsData);
-
graphicsData.setFramesElapsed(graphicsData.getFramesElapsed() +
1);
}
-
- /** Obtain input and check for changes in the keyboard and mouse
buttons,
- * as well as mouse movement. This method also handles responses
- * to such events
- */
- private void processInput() {
- inputProcessor.processInput(keys, mouse, graphicsData,
shapePicker);
- }
-
-
- // Check for signals from birdsEyeView
- private void checkBevCameraMovement() {
- if (coordinator.birdsEyeBoundsChanged()) {
- Vector3 newCameraPosition =
-
BirdsEyeViewCoordinator.extractCameraPosition(coordinator,
-
graphicsData.getCamera().getDirection(),
-
graphicsData.getCamera().getDistance());
-
- graphicsData.getCamera().moveTo(newCameraPosition);
- }
- }
-
-
- private void resetSceneForDrawing(GL2 gl) {
- SimpleCamera camera = graphicsData.getCamera();
-
- // Reset scene
- gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
- gl.glLoadIdentity();
-
- Vector3 position = camera.getPosition();
- Vector3 target = camera.getTarget();
- Vector3 up = camera.getUp();
-
- GLU glu = new GLU();
- glu.gluLookAt(position.x(), position.y(), position.z(),
target.x(),
- target.y(), target.z(), up.x(), up.y(), up.z());
- }
-
- private void drawScene(GL2 gl) {
-
- // Draw selection box
- if (graphicsData.getSelectionData().isDragSelectMode()) {
-
renderProcedures.get("selectionBox").execute(graphicsData);
- }
-
- // Control light positioning
- float[] lightPosition = { -4.0f, 4.0f, 6.0f, 1.0f };
-
- // Code below toggles the light following the camera
- // gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_POSITION,
- // FloatBuffer.wrap(lightPosition));
-
- renderProcedures.get("nodes").execute(graphicsData);
- renderProcedures.get("edges").execute(graphicsData);
- }
-
@Override
public void dispose(GLAutoDrawable autoDrawable) {
-
+ coordinatorProcessor.unlinkCoordinator(coordinator);
}
/** Initialize the Graphics object, performing certain
@@ -257,9 +184,6 @@
gl.glViewport(0, 0, drawable.getWidth(), drawable.getHeight());
- //generateNodes();
- //generateEdges();
-
// Correct lightning for scaling certain models
gl.glEnable(GL2.GL_NORMALIZE);
@@ -272,9 +196,8 @@
graphicsData.setStartTime(System.nanoTime());
graphicsData.setGlContext(gl);
- for (ReadOnlyGraphicsProcedure procedure :
renderProcedures.values()) {
- procedure.initialize(graphicsData);
- }
+ handler.initializeGraphicsProcedures(graphicsData);
+ handler.setupLighting(graphicsData);
}
Added:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/GraphicsHandler.java
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/GraphicsHandler.java
(rev 0)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/GraphicsHandler.java
2011-12-21 21:15:55 UTC (rev 27855)
@@ -0,0 +1,33 @@
+package org.cytoscape.paperwing.internal;
+
+import java.util.Map;
+
+import org.cytoscape.paperwing.internal.graphics.BirdsEyeCoordinator;
+import org.cytoscape.paperwing.internal.graphics.CoordinatorProcessor;
+import org.cytoscape.paperwing.internal.graphics.GraphicsData;
+import org.cytoscape.paperwing.internal.graphics.InputProcessor;
+import org.cytoscape.paperwing.internal.graphics.ReadOnlyGraphicsProcedure;
+import org.cytoscape.paperwing.internal.graphics.ShapePicker;
+
+// The GraphicsHandler is read-only for given GraphicsData objects
+public interface GraphicsHandler {
+
+ public InputProcessor getInputProcessor();
+ public ShapePicker getShapePicker();
+ public BirdsEyeCoordinator getCoordinator(GraphicsData graphicsData);
+ public CoordinatorProcessor getCoordinatorProcessor();
+
+ // Call procedures' init methods
+ public void initializeGraphicsProcedures(GraphicsData graphicsData);
+
+ // Clear the scene
+ public void resetSceneForDrawing(GraphicsData graphicsData);
+
+ // Draw the scene
+ public void drawScene(GraphicsData graphicsData);
+
+ // Setup lighting
+ public void setupLighting(GraphicsData graphicsData);
+}
+
+
Property changes on:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/GraphicsHandler.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/MainGraphics.java
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/MainGraphics.java
(rev 0)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/MainGraphics.java
2011-12-21 21:15:55 UTC (rev 27855)
@@ -0,0 +1,77 @@
+package org.cytoscape.paperwing.internal;
+
+import java.util.Map;
+
+import org.cytoscape.paperwing.internal.graphics.BirdsEyeCoordinator;
+import org.cytoscape.paperwing.internal.graphics.CoordinatorProcessor;
+import org.cytoscape.paperwing.internal.graphics.GraphicsData;
+import org.cytoscape.paperwing.internal.graphics.InputProcessor;
+import org.cytoscape.paperwing.internal.graphics.ReadOnlyGraphicsProcedure;
+import org.cytoscape.paperwing.internal.graphics.RenderEdgesProcedure;
+import org.cytoscape.paperwing.internal.graphics.RenderNodesProcedure;
+import org.cytoscape.paperwing.internal.graphics.ShapePicker;
+import org.cytoscape.view.model.CyNetworkView;
+import org.cytoscape.view.model.VisualLexicon;
+
+public class MainGraphics implements GraphicsHandler {
+
+ @Override
+ public InputProcessor getInputProcessor() {
+ return new InputProcessor();
+ }
+
+ @Override
+ public void resetSceneForDrawing(GraphicsData graphicsData) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void drawScene(GraphicsData graphicsData) {
+ // TODO Auto-generated method stub
+
+ // Control light positioning
+ float[] lightPosition = { -4.0f, 4.0f, 6.0f, 1.0f };
+
+ // Code below toggles the light following the camera
+ // gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_POSITION,
+ // FloatBuffer.wrap(lightPosition));
+
+ }
+
+ @Override
+ public void setupLighting(GraphicsData graphicsData) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public ShapePicker getShapePicker() {
+ return new ShapePicker(new RenderNodesProcedure(), new
RenderEdgesProcedure());
+ }
+
+ @Override
+ public BirdsEyeCoordinator getCoordinator(GraphicsData graphicsData) {
+ CyNetworkView networkView = graphicsData.getNetworkView();
+
+ if (BirdsEyeCoordinator.getCoordinator(networkView) != null) {
+ return BirdsEyeCoordinator.getCoordinator(networkView);
+ } else {
+ return
BirdsEyeCoordinator.createCoordinator(networkView);
+ }
+ }
+
+ @Override
+ public CoordinatorProcessor getCoordinatorProcessor() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public void initializeGraphicsProcedures(GraphicsData graphicsData) {
+ // TODO Auto-generated method stub
+
+ }
+
+
+}
\ No newline at end of file
Property changes on:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/MainGraphics.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Deleted:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/MapGraphics.java
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/MapGraphics.java
2011-12-21 18:55:35 UTC (rev 27854)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/MapGraphics.java
2011-12-21 21:15:55 UTC (rev 27855)
@@ -1,13 +0,0 @@
-package org.cytoscape.paperwing.internal;
-
-import org.cytoscape.view.model.CyNetworkView;
-import org.cytoscape.view.model.VisualLexicon;
-
-public class MapGraphics extends Graphics {
-
- public MapGraphics(CyNetworkView networkView, VisualLexicon
visualLexicon) {
- super(networkView, visualLexicon);
- // TODO Auto-generated constructor stub
- }
-
-}
Copied:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/BirdsEyeCoordinator.java
(from rev 27854,
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/BirdsEyeViewCoordinator.java)
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/BirdsEyeCoordinator.java
(rev 0)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/BirdsEyeCoordinator.java
2011-12-21 21:15:55 UTC (rev 27855)
@@ -0,0 +1,147 @@
+package org.cytoscape.paperwing.internal.graphics;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import org.cytoscape.paperwing.internal.SimpleCamera;
+import org.cytoscape.paperwing.internal.Vector3;
+import org.cytoscape.view.model.CyNetworkView;
+
+public class BirdsEyeCoordinator {
+
+ private SimpleCamera newMainCamera;
+ private Quadrilateral newBirdsEyeBounds;
+
+ private boolean mainCameraChanged = false;
+ private boolean birdsEyeBoundsChanged = false;
+
+ private boolean mainClaimed = false;
+ private boolean birdsEyeClaimed = false;
+
+ private boolean mainToUnlink = false;
+ private boolean birdsEyeToUnlink = false;
+
+ // Assumes 1 CyNetworkView object per main-bird pair
+ private static Map<CyNetworkView, BirdsEyeCoordinator> coordinators =
new LinkedHashMap<CyNetworkView, BirdsEyeCoordinator>();
+
+ // 1:1 relationship between coordinators and networkViews, can use this
to make an inverse map used to remove coordinators from
+ // the maps
+ private static Map<BirdsEyeCoordinator, CyNetworkView> networkViews =
new LinkedHashMap<BirdsEyeCoordinator, CyNetworkView>();
+
+ // Camera direction must be a unit vector
+ public static Vector3 extractCameraPosition(BirdsEyeCoordinator
coordinator, Vector3 cameraDirection, double cameraDistance) {
+ Vector3 offset = cameraDirection.copy();
+ offset.multiplyLocal(cameraDistance);
+
+ Quadrilateral bounds = coordinator.getNewBirdsEyeBounds();
+
+ Vector3 position = bounds.getCenterPoint();
+ position.addLocal(offset);
+
+ return position;
+ }
+
+ public static Quadrilateral extractBounds(SimpleCamera camera, double
verticalFov, double aspectRatio) {
+ return
GraphicsUtility.generateViewingBounds(camera.getPosition(),
camera.getDirection(), camera.getUp(),
+ camera.getDistance(), verticalFov, aspectRatio);
+ }
+
+ // This networkView is only used to differentiate between main camera
and
+ // birds eye camera pairs
+ private BirdsEyeCoordinator(CyNetworkView networkView) {
+ newMainCamera = new SimpleCamera();
+ newBirdsEyeBounds = new Quadrilateral();
+ }
+
+ public static BirdsEyeCoordinator getCoordinator(CyNetworkView
networkView) {
+ return coordinators.get(networkView);
+ }
+
+ public static BirdsEyeCoordinator createCoordinator(CyNetworkView
networkView) {
+ BirdsEyeCoordinator coordinator = new
BirdsEyeCoordinator(networkView);
+
+ coordinators.put(networkView, coordinator);
+ networkViews.put(coordinator, networkView);
+
+ return coordinator;
+ }
+
+ // Update orientation
+ public void updateMainCamera(SimpleCamera mainCamera) {
+ newMainCamera.copyOrientation(mainCamera);
+ mainCameraChanged = true;
+ }
+
+ // Update orientation
+ public void updateBirdsEyeBounds(Quadrilateral bounds) {
+ newBirdsEyeBounds.set(bounds);
+ birdsEyeBoundsChanged = true;
+ }
+
+ // Get the updated camera
+ public SimpleCamera getNewMainCamera() {
+ return newMainCamera;
+ }
+
+ // Get the updated camera
+ public Quadrilateral getNewBirdsEyeBounds() {
+ return newBirdsEyeBounds;
+ }
+
+ public boolean mainCameraChanged() {
+ return mainCameraChanged;
+ }
+
+ public boolean birdsEyeBoundsChanged() {
+ return birdsEyeBoundsChanged;
+ }
+
+ public void updateMainCamera() {
+ mainCameraChanged = false;
+ }
+
+ public void updateBirdsEyeBounds() {
+ birdsEyeBoundsChanged = false;
+ }
+
+ // Claim by a main window rendering object
+ public void claimMain() {
+ mainClaimed = true;
+ mainToUnlink = false;
+ }
+
+ // Claim by a birds eye view rendering object
+ public void claimBirdsEye() {
+ birdsEyeClaimed = true;
+ birdsEyeToUnlink = false;
+ }
+
+ // Notify that main will no longer look after this coordinator
+ public void unlinkMain() {
+ mainClaimed = false;
+ mainToUnlink = true;
+
+ // Both unlinked; prepare to remove this object
+ if (birdsEyeToUnlink) {
+ CyNetworkView networkView = networkViews.get(this);
+
+ coordinators.remove(networkView);
+ networkViews.remove(this);
+ }
+ }
+
+ // Notify that bird's eye view will no longer look after this
coordinator
+ public void unlinkBirdsEye() {
+ birdsEyeClaimed = false;
+ birdsEyeToUnlink = true;
+
+ // Both unlinked; prepare to remove this object
+ if (mainToUnlink) {
+ CyNetworkView networkView = networkViews.get(this);
+
+ coordinators.remove(networkView);
+ networkViews.remove(this);
+ }
+ }
+
+}
Property changes on:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/BirdsEyeCoordinator.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Deleted:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/BirdsEyeViewCoordinator.java
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/BirdsEyeViewCoordinator.java
2011-12-21 18:55:35 UTC (rev 27854)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/BirdsEyeViewCoordinator.java
2011-12-21 21:15:55 UTC (rev 27855)
@@ -1,147 +0,0 @@
-package org.cytoscape.paperwing.internal.graphics;
-
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-import org.cytoscape.paperwing.internal.SimpleCamera;
-import org.cytoscape.paperwing.internal.Vector3;
-import org.cytoscape.view.model.CyNetworkView;
-
-public class BirdsEyeViewCoordinator {
-
- private SimpleCamera newMainCamera;
- private Quadrilateral newBirdsEyeBounds;
-
- private boolean mainCameraChanged = false;
- private boolean birdsEyeBoundsChanged = false;
-
- private boolean mainClaimed = false;
- private boolean birdsEyeClaimed = false;
-
- private boolean mainToUnlink = false;
- private boolean birdsEyeToUnlink = false;
-
- // Assumes 1 CyNetworkView object per main-bird pair
- private static Map<CyNetworkView, BirdsEyeViewCoordinator> coordinators
= new LinkedHashMap<CyNetworkView, BirdsEyeViewCoordinator>();
-
- // 1:1 relationship between coordinators and networkViews, can use this
to make an inverse map used to remove coordinators from
- // the maps
- private static Map<BirdsEyeViewCoordinator, CyNetworkView> networkViews
= new LinkedHashMap<BirdsEyeViewCoordinator, CyNetworkView>();
-
- // Camera direction must be a unit vector
- public static Vector3 extractCameraPosition(BirdsEyeViewCoordinator
coordinator, Vector3 cameraDirection, double cameraDistance) {
- Vector3 offset = cameraDirection.copy();
- offset.multiplyLocal(cameraDistance);
-
- Quadrilateral bounds = coordinator.getNewBirdsEyeBounds();
-
- Vector3 position = bounds.getCenterPoint();
- position.addLocal(offset);
-
- return position;
- }
-
- public static Quadrilateral extractBounds(SimpleCamera camera, double
verticalFov, double aspectRatio) {
- return
GraphicsUtility.generateViewingBounds(camera.getPosition(),
camera.getDirection(), camera.getUp(),
- camera.getDistance(), verticalFov, aspectRatio);
- }
-
- // This networkView is only used to differentiate between main camera
and
- // birds eye camera pairs
- private BirdsEyeViewCoordinator(CyNetworkView networkView) {
- newMainCamera = new SimpleCamera();
- newBirdsEyeBounds = new Quadrilateral();
- }
-
- public static BirdsEyeViewCoordinator getCoordinator(CyNetworkView
networkView) {
- return coordinators.get(networkView);
- }
-
- public static BirdsEyeViewCoordinator createCoordinator(CyNetworkView
networkView) {
- BirdsEyeViewCoordinator coordinator = new
BirdsEyeViewCoordinator(networkView);
-
- coordinators.put(networkView, coordinator);
- networkViews.put(coordinator, networkView);
-
- return coordinator;
- }
-
- // Update orientation
- public void updateMainCamera(SimpleCamera mainCamera) {
- newMainCamera.copyOrientation(mainCamera);
- mainCameraChanged = true;
- }
-
- // Update orientation
- public void updateBirdsEyeBounds(Quadrilateral bounds) {
- newBirdsEyeBounds.set(bounds);
- birdsEyeBoundsChanged = true;
- }
-
- // Get the updated camera
- public SimpleCamera getNewMainCamera() {
- return newMainCamera;
- }
-
- // Get the updated camera
- public Quadrilateral getNewBirdsEyeBounds() {
- return newBirdsEyeBounds;
- }
-
- public boolean mainCameraChanged() {
- return mainCameraChanged;
- }
-
- public boolean birdsEyeBoundsChanged() {
- return birdsEyeBoundsChanged;
- }
-
- public void updateMainCamera() {
- mainCameraChanged = false;
- }
-
- public void updateBirdsEyeBounds() {
- birdsEyeBoundsChanged = false;
- }
-
- // Claim by a main window rendering object
- public void claimMain() {
- mainClaimed = true;
- mainToUnlink = false;
- }
-
- // Claim by a birds eye view rendering object
- public void claimBirdsEye() {
- birdsEyeClaimed = true;
- birdsEyeToUnlink = false;
- }
-
- // Notify that main will no longer look after this coordinator
- public void unlinkMain() {
- mainClaimed = false;
- mainToUnlink = true;
-
- // Both unlinked; prepare to remove this object
- if (birdsEyeToUnlink) {
- CyNetworkView networkView = networkViews.get(this);
-
- coordinators.remove(networkView);
- networkViews.remove(this);
- }
- }
-
- // Notify that bird's eye view will no longer look after this
coordinator
- public void unlinkBirdsEye() {
- birdsEyeClaimed = false;
- birdsEyeToUnlink = true;
-
- // Both unlinked; prepare to remove this object
- if (mainToUnlink) {
- CyNetworkView networkView = networkViews.get(this);
-
- coordinators.remove(networkView);
- networkViews.remove(this);
- }
- }
-
-}
Added:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/CoordinatorProcessor.java
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/CoordinatorProcessor.java
(rev 0)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/CoordinatorProcessor.java
2011-12-21 21:15:55 UTC (rev 27855)
@@ -0,0 +1,7 @@
+package org.cytoscape.paperwing.internal.graphics;
+
+public interface CoordinatorProcessor {
+ public void extractData(BirdsEyeCoordinator coordinator, GraphicsData
graphicsData);
+
+ public void unlinkCoordinator(BirdsEyeCoordinator coordinator);
+}
Property changes on:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/CoordinatorProcessor.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/GraphicsData.java
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/GraphicsData.java
2011-12-21 18:55:35 UTC (rev 27854)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/GraphicsData.java
2011-12-21 21:15:55 UTC (rev 27855)
@@ -1,9 +1,11 @@
package org.cytoscape.paperwing.internal.graphics;
+import java.util.Map;
import java.util.Set;
import javax.media.opengl.GL2;
+import org.cytoscape.paperwing.internal.Graphics;
import org.cytoscape.paperwing.internal.SimpleCamera;
import org.cytoscape.paperwing.internal.Vector3;
import org.cytoscape.view.model.CyNetworkView;
Modified:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/InputProcessor.java
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/InputProcessor.java
2011-12-21 18:55:35 UTC (rev 27854)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/InputProcessor.java
2011-12-21 21:15:55 UTC (rev 27855)
@@ -95,7 +95,7 @@
if (graphicsData.isDisableHovering()) {
pickResults = shapePicker.new PickResults();
} else {
- pickResults = shapePicker.performPick(mouse.x(),
mouse.y(), 2, 2, false);
+ pickResults = shapePicker.performPick(mouse.x(),
mouse.y(), 2, 2, false, graphicsData);
}
int newHoverNodeIndex = ShapePicker.NO_INDEX;
@@ -237,7 +237,8 @@
(selectionData.getSelectTopLeftX() + selectionData.getSelectBottomRightX()) / 2,
(selectionData.getSelectTopLeftY() + selectionData.getSelectBottomRightY()) / 2,
Math.abs(selectionData.getSelectTopLeftX() -
selectionData.getSelectBottomRightX()),
-
Math.abs(selectionData.getSelectTopLeftY() -
selectionData.getSelectBottomRightY()), true);
+
Math.abs(selectionData.getSelectTopLeftY() -
selectionData.getSelectBottomRightY()), true,
+ graphicsData);
CyNode node;
for (Integer nodeIndex :
results.nodeIndices) {
Modified:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/ShapePicker.java
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/ShapePicker.java
2011-12-21 18:55:35 UTC (rev 27854)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/graphics/ShapePicker.java
2011-12-21 21:15:55 UTC (rev 27855)
@@ -44,10 +44,8 @@
private ReadOnlyGraphicsProcedure drawNodesProcedure;
private ReadOnlyGraphicsProcedure drawEdgesProcedure;
- public ShapePicker(GraphicsData graphicsData,
- ReadOnlyGraphicsProcedure drawNodeProcedure,
+ public ShapePicker(ReadOnlyGraphicsProcedure drawNodeProcedure,
ReadOnlyGraphicsProcedure drawEdgeProcedure) {
- this.graphicsData = graphicsData;
this.drawNodesProcedure = drawNodeProcedure;
this.drawEdgesProcedure = drawEdgeProcedure;
}
@@ -73,7 +71,7 @@
* object
*/
public PickResults performPick(int x, int y, int width, int height,
- boolean selectAll) {
+ boolean selectAll, GraphicsData graphicsData) {
int bufferSize = 1024;
if (selectAll) {
--
You received this message because you are subscribed to the Google Groups
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/cytoscape-cvs?hl=en.