7288c6f641
closes #279 closes #284 实现: 从2(暂定)倍放大绘制的画布scale 0.5* 真正的scale before:   after:   svg看起来stroke窄了一点点, 可以接受 Reviewed-on: #285
17 lines
654 B
TypeScript
17 lines
654 B
TypeScript
import type { CanvasViewport } from '@genarrative/image-canvas-core';
|
|
|
|
export const CANVAS_RENDER_SUPERSAMPLE = 2;
|
|
|
|
/** 将 viewport scale 规范化为可用于渲染和反向缩放的正有限值。 */
|
|
export function getSafeViewportScale(viewport: CanvasViewport) {
|
|
return Number.isFinite(viewport.scale) && viewport.scale > 0
|
|
? viewport.scale
|
|
: 1;
|
|
}
|
|
|
|
/** 将逻辑 viewport 转换为 world 的渲染 transform。 */
|
|
export function canvasViewportToWorldTransform(viewport: CanvasViewport) {
|
|
const scale = getSafeViewportScale(viewport);
|
|
return `translate(${viewport.x}px, ${viewport.y}px) scale(${scale / CANVAS_RENDER_SUPERSAMPLE})`;
|
|
}
|