|
2020 | 2020 | none: () => undefined, |
2021 | 2021 | some: (opaqueImg) => imageToCanvas(opaqueImg.val) |
2022 | 2022 | }), |
| 2023 | + imageWidth: cases(RUNTIME.ffi.isOption, 'Option', get(p, 'image'), { |
| 2024 | + none: () => undefined, |
| 2025 | + some: (opaqueImg) => opaqueImg.val.getWidth() |
| 2026 | + }), |
| 2027 | + imageHeight: cases(RUNTIME.ffi.isOption, 'Option', get(p, 'image'), { |
| 2028 | + none: () => undefined, |
| 2029 | + some: (opaqueImg) => opaqueImg.val.getHeight() |
| 2030 | + }), |
2023 | 2031 | imageOffsetX: cases(RUNTIME.ffi.isOption, 'Option', get(p, 'image'), { |
2024 | 2032 | none: () => undefined, |
2025 | 2033 | some: (opaqueImg) => opaqueImg.val.getPinholeX() / opaqueImg.val.getWidth() |
|
2162 | 2170 | signal: `{ title: "${legend}", Label: datum.label, x: datum.x, y: datum.y }` }, |
2163 | 2171 | { signal: `{ title: "${legend}", x: datum.x, y: datum.y }` }, |
2164 | 2172 | ]; |
| 2173 | + const imageScaleFactorX = autosizeImage ? '-datum.imageWidth' : -pointSize; |
| 2174 | + const imageScaleFactorY = autosizeImage ? '-datum.imageHeight' : -pointSize; |
2165 | 2175 | marks.push({ |
2166 | 2176 | type: 'image', |
2167 | 2177 | from: { data: `${prefix}images` }, |
|
2174 | 2184 | tooltip: tooltips |
2175 | 2185 | }, |
2176 | 2186 | update: { |
2177 | | - x: { scale: `xscale`, field: 'x', offset: { signal: `${-pointSize} * datum.imageOffsetX` } }, |
2178 | | - y: { scale: `yscale`, field: 'y', offset: { signal: `${-pointSize} * datum.imageOffsetY` } }, |
| 2187 | + x: { scale: `xscale`, field: 'x', offset: { signal: `${imageScaleFactorX} * datum.imageOffsetX` } }, |
| 2188 | + y: { scale: `yscale`, field: 'y', offset: { signal: `${imageScaleFactorY} * datum.imageOffsetY` } }, |
2179 | 2189 | stroke: { signal: `hoveredLegend === '${prefix}' ? 'white' : '${color}'` }, |
2180 | 2190 | strokeWidth: { signal: `(hoveredLegend === '${prefix}' ? 1 : 0)` }, |
2181 | 2191 | zindex: { signal: `hoveredLegend === '${prefix}' ? 1 : null` } |
|
0 commit comments