UNPKG

html2canvas-pro

Version:

Screenshots with JavaScript. Next generation!

59 lines (58 loc) 2.46 kB
import { ElementPaint, StackingContext } from '../stacking-context'; import { Color } from '../../css/types/color'; import { ElementContainer } from '../../dom/element-container'; import { Path } from '../path'; import { BoundCurves } from '../bound-curves'; import { ReplacedElementContainer } from '../../dom/replaced-elements'; import { Renderer } from '../renderer'; import { Context } from '../../core/context'; export type RenderConfigurations = RenderOptions & { backgroundColor: Color | null; /** * Enable/disable image smoothing (anti-aliasing). * When disabled, images are rendered with pixel-perfect sharpness (no interpolation). * CSS `image-rendering` property on individual elements takes precedence. * @default browser default (usually true) */ imageSmoothing?: boolean; /** * Image smoothing quality level when imageSmoothing is enabled. * Higher quality may be slower for large images. * Only supported in modern browsers (Chrome 54+, Firefox 94+, Safari 17+). * Falls back gracefully in older browsers. * @default browser default */ imageSmoothingQuality?: 'low' | 'medium' | 'high'; }; export interface RenderOptions { scale: number; canvas?: HTMLCanvasElement; x: number; y: number; width: number; height: number; } export declare class CanvasRenderer extends Renderer { canvas: HTMLCanvasElement; ctx: CanvasRenderingContext2D; private readonly fontMetrics; private readonly backgroundRenderer; private readonly borderRenderer; private readonly effectsRenderer; private readonly textRenderer; constructor(context: Context, options: RenderConfigurations); renderStack(stack: StackingContext): Promise<void>; renderNode(paint: ElementPaint): Promise<void>; /** * Helper method to render text with paint order support * Reduces code duplication in line-clamp and normal rendering */ renderReplacedElement(container: ReplacedElementContainer, curves: BoundCurves, image: HTMLImageElement | HTMLCanvasElement): void; renderNodeContent(paint: ElementPaint): Promise<void>; renderStackContent(stack: StackingContext): Promise<void>; mask(paths: Path[]): void; path(paths: Path[]): void; formatPath(paths: Path[]): void; renderNodeBackgroundAndBorders(paint: ElementPaint): Promise<void>; render(element: ElementContainer): Promise<HTMLCanvasElement>; }