(layer)
| 302 | } |
| 303 | |
| 304 | function saveImage(layer) { |
| 305 | var width = validateSaveImgDimension(document.getElementById("render-save-width")); |
| 306 | var height = validateSaveImgDimension(document.getElementById("render-save-height")); |
| 307 | var bgcolor = null; |
| 308 | if (!document.getElementById("render-save-transparent").checked) { |
| 309 | var style = getComputedStyle(topmostdiv); |
| 310 | bgcolor = style.getPropertyValue("background-color"); |
| 311 | } |
| 312 | if (!width || !height) return; |
| 313 | |
| 314 | // Prepare image |
| 315 | var canvas = document.createElement("canvas"); |
| 316 | var layerdict = { |
| 317 | transform: { |
| 318 | x: 0, |
| 319 | y: 0, |
| 320 | s: 1, |
| 321 | panx: 0, |
| 322 | pany: 0, |
| 323 | zoom: 1, |
| 324 | }, |
| 325 | bg: canvas, |
| 326 | fab: canvas, |
| 327 | silk: canvas, |
| 328 | highlight: canvas, |
| 329 | layer: layer, |
| 330 | } |
| 331 | // Do the rendering |
| 332 | recalcLayerScale(layerdict, width, height); |
| 333 | prepareLayer(layerdict); |
| 334 | clearCanvas(canvas, bgcolor); |
| 335 | drawBackground(layerdict, false); |
| 336 | drawHighlightsOnLayer(layerdict, false); |
| 337 | |
| 338 | // Save image |
| 339 | var imgdata = canvas.toDataURL("image/png"); |
| 340 | |
| 341 | var filename = pcbdata.metadata.title; |
| 342 | if (pcbdata.metadata.revision) { |
| 343 | filename += `.${pcbdata.metadata.revision}`; |
| 344 | } |
| 345 | filename += `.${layer}.png`; |
| 346 | saveFile(filename, dataURLtoBlob(imgdata)); |
| 347 | } |
| 348 | |
| 349 | function saveSettings() { |
| 350 | var data = { |
nothing calls this directly
no test coverage detected