@@ -38,8 +38,7 @@ function createCamera(scene) {
38
38
}
39
39
40
40
result . mouseListener = mouseChange ( element , function ( buttons , x , y ) {
41
- var xrange = scene . xaxis . range ,
42
- yrange = scene . yaxis . range ,
41
+ var dataBox = scene . calcDataBox ( ) ,
43
42
viewBox = plot . viewBox ;
44
43
45
44
var lastX = result . lastPos [ 0 ] ,
@@ -51,14 +50,15 @@ function createCamera(scene) {
51
50
// mouseChange gives y about top; convert to about bottom
52
51
y = ( viewBox [ 3 ] - viewBox [ 1 ] ) - y ;
53
52
54
- function updateRange ( range , start , end ) {
53
+ function updateRange ( i0 , start , end ) {
55
54
var range0 = Math . min ( start , end ) ,
56
55
range1 = Math . max ( start , end ) ;
57
56
58
57
if ( range0 !== range1 ) {
59
- range [ 0 ] = range0 ;
60
- range [ 1 ] = range1 ;
61
- result . dataBox = range ;
58
+ dataBox [ i0 ] = range0 ;
59
+ dataBox [ i0 + 2 ] = range1 ;
60
+ result . dataBox = dataBox ;
61
+ scene . setRanges ( dataBox ) ;
62
62
}
63
63
else {
64
64
scene . selectBox . selectBox = [ 0 , 0 , 1 , 1 ] ;
@@ -70,11 +70,11 @@ function createCamera(scene) {
70
70
case 'zoom' :
71
71
if ( buttons ) {
72
72
var dataX = x /
73
- ( viewBox [ 2 ] - viewBox [ 0 ] ) * ( xrange [ 1 ] - xrange [ 0 ] ) +
74
- xrange [ 0 ] ;
73
+ ( viewBox [ 2 ] - viewBox [ 0 ] ) * ( dataBox [ 2 ] - dataBox [ 0 ] ) +
74
+ dataBox [ 0 ] ;
75
75
var dataY = y /
76
- ( viewBox [ 3 ] - viewBox [ 1 ] ) * ( yrange [ 1 ] - yrange [ 0 ] ) +
77
- yrange [ 0 ] ;
76
+ ( viewBox [ 3 ] - viewBox [ 1 ] ) * ( dataBox [ 3 ] - dataBox [ 1 ] ) +
77
+ dataBox [ 1 ] ;
78
78
79
79
if ( ! result . boxEnabled ) {
80
80
result . boxStart [ 0 ] = dataX ;
@@ -87,8 +87,8 @@ function createCamera(scene) {
87
87
result . boxEnabled = true ;
88
88
}
89
89
else if ( result . boxEnabled ) {
90
- updateRange ( xrange , result . boxStart [ 0 ] , result . boxEnd [ 0 ] ) ;
91
- updateRange ( yrange , result . boxStart [ 1 ] , result . boxEnd [ 1 ] ) ;
90
+ updateRange ( 0 , result . boxStart [ 0 ] , result . boxEnd [ 0 ] ) ;
91
+ updateRange ( 1 , result . boxStart [ 1 ] , result . boxEnd [ 1 ] ) ;
92
92
unSetAutoRange ( ) ;
93
93
result . boxEnabled = false ;
94
94
}
@@ -98,15 +98,17 @@ function createCamera(scene) {
98
98
result . boxEnabled = false ;
99
99
100
100
if ( buttons ) {
101
- var dx = ( lastX - x ) * ( xrange [ 1 ] - xrange [ 0 ] ) /
101
+ var dx = ( lastX - x ) * ( dataBox [ 2 ] - dataBox [ 0 ] ) /
102
102
( plot . viewBox [ 2 ] - plot . viewBox [ 0 ] ) ;
103
- var dy = ( lastY - y ) * ( yrange [ 1 ] - yrange [ 0 ] ) /
103
+ var dy = ( lastY - y ) * ( dataBox [ 3 ] - dataBox [ 1 ] ) /
104
104
( plot . viewBox [ 3 ] - plot . viewBox [ 1 ] ) ;
105
105
106
- xrange [ 0 ] += dx ;
107
- xrange [ 1 ] += dx ;
108
- yrange [ 0 ] += dy ;
109
- yrange [ 1 ] += dy ;
106
+ dataBox [ 0 ] += dx ;
107
+ dataBox [ 2 ] += dx ;
108
+ dataBox [ 1 ] += dy ;
109
+ dataBox [ 3 ] += dy ;
110
+
111
+ scene . setRanges ( dataBox ) ;
110
112
111
113
result . lastInputTime = Date . now ( ) ;
112
114
unSetAutoRange ( ) ;
@@ -120,8 +122,7 @@ function createCamera(scene) {
120
122
} ) ;
121
123
122
124
result . wheelListener = mouseWheel ( element , function ( dx , dy ) {
123
- var xrange = scene . xaxis . range ,
124
- yrange = scene . yaxis . range ,
125
+ var dataBox = scene . calcDataBox ( ) ,
125
126
viewBox = plot . viewBox ;
126
127
127
128
var lastX = result . lastPos [ 0 ] ,
@@ -135,16 +136,18 @@ function createCamera(scene) {
135
136
var scale = Math . exp ( 0.1 * dy / ( viewBox [ 3 ] - viewBox [ 1 ] ) ) ;
136
137
137
138
var cx = lastX /
138
- ( viewBox [ 2 ] - viewBox [ 0 ] ) * ( xrange [ 1 ] - xrange [ 0 ] ) +
139
- xrange [ 0 ] ;
139
+ ( viewBox [ 2 ] - viewBox [ 0 ] ) * ( dataBox [ 2 ] - dataBox [ 0 ] ) +
140
+ dataBox [ 0 ] ;
140
141
var cy = lastY /
141
- ( viewBox [ 3 ] - viewBox [ 1 ] ) * ( yrange [ 1 ] - yrange [ 0 ] ) +
142
- yrange [ 0 ] ;
142
+ ( viewBox [ 3 ] - viewBox [ 1 ] ) * ( dataBox [ 3 ] - dataBox [ 1 ] ) +
143
+ dataBox [ 1 ] ;
144
+
145
+ dataBox [ 0 ] = ( dataBox [ 0 ] - cx ) * scale + cx ;
146
+ dataBox [ 2 ] = ( dataBox [ 2 ] - cx ) * scale + cx ;
147
+ dataBox [ 1 ] = ( dataBox [ 1 ] - cy ) * scale + cy ;
148
+ dataBox [ 3 ] = ( dataBox [ 3 ] - cy ) * scale + cy ;
143
149
144
- xrange [ 0 ] = ( xrange [ 0 ] - cx ) * scale + cx ;
145
- xrange [ 1 ] = ( xrange [ 1 ] - cx ) * scale + cx ;
146
- yrange [ 0 ] = ( yrange [ 0 ] - cy ) * scale + cy ;
147
- yrange [ 1 ] = ( yrange [ 1 ] - cy ) * scale + cy ;
150
+ scene . setRanges ( dataBox ) ;
148
151
149
152
result . lastInputTime = Date . now ( ) ;
150
153
unSetAutoRange ( ) ;
0 commit comments