(pad)
| 269 | } |
| 270 | |
| 271 | function getCachedPadPath(pad) { |
| 272 | if (!pad.path2d) { |
| 273 | // if path2d is not set, build one and cache it on pad object |
| 274 | if (pad.shape == "rect") { |
| 275 | pad.path2d = new Path2D(); |
| 276 | pad.path2d.rect(...pad.size.map(c => -c * 0.5), ...pad.size); |
| 277 | } else if (pad.shape == "oval") { |
| 278 | pad.path2d = getOblongPath(pad.size); |
| 279 | } else if (pad.shape == "circle") { |
| 280 | pad.path2d = getCirclePath(pad.size[0] / 2); |
| 281 | } else if (pad.shape == "roundrect") { |
| 282 | pad.path2d = getChamferedRectPath(pad.size, pad.radius, 0, 0); |
| 283 | } else if (pad.shape == "chamfrect") { |
| 284 | pad.path2d = getChamferedRectPath(pad.size, pad.radius, pad.chamfpos, pad.chamfratio) |
| 285 | } else if (pad.shape == "custom") { |
| 286 | pad.path2d = getPolygonsPath(pad); |
| 287 | } |
| 288 | } |
| 289 | return pad.path2d; |
| 290 | } |
| 291 | |
| 292 | function drawPad(ctx, pad, color, outline) { |
| 293 | ctx.save(); |
no test coverage detected