import type { GPUVegaCanvasContext } from '../types/context.js'; import type { PathGeometry } from '../types/geometry.js'; import type { SceneAreaItem } from '../types/scene.js'; import { type MarkModule } from './util.js'; /** The whole mark's shape, built from every one of its items. */ type ShapeOf = (ctx: GPUVegaCanvasContext, items: SceneAreaItem[], scale?: number) => PathGeometry; interface OneShapeMark { type: string; /** Labels this mark's pipelines, buffers and bind groups. */ name: string; shapeOf: ShapeOf; /** * Whether the stroke is resolved through a coverage mask before it is * composited. vega writes one closed contour per trail segment and * consecutive contours overlap, so two antialiased fringes land on the same * pixel where canvas fills the union of the bands once. An area is a single * contour and needs no such pass. */ maskOutline: boolean; } /** * area and trail are the two marks whose items are one shape rather than one * each: the mark carries a single set of styles, the fill is one * triangulation, and the stroke is one walk of its contours. */ export declare function oneShapeMark({ type, name, shapeOf, maskOutline }: OneShapeMark): MarkModule; export {};