@@ -34,63 +34,54 @@ function annAutorange(gd) {
34
34
Lib . filterVisible ( fullLayout . annotations ) . forEach ( function ( ann ) {
35
35
var xa = Axes . getFromId ( gd , ann . xref ) ;
36
36
var ya = Axes . getFromId ( gd , ann . yref ) ;
37
- var headSize = 3 * ann . arrowsize * ann . arrowwidth || 0 ;
38
- var startHeadSize = 3 * ann . startarrowsize * ann . arrowwidth || 0 ;
39
37
40
- var headPlus , headMinus , startHeadPlus , startHeadMinus ;
41
-
42
- if ( xa ) {
43
- headPlus = headSize + ann . xshift ;
44
- headMinus = headSize - ann . xshift ;
45
- startHeadPlus = startHeadSize + ann . xshift ;
46
- startHeadMinus = startHeadSize - ann . xshift ;
38
+ ann . _extremes = { } ;
39
+ if ( xa ) calcAxisExpansion ( ann , xa ) ;
40
+ if ( ya ) calcAxisExpansion ( ann , ya ) ;
41
+ } ) ;
42
+ }
47
43
48
- if ( ann . axref === ann . xref ) {
49
- // expand for the arrowhead (padded by arrowhead)
50
- Axes . expand ( xa , [ xa . r2c ( ann . x ) ] , {
51
- ppadplus : headPlus ,
52
- ppadminus : headMinus
53
- } ) ;
54
- // again for the textbox (padded by textbox)
55
- Axes . expand ( xa , [ xa . r2c ( ann . ax ) ] , {
56
- ppadplus : Math . max ( ann . _xpadplus , startHeadPlus ) ,
57
- ppadminus : Math . max ( ann . _xpadminus , startHeadMinus )
58
- } ) ;
59
- }
60
- else {
61
- startHeadPlus = ann . ax ? startHeadPlus + ann . ax : startHeadPlus ;
62
- startHeadMinus = ann . ax ? startHeadMinus - ann . ax : startHeadMinus ;
63
- Axes . expand ( xa , [ xa . r2c ( ann . x ) ] , {
64
- ppadplus : Math . max ( ann . _xpadplus , headPlus , startHeadPlus ) ,
65
- ppadminus : Math . max ( ann . _xpadminus , headMinus , startHeadMinus )
66
- } ) ;
67
- }
68
- }
44
+ function calcAxisExpansion ( ann , ax ) {
45
+ var axId = ax . _id ;
46
+ var letter = axId . charAt ( 0 ) ;
47
+ var pos = ann [ letter ] ;
48
+ var apos = ann [ 'a' + letter ] ;
49
+ var ref = ann [ letter + 'ref' ] ;
50
+ var aref = ann [ 'a' + letter + 'ref' ] ;
51
+ var padplus = ann [ '_' + letter + 'padplus' ] ;
52
+ var padminus = ann [ '_' + letter + 'padminus' ] ;
53
+ var shift = { x : 1 , y : - 1 } [ letter ] * ann [ letter + 'shift' ] ;
54
+ var headSize = 3 * ann . arrowsize * ann . arrowwidth || 0 ;
55
+ var headPlus = headSize + shift ;
56
+ var headMinus = headSize - shift ;
57
+ var startHeadSize = 3 * ann . startarrowsize * ann . arrowwidth || 0 ;
58
+ var startHeadPlus = startHeadSize + shift ;
59
+ var startHeadMinus = startHeadSize - shift ;
60
+ var extremes ;
69
61
70
- if ( ya ) {
71
- headPlus = headSize - ann . yshift ;
72
- headMinus = headSize + ann . yshift ;
73
- startHeadPlus = startHeadSize - ann . yshift ;
74
- startHeadMinus = startHeadSize + ann . yshift ;
62
+ if ( aref === ref ) {
63
+ // expand for the arrowhead (padded by arrowhead)
64
+ var extremeArrowHead = Axes . findExtremes ( ax , [ ax . r2c ( pos ) ] , {
65
+ ppadplus : headPlus ,
66
+ ppadminus : headMinus
67
+ } ) ;
68
+ // again for the textbox (padded by textbox)
69
+ var extremeText = Axes . findExtremes ( ax , [ ax . r2c ( apos ) ] , {
70
+ ppadplus : Math . max ( padplus , startHeadPlus ) ,
71
+ ppadminus : Math . max ( padminus , startHeadMinus )
72
+ } ) ;
73
+ extremes = {
74
+ min : [ extremeArrowHead . min [ 0 ] , extremeText . min [ 0 ] ] ,
75
+ max : [ extremeArrowHead . max [ 0 ] , extremeText . max [ 0 ] ]
76
+ } ;
77
+ } else {
78
+ startHeadPlus = apos ? startHeadPlus + apos : startHeadPlus ;
79
+ startHeadMinus = apos ? startHeadMinus - apos : startHeadMinus ;
80
+ extremes = Axes . findExtremes ( ax , [ ax . r2c ( pos ) ] , {
81
+ ppadplus : Math . max ( padplus , headPlus , startHeadPlus ) ,
82
+ ppadminus : Math . max ( padminus , headMinus , startHeadMinus )
83
+ } ) ;
84
+ }
75
85
76
- if ( ann . ayref === ann . yref ) {
77
- Axes . expand ( ya , [ ya . r2c ( ann . y ) ] , {
78
- ppadplus : headPlus ,
79
- ppadminus : headMinus
80
- } ) ;
81
- Axes . expand ( ya , [ ya . r2c ( ann . ay ) ] , {
82
- ppadplus : Math . max ( ann . _ypadplus , startHeadPlus ) ,
83
- ppadminus : Math . max ( ann . _ypadminus , startHeadMinus )
84
- } ) ;
85
- }
86
- else {
87
- startHeadPlus = ann . ay ? startHeadPlus + ann . ay : startHeadPlus ;
88
- startHeadMinus = ann . ay ? startHeadMinus - ann . ay : startHeadMinus ;
89
- Axes . expand ( ya , [ ya . r2c ( ann . y ) ] , {
90
- ppadplus : Math . max ( ann . _ypadplus , headPlus , startHeadPlus ) ,
91
- ppadminus : Math . max ( ann . _ypadminus , headMinus , startHeadMinus )
92
- } ) ;
93
- }
94
- }
95
- } ) ;
86
+ ann . _extremes [ axId ] = extremes ;
96
87
}
0 commit comments