4
0
Quellcode durchsuchen

forcegraph: node shadow hi-dpi fix

Nils Schneider vor 8 Jahren
Ursprung
Commit
22e2c6d3c5
1 geänderte Dateien mit 10 neuen und 9 gelöschten Zeilen
  1. 10 9
      lib/forcegraph.js

+ 10 - 9
lib/forcegraph.js

@@ -252,6 +252,7 @@ define(["d3"], function (d3) {
     }
 
     function redraw() {
+      var r = window.devicePixelRatio
       var translate = zoomBehavior.translate()
       var scale = zoomBehavior.scale()
       var links = intLinks.filter(visibleLinks)
@@ -307,11 +308,11 @@ define(["d3"], function (d3) {
       // -- draw nodes --
 
       var node = document.createElement("canvas")
-      node.width = scale * nodeRadius * 8
+      node.width = scale * nodeRadius * 8 * r
       node.height = node.width
 
       var nctx = node.getContext("2d")
-      nctx.scale(scale, scale)
+      nctx.scale(scale * r, scale * r)
       nctx.save()
 
       nctx.translate(-node.width / scale, -node.height / scale)
@@ -324,17 +325,17 @@ define(["d3"], function (d3) {
       nctx.strokeStyle = "rgba(255, 0, 0, 1)"
       nctx.shadowOffsetX = node.width * 1.5 + 0
       nctx.shadowOffsetY = node.height * 1.5 + 3
-      nctx.shadowBlur = 6
-      nctx.shadowColor = "rgba(0, 0, 0, 0.32)"
+      nctx.shadowBlur = 12
+      nctx.shadowColor = "rgba(0, 0, 0, 0.16)"
       nctx.stroke()
       nctx.shadowOffsetX = node.width * 1.5 + 0
       nctx.shadowOffsetY = node.height * 1.5 + 3
-      nctx.shadowBlur = 6
-      nctx.shadowColor = "rgba(0, 0, 0, 0.46)"
+      nctx.shadowBlur = 12
+      nctx.shadowColor = "rgba(0, 0, 0, 0.23)"
       nctx.stroke()
 
       nctx.restore()
-      nctx.translate(node.width / 2 / scale, node.height / 2 / scale)
+      nctx.translate(node.width / 2 / scale / r, node.height / 2 / scale / r)
 
       nctx.beginPath()
       nctx.moveTo(nodeRadius, 0)
@@ -345,9 +346,9 @@ define(["d3"], function (d3) {
       nctx.stroke()
 
       ctx.save()
-      ctx.scale(1 / scale, 1 / scale)
+      ctx.scale(1 / scale / r, 1 / scale / r)
       nodes.filter(visibleNodes).forEach(function (d) {
-        ctx.drawImage(node, scale * d.x - node.width / 2, scale * d.y - node.height / 2)
+        ctx.drawImage(node, scale * r * d.x - node.width / 2, scale * r * d.y - node.height / 2)
       })
       ctx.restore()