UNPKG

vega-scenegraph

Version:

Vega scenegraph and renderers.

40 lines (32 loc) 931 B
import blend from './blend'; import fill from './fill'; import stroke from './stroke'; import {visit} from '../visit'; export function drawAll(path) { return function(context, scene, bounds) { visit(scene, item => { if (!bounds || bounds.intersects(item.bounds)) { drawPath(path, context, item, item); } }); }; } export function drawOne(path) { return function(context, scene, bounds) { if (scene.items.length && (!bounds || bounds.intersects(scene.bounds))) { drawPath(path, context, scene.items[0], scene.items); } }; } function drawPath(path, context, item, items) { var opacity = item.opacity == null ? 1 : item.opacity; if (opacity === 0) return; if (path(context, items)) return; blend(context, item); if (item.fill && fill(context, item, opacity)) { context.fill(); } if (item.stroke && stroke(context, item, opacity)) { context.stroke(); } }