Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 506769

Summary: DOT Graph View - edge decorations rendering problem
Product: [Tools] GEF Reporter: Tamas Miklossy <miklossy>
Component: GEF DOTAssignee: gef-inbox <gef-inbox>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: matthias.wienand
Version: 1.0.0   
Target Milestone: 5.0.0 (Oxygen) M3   
Hardware: PC   
OS: Windows NT   
Whiteboard:
Attachments:
Description Flags
Screenshot about the DOT Graphview edge decoration rendering problem none

Description Tamas Miklossy CLA 2016-10-31 03:45:56 EDT
Created attachment 265111 [details]
Screenshot about the DOT Graphview edge decoration rendering problem

The DOT Graph View does not render the edge decorations properly. Im attached screenshot see the given dot file, rendering the dot file within the DOT Graph View (incorrect rendering), rendering the dot file with the graphviz executable (correct rendering).
Comment 1 Matthias Wienand CLA 2016-10-31 09:41:46 EDT
Dot computes a start point and an end point for the edges. These are provided as hints (start-point-hint, end-point-hint) to the Connection that visualizes the edge. The DotBSplineInterpolator is responsible for computing the ICurve geometry for the Connection.

Normally, anchors are used to compute the positions of a Connection which the interpolator processes. However, since the StraightRouter and OrthogonalRouter currently determine the reference point for the anchor computation, they would need to be subclassed and specialized for Dot.

In order to use the dot-provided start and end point without specializing the router implementations, the start and end point hint are used instead of the anchor-provided start and end points when constructing the ICurve geometry within DotBSplineInterpolator.

Using the dot-provided start and end points, the visualization is correct, i.e. the angle of the decorations and the start and end points of the edges match the visualization by dot.

The code is published on the master branch, therefore, I resolve this ticket as fixed for 5.0.0 M3.

I added a follow-up bug #506791 for refactoring IConnectionRouter so that the parameters required by the used IComputationStrategy can be provided differently without changing the router.