Skip to content

Commit 1c6b239

Browse files
authored
smaller tip corners (#2420)
* smaller tip corners * await postrender in test
1 parent 7daaa9a commit 1c6b239

File tree

3 files changed

+133
-8
lines changed

3 files changed

+133
-8
lines changed

src/marks/tip.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -281,19 +281,19 @@ function getTextTranslate(anchor, m, r, width, height) {
281281
case "middle":
282282
return [-width / 2, height / 2];
283283
case "top-left":
284-
return [r, m + r];
284+
return [r, m / 2 + r];
285285
case "top":
286286
return [-width / 2, m / 2 + r];
287287
case "top-right":
288-
return [-width - r, m + r];
288+
return [-width - r, m / 2 + r];
289289
case "right":
290290
return [-m / 2 - width - r, height / 2];
291291
case "bottom-left":
292-
return [r, -m - r];
292+
return [r, -m / 2 - r];
293293
case "bottom":
294294
return [-width / 2, -m / 2 - r];
295295
case "bottom-right":
296-
return [-width - r, -m - r];
296+
return [-width - r, -m / 2 - r];
297297
case "left":
298298
return [r + m / 2, height / 2];
299299
}
@@ -306,19 +306,19 @@ function getPath(anchor, m, r, width, height) {
306306
case "middle":
307307
return `M${-w / 2},${-h / 2}h${w}v${h}h${-w}z`;
308308
case "top-left":
309-
return `M0,0l${m},${m}h${w - m}v${h}h${-w}z`;
309+
return `M0,0l${m / 2},${m / 2}h${w - m / 2}v${h}h${-w}z`;
310310
case "top":
311311
return `M0,0l${m / 2},${m / 2}h${(w - m) / 2}v${h}h${-w}v${-h}h${(w - m) / 2}z`;
312312
case "top-right":
313-
return `M0,0l${-m},${m}h${m - w}v${h}h${w}z`;
313+
return `M0,0l${-m / 2},${m / 2}h${m / 2 - w}v${h}h${w}z`;
314314
case "right":
315315
return `M0,0l${-m / 2},${-m / 2}v${m / 2 - h / 2}h${-w}v${h}h${w}v${m / 2 - h / 2}z`;
316316
case "bottom-left":
317-
return `M0,0l${m},${-m}h${w - m}v${-h}h${-w}z`;
317+
return `M0,0l${m / 2},${-m / 2}h${w - m / 2}v${-h}h${-w}z`;
318318
case "bottom":
319319
return `M0,0l${m / 2},${-m / 2}h${(w - m) / 2}v${-h}h${-w}v${h}h${(w - m) / 2}z`;
320320
case "bottom-right":
321-
return `M0,0l${-m},${-m}h${m - w}v${-h}h${w}z`;
321+
return `M0,0l${-m / 2},${-m / 2}h${m / 2 - w}v${-h}h${w}z`;
322322
case "left":
323323
return `M0,0l${m / 2},${-m / 2}v${m / 2 - h / 2}h${w}v${h}h${-w}v${m / 2 - h / 2}z`;
324324
}

test/output/tipAnchors.svg

Lines changed: 98 additions & 0 deletions
Loading

test/plots/tip.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,33 @@ import * as d3 from "d3";
33
import {feature, mesh} from "topojson-client";
44
import {test} from "test/plot";
55

6+
test(async function tipAnchors() {
7+
const plot = Plot.plot({
8+
style: "overflow: visible;",
9+
height: 160,
10+
marks: [
11+
Plot.frame({strokeOpacity: 0.2}),
12+
(
13+
[
14+
"top",
15+
"right",
16+
"bottom",
17+
"left", // sides
18+
"top-left",
19+
"top-right",
20+
"bottom-right",
21+
"bottom-left", // corners
22+
"middle"
23+
] as const
24+
).map((anchor) => [
25+
Plot.dot({length: 1}, {frameAnchor: anchor, fill: "blue"}),
26+
Plot.tip([anchor], {frameAnchor: anchor, anchor})
27+
])
28+
]
29+
});
30+
return Object.assign(plot, {ready: new Promise((resolve) => setTimeout(resolve, 100))}); // postrender
31+
});
32+
633
test(async function tipAreaBand() {
734
const aapl = await d3.csv<any>("data/aapl.csv", d3.autoType);
835
return Plot.areaY(aapl, {x: "Date", y1: "Low", y2: "High", tip: true, curve: "step", stroke: "currentColor"}).plot();

0 commit comments

Comments
 (0)