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.