67 lines
1.8 KiB
JavaScript
67 lines
1.8 KiB
JavaScript
|
import constant from "./constant.js";
|
||
|
import {withPath} from "./path.js";
|
||
|
import asterisk from "./symbol/asterisk.js";
|
||
|
import circle from "./symbol/circle.js";
|
||
|
import cross from "./symbol/cross.js";
|
||
|
import diamond from "./symbol/diamond.js";
|
||
|
import diamond2 from "./symbol/diamond2.js";
|
||
|
import plus from "./symbol/plus.js";
|
||
|
import square from "./symbol/square.js";
|
||
|
import square2 from "./symbol/square2.js";
|
||
|
import star from "./symbol/star.js";
|
||
|
import triangle from "./symbol/triangle.js";
|
||
|
import triangle2 from "./symbol/triangle2.js";
|
||
|
import wye from "./symbol/wye.js";
|
||
|
import times from "./symbol/times.js";
|
||
|
|
||
|
// These symbols are designed to be filled.
|
||
|
export const symbolsFill = [
|
||
|
circle,
|
||
|
cross,
|
||
|
diamond,
|
||
|
square,
|
||
|
star,
|
||
|
triangle,
|
||
|
wye
|
||
|
];
|
||
|
|
||
|
// These symbols are designed to be stroked (with a width of 1.5px and round caps).
|
||
|
export const symbolsStroke = [
|
||
|
circle,
|
||
|
plus,
|
||
|
times,
|
||
|
triangle2,
|
||
|
asterisk,
|
||
|
square2,
|
||
|
diamond2
|
||
|
];
|
||
|
|
||
|
export default function Symbol(type, size) {
|
||
|
let context = null,
|
||
|
path = withPath(symbol);
|
||
|
|
||
|
type = typeof type === "function" ? type : constant(type || circle);
|
||
|
size = typeof size === "function" ? size : constant(size === undefined ? 64 : +size);
|
||
|
|
||
|
function symbol() {
|
||
|
let buffer;
|
||
|
if (!context) context = buffer = path();
|
||
|
type.apply(this, arguments).draw(context, +size.apply(this, arguments));
|
||
|
if (buffer) return context = null, buffer + "" || null;
|
||
|
}
|
||
|
|
||
|
symbol.type = function(_) {
|
||
|
return arguments.length ? (type = typeof _ === "function" ? _ : constant(_), symbol) : type;
|
||
|
};
|
||
|
|
||
|
symbol.size = function(_) {
|
||
|
return arguments.length ? (size = typeof _ === "function" ? _ : constant(+_), symbol) : size;
|
||
|
};
|
||
|
|
||
|
symbol.context = function(_) {
|
||
|
return arguments.length ? (context = _ == null ? null : _, symbol) : context;
|
||
|
};
|
||
|
|
||
|
return symbol;
|
||
|
}
|