(d, trace)
| 461 | var SYMBOL_SVG_CIRCLE = Drawing.symbolFuncs[0](SYMBOL_SIZE * 0.05); |
| 462 | |
| 463 | function getSymbolSdf(d, trace) { |
| 464 | var symbol = d.mx; |
| 465 | if (symbol === 'circle') return null; |
| 466 | |
| 467 | var symbolPath, symbolSdf; |
| 468 | var symbolNumber = Drawing.symbolNumber(symbol); |
| 469 | var symbolFunc = Drawing.symbolFuncs[symbolNumber % 100]; |
| 470 | var symbolNoDot = !!Drawing.symbolNoDot[symbolNumber % 100]; |
| 471 | var symbolNoFill = !!Drawing.symbolNoFill[symbolNumber % 100]; |
| 472 | |
| 473 | var isDot = helpers.isDotSymbol(symbol); |
| 474 | |
| 475 | // until we may handle angles in shader? |
| 476 | if (d.ma) symbol += '_' + d.ma; |
| 477 | |
| 478 | // get symbol sdf from cache or generate it |
| 479 | if (SYMBOL_SDF[symbol]) return SYMBOL_SDF[symbol]; |
| 480 | |
| 481 | var angle = Drawing.getMarkerAngle(d, trace); |
| 482 | if (isDot && !symbolNoDot) { |
| 483 | symbolPath = symbolFunc(SYMBOL_SIZE * 1.1, angle) + SYMBOL_SVG_CIRCLE; |
| 484 | } else { |
| 485 | symbolPath = symbolFunc(SYMBOL_SIZE, angle); |
| 486 | } |
| 487 | |
| 488 | symbolSdf = svgSdf(symbolPath, { |
| 489 | w: SYMBOL_SDF_SIZE, |
| 490 | h: SYMBOL_SDF_SIZE, |
| 491 | viewBox: [-SYMBOL_SIZE, -SYMBOL_SIZE, SYMBOL_SIZE, SYMBOL_SIZE], |
| 492 | stroke: symbolNoFill ? SYMBOL_STROKE : -SYMBOL_STROKE |
| 493 | }); |
| 494 | |
| 495 | SYMBOL_SDF[symbol] = symbolSdf; |
| 496 | |
| 497 | return symbolSdf || null; |
| 498 | } |
| 499 | |
| 500 | function convertLinePositions(gd, trace, positions) { |
| 501 | var len = positions.length; |
no outgoing calls
no test coverage detected
searching dependent graphs…