html2canvas-pro
Version:
Screenshots with JavaScript. Next generation!
59 lines (58 loc) • 2.46 kB
TypeScript
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>;
}