use of org.cytoscape.view.presentation.property.values.Handle in project cytoscape-impl by cytoscape.
the class DEdgeView method selectInternal.
// Should synchronize around m_view.m_lock.
boolean selectInternal(boolean selectAnchors) {
if (selected)
return false;
selected = true;
graphView.m_edgeDetails.select(model);
graphView.m_selectedEdges.insert(model.getSUID());
List<Handle> handles = graphView.m_edgeDetails.getBend(model).getAllHandles();
for (int j = 0; j < handles.size(); j++) {
final Handle handle = handles.get(j);
final Point2D newPoint = handle.calculateHandleLocation(graphView.getViewModel(), this);
final double x = newPoint.getX();
final double y = newPoint.getY();
final double halfSize = graphView.getAnchorSize() / 2.0;
graphView.m_spacialA.insert((model.getSUID() << 6) | j, (float) (x - halfSize), (float) (y - halfSize), (float) (x + halfSize), (float) (y + halfSize), 0.0);
if (selectAnchors)
graphView.m_selectedAnchors.insert((model.getSUID() << 6) | j);
}
return true;
}
use of org.cytoscape.view.presentation.property.values.Handle in project cytoscape-impl by cytoscape.
the class DEdgeView method getAnchor.
/**
* Actual method to be used in the Graph Renderer.
*/
@Override
public void getAnchor(int anchorIndex, float[] anchorArr, int offset) {
final Bend bend;
if (isValueLocked(DVisualLexicon.EDGE_BEND))
bend = this.getVisualProperty(DVisualLexicon.EDGE_BEND);
else
bend = graphView.m_edgeDetails.getBend(model);
final Handle handle;
if (graphView.m_edgeDetails.getLineCurved(model) == EdgeView.CURVED_LINES)
handle = bend.getAllHandles().get(anchorIndex);
else
handle = bend.getAllHandles().get(anchorIndex / 2);
final Point2D newPoint = handle.calculateHandleLocation(graphView.getViewModel(), this);
anchorArr[offset] = (float) newPoint.getX();
anchorArr[offset + 1] = (float) newPoint.getY();
}
use of org.cytoscape.view.presentation.property.values.Handle in project cytoscape-impl by cytoscape.
the class DEdgeView method addHandleInternal.
/**
* Insert a new handle to bend object.
*
* @param insertInx
* @param handleLocation
*/
private void addHandleInternal(final int insertInx, final Point2D handleLocation) {
synchronized (graphView.m_lock) {
final Bend bend = graphView.m_edgeDetails.getBend(model);
final Handle handle = handleFacgtory.createHandle(graphView, this, handleLocation.getX(), handleLocation.getY());
bend.insertHandleAt(insertInx, handle);
if (selected) {
for (int j = bend.getAllHandles().size() - 1; j > insertInx; j--) {
graphView.m_spacialA.exists((model.getSUID() << 6) | (j - 1), graphView.m_extentsBuff, 0);
graphView.m_spacialA.delete((model.getSUID() << 6) | (j - 1));
graphView.m_spacialA.insert((model.getSUID() << 6) | j, graphView.m_extentsBuff[0], graphView.m_extentsBuff[1], graphView.m_extentsBuff[2], graphView.m_extentsBuff[3], 0.0);
if (graphView.m_selectedAnchors.delete((model.getSUID() << 6) | (j - 1)))
graphView.m_selectedAnchors.insert((model.getSUID() << 6) | j);
}
graphView.m_spacialA.insert((model.getSUID() << 6) | insertInx, (float) (handleLocation.getX() - (graphView.getAnchorSize() / 2.0d)), (float) (handleLocation.getY() - (graphView.getAnchorSize() / 2.0d)), (float) (handleLocation.getX() + (graphView.getAnchorSize() / 2.0d)), (float) (handleLocation.getY() + (graphView.getAnchorSize() / 2.0d)), 0.0);
}
graphView.setContentChanged();
}
}
use of org.cytoscape.view.presentation.property.values.Handle in project cytoscape-impl by cytoscape.
the class EdgeBundlerTask method render.
private final void render(final Collection<View<CyEdge>> edges, final HandleFactory hf, final BendFactory bf, final VisualMappingManager vmm, final VisualMappingFunctionFactory discreteFactory) {
final VisualStyle style = vmm.getVisualStyle(view);
// Check existing mapping
VisualMappingFunction<?, Bend> bendMapping = style.getVisualMappingFunction(EDGE_BEND);
final Map<Long, Bend> mappingValues;
Map<Long, Bend> existingMap = null;
if (bendMapping != null && bendMapping instanceof DiscreteMapping) {
final String columnName = bendMapping.getMappingColumnName();
if (columnName.equals(BEND_MAP_COLUMN)) {
existingMap = ((DiscreteMapping<Long, Bend>) bendMapping).getAll();
} else {
bendMapping = (DiscreteMapping<Long, Bend>) discreteFactory.createVisualMappingFunction(BEND_MAP_COLUMN, Long.class, EDGE_BEND);
}
}
mappingValues = new HashMap<>();
final CyNetwork network = view.getModel();
final CyTable edgeTable = network.getTable(CyEdge.class, CyNetwork.LOCAL_ATTRS);
final CyColumn bendMapColumn = edgeTable.getColumn(BEND_MAP_COLUMN);
if (bendMapColumn == null) {
edgeTable.createColumn(BEND_MAP_COLUMN, Long.class, false);
}
int ei = 0;
for (final View<CyEdge> edge : edges) {
final Long edgeId = edge.getModel().getSUID();
final View<CyNode> eSource = view.getNodeView(edge.getModel().getSource());
final View<CyNode> eTarget = view.getNodeView(edge.getModel().getTarget());
network.getRow(edge.getModel()).set(BEND_MAP_COLUMN, edgeId);
// Ignore self-edge
if (eSource.getSUID().equals(eTarget.getSUID()))
continue;
final Bend bend = bf.createBend();
final List<Handle> hlist = bend.getAllHandles();
for (int ni = 0; ni < numNubs; ni++) {
final double x = nubs[ni][0][ei];
final double y = nubs[ni][1][ei];
final Handle h = hf.createHandle(view, edge, x, y);
hlist.add(h);
}
mappingValues.put(edgeId, bend);
ei++;
}
if (bendMapping == null) {
// Create new discrete mapping for edge SUID to Edge Bend
final DiscreteMapping<Long, Bend> function = (DiscreteMapping<Long, Bend>) discreteFactory.createVisualMappingFunction(BEND_MAP_COLUMN, Long.class, EDGE_BEND);
style.addVisualMappingFunction(function);
function.putAll(mappingValues);
} else {
if (existingMap != null) {
mappingValues.putAll(existingMap);
}
((DiscreteMapping<Long, Bend>) bendMapping).putAll(mappingValues);
}
}
use of org.cytoscape.view.presentation.property.values.Handle in project cytoscape-impl by cytoscape.
the class GenericXGMMLReader method setEdgeViewProperties.
protected void setEdgeViewProperties(final CyNetworkView netView, final View<CyEdge> edgeView) {
final CyEdge edge = edgeView.getModel();
final Map<String, String> atts = readDataMgr.getGraphicsAttributes(edge);
setVisualProperties(netView, edgeView, atts);
// For 2.x compatibility
final Bend bend = edgeView.getVisualProperty(BasicVisualLexicon.EDGE_BEND);
if (bend != null && bend != EdgeBendVisualProperty.DEFAULT_EDGE_BEND) {
final List<Handle> handles = bend.getAllHandles();
for (final Handle handle : handles) handle.defineHandle(netView, edgeView, Double.NaN, Double.NaN);
}
}
Aggregations