Author: clopes
Date: 2012-02-28 13:51:05 -0800 (Tue, 28 Feb 2012)
New Revision: 28387

Modified:
   cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/view/GraphMediator.as
   
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/view/components/GraphView.as
   
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/view/components/GraphVis.as
   cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/view/render/Labeler.as
Log:
Fixed bug #2633: Misaligned labels when zoom changes.

Modified: 
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/view/GraphMediator.as
===================================================================
--- cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/view/GraphMediator.as  
2012-02-28 21:31:35 UTC (rev 28386)
+++ cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/view/GraphMediator.as  
2012-02-28 21:51:05 UTC (rev 28387)
@@ -249,9 +249,9 @@
             vis.data.nodes.setProperties(Nodes.properties);
             vis.data.edges.setProperties(Edges.properties);
             
vis.data.group(Groups.COMPOUND_NODES).setProperties(CompoundNodes.properties);
-            vis.updateLabels(Groups.NODES);
-            vis.updateLabels(Groups.COMPOUND_NODES);
-            vis.updateLabels(Groups.EDGES);
+            graphView.updateLabels(Groups.NODES);
+            graphView.updateLabels(Groups.COMPOUND_NODES);
+            graphView.updateLabels(Groups.EDGES);
             separateDisconnected();
         }
         
@@ -266,8 +266,8 @@
                         n.visible = Nodes.visible(n);
                     }
                 }
-                vis.updateLabels(Groups.NODES);
-                vis.updateLabels(Groups.COMPOUND_NODES);
+                graphView.updateLabels(Groups.NODES);
+                graphView.updateLabels(Groups.COMPOUND_NODES);
             }
             // When filtering nodes, it may be necessary to show/hide related 
edges as well:
             if (updateNodes || updateEdges) {
@@ -281,7 +281,7 @@
                         e.visible = Edges.visible(e);
                     }
                 }
-                vis.updateLabels(Groups.EDGES);
+                graphView.updateLabels(Groups.EDGES);
             }
             separateDisconnected();
             
@@ -307,7 +307,7 @@
         public function initialize(gr:String, items:Array):void {
             addListeners(items);
             updateDataSprites(gr, items);
-            vis.updateLabels(gr);
+            graphView.updateLabels(gr);
         }
         
         public function separateDisconnected():void {

Modified: 
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/view/components/GraphView.as
===================================================================
--- 
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/view/components/GraphView.as
   2012-02-28 21:31:35 UTC (rev 28386)
+++ 
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/view/components/GraphView.as
   2012-02-28 21:51:05 UTC (rev 28387)
@@ -52,6 +52,7 @@
     import org.cytoscapeweb.util.CompoundNodes;
     import org.cytoscapeweb.util.Edges;
     import org.cytoscapeweb.util.GraphUtils;
+    import org.cytoscapeweb.util.Groups;
     import org.cytoscapeweb.util.Layouts;
     import org.cytoscapeweb.util.Nodes;
     import org.cytoscapeweb.util.Utils;
@@ -419,9 +420,26 @@
         /**
          * Zoom the "camera" by the specified scale factor.
          */
-        private function zoomBy(scale:Number):void { trace("-> Zoom by: " + 
scale);            
+        private function zoomBy(scale:Number):void {
             if (scale > 0) {
+                var prevScale:Number = vis.scaleX;
                 Displays.zoomBy(vis, scale, stage.stageWidth/2, 
stage.stageHeight/2);
+                
+                // Update node labels and compound bounds when zooming in, 
because there is a
+                // precision problem if the labeler runs when the scale is 
near zero,
+                // which causes misaligned labels later.
+                if (prevScale < 0.5) {
+                    if (_config.nodeLabelsVisible) {
+                        if (vis.nodeLabeler.enabled) {
+                            vis.nodeLabeler.operate();
+                        }
+                        if (vis.compoundNodeLabeler.enabled) {
+                            vis.compoundNodeLabeler.operate();
+                            vis.updateAllCompoundBounds();
+                        }
+                    }
+                }
+                
                 // Let others know about the new scale:
                 dispatchEvent(new GraphViewEvent(GraphViewEvent.SCALE_CHANGE, 
vis.scaleX));
             }

Modified: 
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/view/components/GraphVis.as
===================================================================
--- 
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/view/components/GraphVis.as
    2012-02-28 21:31:35 UTC (rev 28386)
+++ 
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/view/components/GraphVis.as
    2012-02-28 21:51:05 UTC (rev 28387)
@@ -124,7 +124,6 @@
         public function get compoundNodeLabeler():Labeler {
             if (_compoundNodeLabeler == null) {
                 _compoundNodeLabeler = new Labeler(null, 
Groups.COMPOUND_NODES);
-                //_compoundNodeLabeler = new Labeler(null, Data.NODES);
             }
             return _compoundNodeLabeler;
         }
@@ -369,7 +368,7 @@
             return seq;
         }
         
-        public function updateLabels(group:String=null):void {
+        internal function updateLabels(group:String=null):void {
             if (group == null) {
                 updateLabels(Groups.NODES);
                 updateLabels(Groups.COMPOUND_NODES);
@@ -439,15 +438,20 @@
             
             // It's necessary to operate labeler first, so each label's text 
sprite is well placed!
             if (_config.nodeLabelsVisible) {
-                nodeLabeler.operate();
-                compoundNodeLabeler.operate();
+                if (nodeLabeler.enabled)
+                    nodeLabeler.operate();
+                if (compoundNodeLabeler.enabled)
+                    compoundNodeLabeler.operate();
             }
 
             // Then render edges and operate their labels:
             $each(d.edges, function(i:uint, e:EdgeSprite):void {
                  e.render();
             });
-            if (_config.edgeLabelsVisible) edgeLabeler.operate();
+            
+            if (_config.edgeLabelsVisible && edgeLabeler.enabled) {
+                edgeLabeler.operate();
+            }
 
             var bounds:Rectangle = GraphUtils.getBounds(d.nodes,
                                                         d.edges,
@@ -737,7 +741,6 @@
                 }
             }
             
-//            this.compoundNodeLabeler.update(cns);
             this.updateCompoundBounds(cns);
             cns.render();
         }

Modified: 
cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/view/render/Labeler.as
===================================================================
--- cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/view/render/Labeler.as 
2012-02-28 21:31:35 UTC (rev 28386)
+++ cytoscapeweb/trunk/cytoscapeweb/src/org/cytoscapeweb/view/render/Labeler.as 
2012-02-28 21:51:05 UTC (rev 28387)
@@ -145,6 +145,8 @@
         /** @inheritDoc */
         protected override function process(d:DataSprite):void {
             var label:TextSprite = getLabel(d, true);
+            if (label == null) return;
+            
             label.filters = filters(d);
             label.alpha = d.alpha;
             

-- 
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.

Reply via email to