@minofrk/xelto-diagram-canvas
Version:
An implementation of <xelto-diagram> in TypeScript.
28 lines (25 loc) • 809 B
text/typescript
import { LeftTopAlignedArea, Point, CenterAlignedArea } from '../../types';
import { getMaxScale } from '../scale';
import { times, plus } from '../../point-ops';
export default function getPhysicalValues(
{
virtualArea,
virtualFontSize,
}: {
virtualArea: LeftTopAlignedArea;
virtualFontSize: number;
},
canvasSize: Point,
): CenterAlignedArea & { scale: number; fontSize: number } {
const physicalScale = getMaxScale(canvasSize);
const physicalSize = times(virtualArea.size, physicalScale);
return {
size: physicalSize,
center: plus(
times(virtualArea.leftTop, physicalScale),
times(physicalSize, 1 / 2),
),
scale: physicalScale,
fontSize: virtualFontSize * physicalScale,
};
}