import {SVGTemplateResult, svg} from 'lit';
export interface Tickmark {
angle: number;
type: TickmarkType;
text?: string;
}
export enum TickmarkType {
main = 'main',
primary = 'primary',
secondary = 'secondary',
tertiary = 'tertiary',
}
export enum TickmarkStyle {
hinted = 'hinted',
regular = 'regular',
enhanced = 'enhanced',
}
export function tickmarkColor(style: TickmarkStyle): string {
if (style === TickmarkStyle.hinted) {
return 'var(--instrument-frame-tertiary-color)';
} else if (style === TickmarkStyle.regular) {
return 'var(--instrument-tick-mark-secondary-color)';
} else {
return 'var(--instrument-tick-mark-primary-color)';
}
}
export function tickmark(
angle: number,
tickmarkSize: TickmarkType,
style: TickmarkStyle,
text?: string
): SVGTemplateResult | SVGTemplateResult[] {
const textHeight = -32;
let lineStartY: number = -35;
let lineEndY: number = -34;
if (tickmarkSize === TickmarkType.secondary) {
lineStartY = -24;
lineEndY = lineStartY + 8;
} else if (tickmarkSize === TickmarkType.main) {
lineEndY = lineStartY + 20;
} else if (tickmarkSize === TickmarkType.tertiary) {
throw new Error('Tertiary tickmarks are not supported');
}
const colorName = tickmarkColor(style);
const tick = svg``;
if (text) {
const textY = lineEndY + textHeight;
return [
tick,
svg`${text}`,
];
}
return tick;
}