8
8
9
9
'use strict' ;
10
10
11
- var createREGL = require ( 'regl' ) ;
12
11
var glslify = require ( 'glslify' ) ;
13
- var verticalPadding = require ( './constants' ) . verticalPadding ;
12
+ var c = require ( './constants' ) ;
14
13
var vertexShaderSource = glslify ( './shaders/vertex.glsl' ) ;
15
14
var pickVertexShaderSource = glslify ( './shaders/pick_vertex.glsl' ) ;
16
15
var fragmentShaderSource = glslify ( './shaders/fragment.glsl' ) ;
@@ -165,7 +164,19 @@ function valid(i, offset, panelCount) {
165
164
return i + offset <= panelCount ;
166
165
}
167
166
168
- module . exports = function ( canvasGL , lines , canvasWidth , canvasHeight , initialDimensions , initialPanels , unitToColor , context , pick , scatter ) {
167
+ module . exports = module . exports = function ( canvasGL , d , scatter ) {
168
+ var model = d . model ,
169
+ vm = d . viewModel ,
170
+ domain = model . domain ;
171
+
172
+ var lines = model . lines ,
173
+ canvasWidth = model . canvasWidth ,
174
+ canvasHeight = model . canvasHeight ,
175
+ initialDimensions = vm . dimensions ,
176
+ initialPanels = vm . panels ,
177
+ unitToColor = model . unitToColor ,
178
+ context = d . context ,
179
+ pick = d . pick ;
169
180
170
181
var renderState = {
171
182
currentRafs : { } ,
@@ -189,13 +200,7 @@ module.exports = function(canvasGL, lines, canvasWidth, canvasHeight, initialDim
189
200
var points = makePoints ( sampleCount , dimensionCount , initialDims , color ) ;
190
201
var attributes = makeAttributes ( sampleCount , points ) ;
191
202
192
- var regl = createREGL ( {
193
- canvas : canvasGL ,
194
- attributes : {
195
- preserveDrawingBuffer : true ,
196
- antialias : ! pick
197
- }
198
- } ) ;
203
+ var regl = d . regl ;
199
204
200
205
var paletteTexture = regl . texture ( {
201
206
shape : [ 256 , 1 ] ,
@@ -248,6 +253,13 @@ module.exports = function(canvasGL, lines, canvasWidth, canvasHeight, initialDim
248
253
}
249
254
} ,
250
255
256
+ viewport : {
257
+ x : regl . prop ( 'viewportX' ) ,
258
+ y : regl . prop ( 'viewportY' ) ,
259
+ width : regl . prop ( 'viewportWidth' ) ,
260
+ height : regl . prop ( 'viewportHeight' )
261
+ } ,
262
+
251
263
dither : false ,
252
264
253
265
vert : pick ? pickVertexShaderSource : vertexShaderSource ,
@@ -297,7 +309,7 @@ module.exports = function(canvasGL, lines, canvasWidth, canvasHeight, initialDim
297
309
function makeItem ( i , ii , x , y , panelSizeX , canvasPanelSizeY , crossfilterDimensionIndex , scatter , I , leftmost , rightmost ) {
298
310
var loHi , abcd , d , index ;
299
311
var leftRight = [ i , ii ] ;
300
- var filterEpsilon = verticalPadding / canvasPanelSizeY ;
312
+ var filterEpsilon = c . verticalPadding / canvasPanelSizeY ;
301
313
302
314
var dims = [ 0 , 1 ] . map ( function ( ) { return [ 0 , 1 , 2 , 3 ] . map ( function ( ) { return new Float32Array ( 16 ) ; } ) ; } ) ;
303
315
var lims = [ 0 , 1 ] . map ( function ( ) { return [ 0 , 1 , 2 , 3 ] . map ( function ( ) { return new Float32Array ( 16 ) ; } ) ; } ) ;
@@ -341,10 +353,15 @@ module.exports = function(canvasGL, lines, canvasWidth, canvasHeight, initialDim
341
353
342
354
colorClamp : colorClamp ,
343
355
scatter : scatter || 0 ,
344
- scissorX : I === leftmost ? 0 : x + overdrag ,
356
+ scissorX : ( I === leftmost ? 0 : x + overdrag ) + ( model . pad . l - overdrag ) + model . layoutWidth * domain . x [ 0 ] ,
345
357
scissorWidth : ( I === rightmost ? canvasWidth - x + overdrag : panelSizeX + 0.5 ) + ( I === leftmost ? x + overdrag : 0 ) ,
346
- scissorY : y ,
347
- scissorHeight : canvasPanelSizeY
358
+ scissorY : y + model . pad . b + model . layoutHeight * domain . y [ 0 ] ,
359
+ scissorHeight : canvasPanelSizeY ,
360
+
361
+ viewportX : model . pad . l - overdrag + model . layoutWidth * domain . x [ 0 ] ,
362
+ viewportY : model . pad . b + model . layoutHeight * domain . y [ 0 ] ,
363
+ viewportWidth : canvasWidth ,
364
+ viewportHeight : canvasHeight
348
365
} ;
349
366
}
350
367
@@ -413,11 +430,15 @@ module.exports = function(canvasGL, lines, canvasWidth, canvasHeight, initialDim
413
430
return pixelArray ;
414
431
}
415
432
433
+ function destroy ( ) {
434
+ paletteTexture . destroy ( ) ;
435
+ }
436
+
416
437
return {
417
438
setColorDomain : setColorDomain ,
418
439
render : renderGLParcoords ,
419
440
readPixel : readPixel ,
420
441
readPixels : readPixels ,
421
- destroy : regl . destroy
442
+ destroy : destroy
422
443
} ;
423
444
} ;
0 commit comments