source: Dev/trunk/src/client/dojox/drawing/util/positioning.js @ 532

Last change on this file since 532 was 483, checked in by hendrikvanantwerpen, 11 years ago

Added Dojo 1.9.3 release.

  • Property svn:executable set to *
File size: 1.8 KB
Line 
1define(['./common'], function(common){
2       
3        var textOffset = 4;  // distance from line to text box
4        var textYOffset = 20;  // height of text box
5       
6        var positioning = {};
7        positioning.label = function(/*Object*/start, /*Object*/end){
8                // summary:
9                //              Returns the optimal text positions for annotations.Label.
10               
11                // label at middle of vector
12                var x = 0.5*(start.x+end.x);
13                var y = 0.5*(start.y+end.y);
14               
15                // move label a set distance from the line
16                var slope = common.slope(start, end);
17                var deltay = textOffset/Math.sqrt(1.0+slope*slope);
18               
19                if(end.y>start.y && end.x>start.x || end.y<start.y && end.x<start.x){
20                        // Position depending on quadrant.  Y offset
21                        // positions box aligned vertically from top
22                        deltay = -deltay;
23                        y -= textYOffset;
24                }
25                x += -deltay*slope;
26                y += deltay;
27               
28                // want text to be away from start of vector
29                // This will make force diagrams less crowded
30                var align = end.x<start.x ? "end" : "start";
31               
32                return { x:x, y:y, foo:"bar", align:align}; // Object
33        };
34       
35        positioning.angle = function(/*Object*/start, /*Object*/end){
36                // summary:
37                //              Returns the optimal position for annotations.Angle.
38
39                // angle at first third of vector
40                var x = 0.7*start.x+0.3*end.x;
41                var y = 0.7*start.y+0.3*end.y;
42
43                // move label a set distance from the line
44                var slope = common.slope(start, end);
45                var deltay = textOffset/Math.sqrt(1.0+slope*slope);
46               
47                if(end.x<start.x){deltay = -deltay;}
48                x += -deltay * slope;
49                y += deltay;
50               
51                // want text to be clockwise from vector
52                // to match angle measurement from x-axis
53                var align = end.y>start.y ? "end" : "start";
54                // box vertical aligned from middle
55                y += end.x > start.x ? 0.5*textYOffset :  -0.5*textYOffset;
56               
57                return { x:x, y:y, align:align}; // Object
58        };
59       
60        return positioning;
61});
62
Note: See TracBrowser for help on using the repository browser.