Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | 1x 1x 18x 18x 18x 18x 29x 1x 1x 1x 1x 1x 1x 39x 39x 17x 425x 133x | import { getGPUTier } from 'detect-gpu'; let csRenderInitialized = false; let useCPURendering = false; // https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/By_example/Detect_WebGL function hasActiveWebGLContext() { // Create canvas element. The canvas is not added to the // document itself, so it is never displayed in the // browser window. const canvas = document.createElement('canvas'); // Get WebGLRenderingContext from canvas element. const gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl'); // Report the result. Eif (gl && gl instanceof WebGLRenderingContext) { return true; } return false; } /** * Initialize the cornerstone-core. If the browser has a webgl context and * the detected gpu (by detect-gpu library) indicates the GPU is not low end we * will use webgl GPU rendering. Otherwise we will use cpu rendering. * * @param defaultConfiguration - A configuration object * @returns A promise that resolves to true cornerstone has been initialized successfully. * @category Initialization */ async function init(defaultConfiguration = {}): Promise<boolean> { if (csRenderInitialized) { return csRenderInitialized; } // detectGPU const hasWebGLContext = hasActiveWebGLContext(); if (!hasWebGLContext) { useCPURendering = true; console.log('CornerstoneRender: GPU not detected, using CPU rendering'); } else { const gpuTier = await getGPUTier(); console.log( 'CornerstoneRender: Using detect-gpu to get the GPU benchmark:', gpuTier ); Iif (gpuTier.tier < 1) { console.log( 'CornerstoneRender: GPU is not powerful enough, using CPU rendering' ); useCPURendering = true; } else { console.log('CornerstoneRender: using GPU rendering'); } } csRenderInitialized = true; return csRenderInitialized; } /** * It sets the useCPURenderingOnlyForDebugOrTests variable to the status value. * This only should be used for debugging or tests. DO NOT USE IT IF YOU ARE NOT * SURE WHAT YOU ARE DOING. * @param status - boolean * @category Initialization * */ function setUseCPURendering(status: boolean): void { useCPURendering = status; csRenderInitialized = true; } /** * Resets the cornerstone-core init state if it has been manually * initialized to force use the cpu rendering (e.g., for tests) * @category Initialization * */ function resetUseCPURendering() { useCPURendering = !hasActiveWebGLContext(); } /** * Returns whether or not we are using CPU rendering. * @returns true if we are using CPU rendering. * @category Initialization * */ function getShouldUseCPURendering(): boolean { return useCPURendering; } /** * * Returns whether or not cornerstone-core has been initialized. * @returns true if the cornerstone render has been initialized. * @category Initialization * */ function isCornerstoneInitialized(): boolean { return csRenderInitialized; } export { init, getShouldUseCPURendering, isCornerstoneInitialized, setUseCPURendering, resetUseCPURendering, }; |