fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
30 lines (27 loc) • 1.12 kB
text/typescript
import type { TSize } from '../../typedefs';
/**
* Finds the scale for the object source to fit inside the object destination,
* keeping aspect ratio intact.
* respect the total allowed area for the cache.
* @param {TSize} source natural unscaled size of the object
* @param {TSize} destination natural unscaled size of the object
* @return {Number} scale factor to apply to source to fit into destination
*/
export const findScaleToFit = (source: TSize, destination: TSize) =>
Math.min(
destination.width / source.width,
destination.height / source.height,
);
/**
* Finds the scale for the object source to cover entirely the object destination,
* keeping aspect ratio intact.
* respect the total allowed area for the cache.
* @param {TSize} source natural unscaled size of the object
* @param {TSize} destination natural unscaled size of the object
* @return {Number} scale factor to apply to source to cover destination
*/
export const findScaleToCover = (source: TSize, destination: TSize) =>
Math.max(
destination.width / source.width,
destination.height / source.height,
);