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,
};
|