fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
1 lines • 3.25 kB
Source Map (JSON)
{"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","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,GAAG,CAAA,UAAA,EAAaD,SAAS,CAAA,sBAAA,CAAwB;IACrE,MAAME,cAAc,GAAGH,EAAE,CAACI,YAAY,CAACJ,EAAE,CAACK,eAAe,CAAC;IAC1D,IAAI,CAACF,cAAc,EAAE;AACnB,MAAA,OAAO,KAAK;AACd,IAAA;AACAH,IAAAA,EAAE,CAACM,YAAY,CAACH,cAAc,EAAED,cAAc,CAAC;AAC/CF,IAAAA,EAAE,CAACO,aAAa,CAACJ,cAAc,CAAC;IAChC,OAAO,CAAC,CAACH,EAAE,CAACQ,kBAAkB,CAACL,cAAc,EAAEH,EAAE,CAACS,cAAc,CAAC;AACnE,EAAA;;AAEA;AACF;AACA;EACEC,UAAUA,CAACC,MAAyB,EAAE;AACpC,IAAA,MAAMX,EAAE,GAAGW,MAAM,CAACC,UAAU,CAAC,OAAO,CAAC;AACrC,IAAA,IAAIZ,EAAE,EAAE;MACN,IAAI,CAACa,cAAc,GAAGb,EAAE,CAACc,YAAY,CAACd,EAAE,CAACe,gBAAgB,CAAC;MAC1D,IAAI,CAACC,WAAW,GAAI,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAWC,IAAI,CAC5DhB,SAAS,IAAK,IAAI,CAACF,aAAa,CAACC,EAAE,EAAEC,SAAS,CACjD,CAAC;MACDD,EAAE,CAACkB,YAAY,CAAC,oBAAoB,CAAC,CAAEC,WAAW,EAAE;MACpDC,GAAG,CAAC,KAAK,EAAE,CAAA,wBAAA,EAA2B,IAAI,CAACP,cAAc,EAAE,CAAC;AAC9D,IAAA;AACF,EAAA;EAEAQ,WAAWA,CAACC,WAAmB,EAAE;IAC/B,OAAO,CAAC,CAAC,IAAI,CAACT,cAAc,IAAI,IAAI,CAACA,cAAc,IAAIS,WAAW;AACpE,EAAA;AACF;;;;"}