UNPKG

fabric

Version:

Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.

1 lines 7.41 kB
{"version":3,"file":"config.mjs","sources":["../../src/config.ts"],"sourcesContent":["export type TConfiguration = Partial<BaseConfiguration>;\n\nclass BaseConfiguration {\n /**\n * Browser-specific constant to adjust CanvasRenderingContext2D.shadowBlur value,\n * which is unitless and not rendered equally across browsers.\n *\n * Values that work quite well (as of October 2017) are:\n * - Chrome: 1.5\n * - Edge: 1.75\n * - Firefox: 0.9\n * - Safari: 0.95\n *\n * @since 2.0.0\n * @type Number\n * @default 1\n */\n browserShadowBlurConstant = 1;\n\n /**\n * Pixel per Inch as a default value set to 96. Can be changed for more realistic conversion.\n */\n DPI = 96;\n\n /**\n * Device Pixel Ratio\n * @see https://developer.apple.com/library/safari/documentation/AudioVideo/Conceptual/HTML-canvas-guide/SettingUptheCanvas/SettingUptheCanvas.html\n */\n devicePixelRatio =\n typeof window !== 'undefined' ? window.devicePixelRatio : 1; // eslint-disable-line no-restricted-globals\n\n /**\n * Pixel limit for cache canvases. 1Mpx , 4Mpx should be fine.\n * @since 1.7.14\n * @type Number\n */\n perfLimitSizeTotal = 2097152;\n\n /**\n * Pixel limit for cache canvases width or height. IE fixes the maximum at 5000\n * @since 1.7.14\n * @type Number\n */\n maxCacheSideLimit = 4096;\n\n /**\n * Lowest pixel limit for cache canvases, set at 256PX\n * @since 1.7.14\n * @type Number\n */\n minCacheSideLimit = 256;\n\n /**\n * When 'true', style information is not retained when copy/pasting text, making\n * pasted text use destination style.\n * Defaults to 'false'.\n * @type Boolean\n * @deprecated\n */\n disableStyleCopyPaste = false;\n\n /**\n * Enable webgl for filtering picture is available\n * A filtering backend will be initialized, this will both take memory and\n * time since a default 2048x2048 canvas will be created for the gl context\n * @since 2.0.0\n * @type Boolean\n */\n enableGLFiltering = true;\n\n /**\n * if webgl is enabled and available, textureSize will determine the size\n * of the canvas backend\n *\n * In order to support old hardware set to `2048` to avoid OOM\n *\n * @since 2.0.0\n * @type Number\n */\n textureSize = 4096;\n\n /**\n * Skip performance testing of setupGLContext and force the use of putImageData that seems to be the one that works best on\n * Chrome + old hardware. if your users are experiencing empty images after filtering you may try to force this to true\n * this has to be set before instantiating the filtering backend ( before filtering the first image )\n * @type Boolean\n * @default false\n */\n forceGLPutImageData = false;\n\n /**\n * If disabled boundsOfCurveCache is not used. For apps that make heavy usage of pencil drawing probably disabling it is better\n * With the standard behaviour of fabric to translate all curves in absolute commands and by not subtracting the starting point from\n * the curve is very hard to hit any cache.\n * Enable only if you know why it could be useful.\n * Candidate for removal/simplification\n * @default false\n */\n cachesBoundsOfCurve = false;\n\n /**\n * Map of font files\n * Map<fontFamily, pathToFile> of font files\n */\n fontPaths: Record</** fontFamily */ string, /** pathToFile */ string> = {};\n\n /**\n * Defines the number of fraction digits to use when serializing object values.\n * Used in exporting methods (`toObject`, `toJSON`, `toSVG`)\n * You can use it to increase/decrease precision of such values like left, top, scaleX, scaleY, etc.\n */\n NUM_FRACTION_DIGITS = 4;\n}\n\nexport class Configuration extends BaseConfiguration {\n constructor(config?: TConfiguration) {\n super();\n this.configure(config);\n }\n\n configure(config: TConfiguration = {}) {\n Object.assign(this, config);\n }\n\n /**\n * Map<fontFamily, pathToFile> of font files\n */\n addFonts(\n paths: Record</** fontFamily */ string, /** pathToFile */ string> = {},\n ) {\n this.fontPaths = {\n ...this.fontPaths,\n ...paths,\n };\n }\n\n removeFonts(fontFamilys: string[] = []) {\n fontFamilys.forEach((fontFamily) => {\n delete this.fontPaths[fontFamily];\n });\n }\n\n clearFonts() {\n this.fontPaths = {};\n }\n\n restoreDefaults<T extends BaseConfiguration>(keys?: (keyof T)[]) {\n const defaults = new BaseConfiguration() as T;\n const config =\n keys?.reduce((acc, key) => {\n acc[key] = defaults[key];\n return acc;\n }, {} as T) || defaults;\n this.configure(config);\n }\n}\n\nexport const config = new Configuration();\n"],"names":["BaseConfiguration","constructor","_defineProperty","window","devicePixelRatio","Configuration","config","configure","arguments","length","undefined","Object","assign","addFonts","paths","fontPaths","removeFonts","fontFamilys","forEach","fontFamily","clearFonts","restoreDefaults","keys","defaults","reduce","acc","key"],"mappings":"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"}