@@ -160,17 +160,27 @@ function emptyAttributes(regl) {
160160 return attributes ;
161161}
162162
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+ ) {
164167 var dims = [ [ ] , [ ] ] ;
165168 for ( var k = 0 ; k < 64 ; k ++ ) {
166169 dims [ 0 ] [ k ] = ( k === i0 ) ? 1 : 0 ;
167170 dims [ 1 ] [ k ] = ( k === i1 ) ? 1 : 0 ;
168171 }
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 ;
171177 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 ;
174184
175185 var deselectedLinesColor = model . deselectedLines . color ;
176186
@@ -201,13 +211,13 @@ function makeItem(model, leftmost, rightmost, itemNumber, i0, i1, x, y, panelSiz
201211 Math . max ( 1 / 255 , Math . pow ( 1 / model . lines . color . length , 1 / 3 ) )
202212 ] ,
203213
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 ] ,
205215 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 ] ,
207217 scissorHeight : panelSizeY ,
208218
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 ] ,
211221 viewportWidth : canvasWidth ,
212222 viewportHeight : canvasHeight
213223 } , constraints ) ;
@@ -231,6 +241,16 @@ module.exports = function(canvasGL, d) {
231241 var isPick = d . pick ;
232242
233243 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+ ) ;
234254
235255 var renderState = {
236256 currentRafs : { } ,
@@ -307,7 +327,7 @@ module.exports = function(canvasGL, d) {
307327 frag : fragmentShaderSource ,
308328
309329 primitive : 'lines' ,
310- lineWidth : 1 ,
330+ lineWidth : plotGlPixelRatio ,
311331 attributes : attributes ,
312332 uniforms : {
313333 resolution : regl . prop ( 'resolution' ) ,
@@ -454,6 +474,7 @@ module.exports = function(canvasGL, d) {
454474 var x = p . canvasX ;
455475 var y = p . canvasY ;
456476 var nextX = x + p . panelSizeX ;
477+ var plotGlPixelRatio = p . plotGlPixelRatio ;
457478 if ( setChanged ||
458479 ! prevAxisOrder [ i0 ] ||
459480 prevAxisOrder [ i0 ] [ 0 ] !== x ||
@@ -467,7 +488,8 @@ module.exports = function(canvasGL, d) {
467488 p . panelSizeX , p . panelSizeY ,
468489 p . dim0 . crossfilterDimensionIndex ,
469490 isContext ? 0 : isPick ? 2 : 1 ,
470- constraints
491+ constraints ,
492+ plotGlPixelRatio
471493 ) ;
472494
473495 renderState . clearOnly = clearOnly ;
0 commit comments