@@ -160,17 +160,27 @@ function emptyAttributes(regl) {
160
160
return attributes ;
161
161
}
162
162
163
- function makeItem ( model , leftmost , rightmost , itemNumber , i0 , i1 , x , y , panelSizeX , panelSizeY , crossfilterDimensionIndex , drwLayer , constraints ) {
163
+ function makeItem (
164
+ model , leftmost , rightmost , itemNumber , i0 , i1 , x , y , panelSizeX , panelSizeY ,
165
+ crossfilterDimensionIndex , drwLayer , constraints , plotGlPixelRatio
166
+ ) {
164
167
var dims = [ [ ] , [ ] ] ;
165
168
for ( var k = 0 ; k < 64 ; k ++ ) {
166
169
dims [ 0 ] [ k ] = ( k === i0 ) ? 1 : 0 ;
167
170
dims [ 1 ] [ k ] = ( k === i1 ) ? 1 : 0 ;
168
171
}
169
-
170
- var overdrag = model . lines . canvasOverdrag ;
172
+ x *= plotGlPixelRatio ;
173
+ y *= plotGlPixelRatio ;
174
+ panelSizeX *= plotGlPixelRatio ;
175
+ panelSizeY *= plotGlPixelRatio ;
176
+ var overdrag = model . lines . canvasOverdrag * plotGlPixelRatio ;
171
177
var domain = model . domain ;
172
- var canvasWidth = model . canvasWidth ;
173
- var canvasHeight = model . canvasHeight ;
178
+ var canvasWidth = model . canvasWidth * plotGlPixelRatio ;
179
+ var canvasHeight = model . canvasHeight * plotGlPixelRatio ;
180
+ var padL = model . pad . l * plotGlPixelRatio ;
181
+ var padB = model . pad . b * plotGlPixelRatio ;
182
+ var layoutHeight = model . layoutHeight * plotGlPixelRatio ;
183
+ var layoutWidth = model . layoutWidth * plotGlPixelRatio ;
174
184
175
185
var deselectedLinesColor = model . deselectedLines . color ;
176
186
@@ -201,13 +211,13 @@ function makeItem(model, leftmost, rightmost, itemNumber, i0, i1, x, y, panelSiz
201
211
Math . max ( 1 / 255 , Math . pow ( 1 / model . lines . color . length , 1 / 3 ) )
202
212
] ,
203
213
204
- scissorX : ( itemNumber === leftmost ? 0 : x + overdrag ) + ( model . pad . l - overdrag ) + model . layoutWidth * domain . x [ 0 ] ,
214
+ scissorX : ( itemNumber === leftmost ? 0 : x + overdrag ) + ( padL - overdrag ) + layoutWidth * domain . x [ 0 ] ,
205
215
scissorWidth : ( itemNumber === rightmost ? canvasWidth - x + overdrag : panelSizeX + 0.5 ) + ( itemNumber === leftmost ? x + overdrag : 0 ) ,
206
- scissorY : y + model . pad . b + model . layoutHeight * domain . y [ 0 ] ,
216
+ scissorY : y + padB + layoutHeight * domain . y [ 0 ] ,
207
217
scissorHeight : panelSizeY ,
208
218
209
- viewportX : model . pad . l - overdrag + model . layoutWidth * domain . x [ 0 ] ,
210
- viewportY : model . pad . b + model . layoutHeight * domain . y [ 0 ] ,
219
+ viewportX : padL - overdrag + layoutWidth * domain . x [ 0 ] ,
220
+ viewportY : padB + layoutHeight * domain . y [ 0 ] ,
211
221
viewportWidth : canvasWidth ,
212
222
viewportHeight : canvasHeight
213
223
} , constraints ) ;
@@ -231,6 +241,16 @@ module.exports = function(canvasGL, d) {
231
241
var isPick = d . pick ;
232
242
233
243
var regl = d . regl ;
244
+ var gl = regl . _gl ;
245
+ var supportedLineWidth = gl . getParameter ( gl . ALIASED_LINE_WIDTH_RANGE ) ;
246
+ // ensure here that plotGlPixelRatio is within supported range; otherwise regl throws error
247
+ var plotGlPixelRatio = Math . max (
248
+ supportedLineWidth [ 0 ] ,
249
+ Math . min (
250
+ supportedLineWidth [ 1 ] ,
251
+ d . viewModel . plotGlPixelRatio
252
+ )
253
+ ) ;
234
254
235
255
var renderState = {
236
256
currentRafs : { } ,
@@ -307,7 +327,7 @@ module.exports = function(canvasGL, d) {
307
327
frag : fragmentShaderSource ,
308
328
309
329
primitive : 'lines' ,
310
- lineWidth : 1 ,
330
+ lineWidth : plotGlPixelRatio ,
311
331
attributes : attributes ,
312
332
uniforms : {
313
333
resolution : regl . prop ( 'resolution' ) ,
@@ -454,6 +474,7 @@ module.exports = function(canvasGL, d) {
454
474
var x = p . canvasX ;
455
475
var y = p . canvasY ;
456
476
var nextX = x + p . panelSizeX ;
477
+ var plotGlPixelRatio = p . plotGlPixelRatio ;
457
478
if ( setChanged ||
458
479
! prevAxisOrder [ i0 ] ||
459
480
prevAxisOrder [ i0 ] [ 0 ] !== x ||
@@ -467,7 +488,8 @@ module.exports = function(canvasGL, d) {
467
488
p . panelSizeX , p . panelSizeY ,
468
489
p . dim0 . crossfilterDimensionIndex ,
469
490
isContext ? 0 : isPick ? 2 : 1 ,
470
- constraints
491
+ constraints ,
492
+ plotGlPixelRatio
471
493
) ;
472
494
473
495
renderState . clearOnly = clearOnly ;
0 commit comments