UNPKG

molstar

Version:

A comprehensive macromolecular library.

119 lines 5.46 kB
/** * Copyright (c) 2018-2019 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose <alexander.rose@weirdbyte.de> */ export function createState(gl) { var enabledCapabilities = {}; var currentFrontFace = gl.getParameter(gl.FRONT_FACE); var currentCullFace = gl.getParameter(gl.CULL_FACE_MODE); var currentDepthMask = gl.getParameter(gl.DEPTH_WRITEMASK); var currentColorMask = gl.getParameter(gl.COLOR_WRITEMASK); var currentClearColor = gl.getParameter(gl.COLOR_CLEAR_VALUE); var currentBlendSrcRGB = gl.getParameter(gl.BLEND_SRC_RGB); var currentBlendDstRGB = gl.getParameter(gl.BLEND_DST_RGB); var currentBlendSrcAlpha = gl.getParameter(gl.BLEND_SRC_ALPHA); var currentBlendDstAlpha = gl.getParameter(gl.BLEND_DST_ALPHA); var currentBlendEqRGB = gl.getParameter(gl.BLEND_EQUATION_RGB); var currentBlendEqAlpha = gl.getParameter(gl.BLEND_EQUATION_ALPHA); return { currentProgramId: -1, currentMaterialId: -1, currentRenderItemId: -1, enable: function (cap) { if (enabledCapabilities[cap] !== true) { gl.enable(cap); enabledCapabilities[cap] = true; } }, disable: function (cap) { if (enabledCapabilities[cap] !== false) { gl.disable(cap); enabledCapabilities[cap] = false; } }, frontFace: function (mode) { if (mode !== currentFrontFace) { gl.frontFace(mode); currentFrontFace = mode; } }, cullFace: function (mode) { if (mode !== currentCullFace) { gl.cullFace(mode); currentCullFace = mode; } }, depthMask: function (flag) { if (flag !== currentDepthMask) { gl.depthMask(flag); currentDepthMask = flag; } }, colorMask: function (red, green, blue, alpha) { if (red !== currentColorMask[0] || green !== currentColorMask[1] || blue !== currentColorMask[2] || alpha !== currentColorMask[3]) { gl.colorMask(red, green, blue, alpha); currentColorMask[0] = red; currentColorMask[1] = green; currentColorMask[2] = blue; currentColorMask[3] = alpha; } }, clearColor: function (red, green, blue, alpha) { if (red !== currentClearColor[0] || green !== currentClearColor[1] || blue !== currentClearColor[2] || alpha !== currentClearColor[3]) { gl.clearColor(red, green, blue, alpha); currentClearColor[0] = red; currentClearColor[1] = green; currentClearColor[2] = blue; currentClearColor[3] = alpha; } }, blendFunc: function (src, dst) { if (src !== currentBlendSrcRGB || dst !== currentBlendDstRGB || src !== currentBlendSrcAlpha || dst !== currentBlendDstAlpha) { gl.blendFunc(src, dst); currentBlendSrcRGB = src; currentBlendDstRGB = dst; currentBlendSrcAlpha = src; currentBlendDstAlpha = dst; } }, blendFuncSeparate: function (srcRGB, dstRGB, srcAlpha, dstAlpha) { if (srcRGB !== currentBlendSrcRGB || dstRGB !== currentBlendDstRGB || srcAlpha !== currentBlendSrcAlpha || dstAlpha !== currentBlendDstAlpha) { gl.blendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha); currentBlendSrcRGB = srcRGB; currentBlendDstRGB = dstRGB; currentBlendSrcAlpha = srcAlpha; currentBlendDstAlpha = dstAlpha; } }, blendEquation: function (mode) { if (mode !== currentBlendEqRGB || mode !== currentBlendEqAlpha) { gl.blendEquation(mode); currentBlendEqRGB = mode; currentBlendEqAlpha = mode; } }, blendEquationSeparate: function (modeRGB, modeAlpha) { if (modeRGB !== currentBlendEqRGB || modeAlpha !== currentBlendEqAlpha) { gl.blendEquationSeparate(modeRGB, modeAlpha); currentBlendEqRGB = modeRGB; currentBlendEqAlpha = modeAlpha; } }, reset: function () { enabledCapabilities = {}; currentFrontFace = gl.getParameter(gl.FRONT_FACE); currentCullFace = gl.getParameter(gl.CULL_FACE_MODE); currentDepthMask = gl.getParameter(gl.DEPTH_WRITEMASK); currentColorMask = gl.getParameter(gl.COLOR_WRITEMASK); currentClearColor = gl.getParameter(gl.COLOR_CLEAR_VALUE); currentBlendSrcRGB = gl.getParameter(gl.BLEND_SRC_RGB); currentBlendDstRGB = gl.getParameter(gl.BLEND_DST_RGB); currentBlendSrcAlpha = gl.getParameter(gl.BLEND_SRC_ALPHA); currentBlendDstAlpha = gl.getParameter(gl.BLEND_DST_ALPHA); currentBlendEqRGB = gl.getParameter(gl.BLEND_EQUATION_RGB); currentBlendEqAlpha = gl.getParameter(gl.BLEND_EQUATION_ALPHA); } }; } //# sourceMappingURL=state.js.map