UNPKG

fabric

Version:

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

1 lines 3.33 kB
{"version":3,"file":"WebGLProbe.mjs","sources":["../../../../src/filters/GLProbes/WebGLProbe.ts"],"sourcesContent":["import { log } from '../../util/internals/console';\nimport { GLProbe } from './GLProbe';\nimport type { GLPrecision } from './GLProbe';\n\n/**\n * Lazy initialize WebGL constants\n */\nexport class WebGLProbe extends GLProbe {\n declare maxTextureSize?: number;\n\n /**\n * Tests if webgl supports certain precision\n * @param {WebGL} Canvas WebGL context to test on\n * @param {GLPrecision} Precision to test can be any of following\n * @returns {Boolean} Whether the user's browser WebGL supports given precision.\n */\n private testPrecision(\n gl: WebGLRenderingContext,\n precision: GLPrecision,\n ): boolean {\n const fragmentSource = `precision ${precision} float;\\nvoid main(){}`;\n const fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\n if (!fragmentShader) {\n return false;\n }\n gl.shaderSource(fragmentShader, fragmentSource);\n gl.compileShader(fragmentShader);\n return !!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS);\n }\n\n /**\n * query browser for WebGL\n */\n queryWebGL(canvas: HTMLCanvasElement) {\n const gl = canvas.getContext('webgl');\n if (gl) {\n this.maxTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE);\n this.GLPrecision = (['highp', 'mediump', 'lowp'] as const).find(\n (precision) => this.testPrecision(gl, precision),\n );\n gl.getExtension('WEBGL_lose_context')!.loseContext();\n log('log', `WebGL: max texture size ${this.maxTextureSize}`);\n }\n }\n\n isSupported(textureSize: number) {\n return !!this.maxTextureSize && this.maxTextureSize >= textureSize;\n }\n}\n"],"names":["WebGLProbe","GLProbe","testPrecision","gl","precision","fragmentSource","concat","fragmentShader","createShader","FRAGMENT_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","queryWebGL","canvas","getContext","maxTextureSize","getParameter","MAX_TEXTURE_SIZE","GLPrecision","find","getExtension","loseContext","log","isSupported","textureSize"],"mappings":";;;AAIA;AACA;AACA;AACO,MAAMA,UAAU,SAASC,OAAO,CAAC;AAGtC;AACF;AACA;AACA;AACA;AACA;AACUC,EAAAA,aAAaA,CACnBC,EAAyB,EACzBC,SAAsB,EACb;AACT,IAAA,MAAMC,cAAc,GAAA,YAAA,CAAAC,MAAA,CAAgBF,SAAS,EAAwB,wBAAA,CAAA,CAAA;IACrE,MAAMG,cAAc,GAAGJ,EAAE,CAACK,YAAY,CAACL,EAAE,CAACM,eAAe,CAAC,CAAA;IAC1D,IAAI,CAACF,cAAc,EAAE;AACnB,MAAA,OAAO,KAAK,CAAA;AACd,KAAA;AACAJ,IAAAA,EAAE,CAACO,YAAY,CAACH,cAAc,EAAEF,cAAc,CAAC,CAAA;AAC/CF,IAAAA,EAAE,CAACQ,aAAa,CAACJ,cAAc,CAAC,CAAA;IAChC,OAAO,CAAC,CAACJ,EAAE,CAACS,kBAAkB,CAACL,cAAc,EAAEJ,EAAE,CAACU,cAAc,CAAC,CAAA;AACnE,GAAA;;AAEA;AACF;AACA;EACEC,UAAUA,CAACC,MAAyB,EAAE;AACpC,IAAA,MAAMZ,EAAE,GAAGY,MAAM,CAACC,UAAU,CAAC,OAAO,CAAC,CAAA;AACrC,IAAA,IAAIb,EAAE,EAAE;MACN,IAAI,CAACc,cAAc,GAAGd,EAAE,CAACe,YAAY,CAACf,EAAE,CAACgB,gBAAgB,CAAC,CAAA;MAC1D,IAAI,CAACC,WAAW,GAAI,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAWC,IAAI,CAC5DjB,SAAS,IAAK,IAAI,CAACF,aAAa,CAACC,EAAE,EAAEC,SAAS,CACjD,CAAC,CAAA;MACDD,EAAE,CAACmB,YAAY,CAAC,oBAAoB,CAAC,CAAEC,WAAW,EAAE,CAAA;MACpDC,GAAG,CAAC,KAAK,EAAAlB,0BAAAA,CAAAA,MAAA,CAA6B,IAAI,CAACW,cAAc,CAAE,CAAC,CAAA;AAC9D,KAAA;AACF,GAAA;EAEAQ,WAAWA,CAACC,WAAmB,EAAE;IAC/B,OAAO,CAAC,CAAC,IAAI,CAACT,cAAc,IAAI,IAAI,CAACA,cAAc,IAAIS,WAAW,CAAA;AACpE,GAAA;AACF;;;;"}