Skip to content

Commit

Permalink
Feature/module name cornerstone core (cornerstonejs#149)
Browse files Browse the repository at this point in the history
* Module name: cornerstone-core

* add jquery names for commonjs, commonjs2 and amd

* Undo removing dist/ files (Mishandling)

* import $ from 'jquery';

* Same method than in cornerstoneTools to import jQuery: Use an intermediate file src/jquery.js, in which we can remove the import line to load the sources directly).
  • Loading branch information
Aloïs Dreyfus authored and swederik committed Sep 6, 2017
1 parent 09881c5 commit 5102a97
Show file tree
Hide file tree
Showing 13 changed files with 806 additions and 780 deletions.
10 changes: 9 additions & 1 deletion config/webpack/webpack-base.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,22 @@ module.exports = {
target: 'web',
output: {
filename: '[name].js',
library: '[name]',
library: {
commonjs: "cornerstone-core",
commonjs2: "cornerstone-core",
amd: "cornerstone-core",
root: 'cornerstone'
},
libraryTarget: 'umd',
path: outputPath,
umdNamedDefine: true
},
devtool: 'source-map',
externals: {
jquery: {
commonjs: "jquery",
commonjs2: "jquery",
amd: "jquery",
root: '$'
}
},
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@
"phantomjs-polyfill-find": "github:ptim/phantomjs-polyfill-find",
"phantomjs-polyfill-find-index": "^1.0.1",
"shx": "^0.2.2",
"webpack": "^2.4.1"
"webpack": "^3.1.0"
},
"dependencies": {
"jquery": "^2.2.4"
Expand Down
77 changes: 39 additions & 38 deletions src/disable.js
Original file line number Diff line number Diff line change
@@ -1,38 +1,39 @@
import { getEnabledElements } from './enabledElements.js';

/**
* Disable an HTML element for further use in Cornerstone
*
* @param {HTMLElement} element An HTML Element enabled for Cornerstone
* @returns {void}
*/
export default function (element) {
if (element === undefined) {
throw new Error('disable: element must not be undefined');
}

// Search for this element in this list of enabled elements
const enabledElements = getEnabledElements();

for (let i = 0; i < enabledElements.length; i++) {
if (enabledElements[i].element === element) {
// We found it!

// Fire an event so dependencies can cleanup
const eventData = {
element
};

$(element).trigger('CornerstoneElementDisabled', eventData);

// Remove the child DOM elements that we created (e.g.canvas)
enabledElements[i].element.removeChild(enabledElements[i].canvas);
enabledElements[i].canvas = undefined;

// Remove this element from the list of enabled elements
enabledElements.splice(i, 1);

break;
}
}
}
import $ from './jquery.js';
import { getEnabledElements } from './enabledElements.js';

/**
* Disable an HTML element for further use in Cornerstone
*
* @param {HTMLElement} element An HTML Element enabled for Cornerstone
* @returns {void}
*/
export default function (element) {
if (element === undefined) {
throw new Error('disable: element must not be undefined');
}

// Search for this element in this list of enabled elements
const enabledElements = getEnabledElements();

for (let i = 0; i < enabledElements.length; i++) {
if (enabledElements[i].element === element) {
// We found it!

// Fire an event so dependencies can cleanup
const eventData = {
element
};

$(element).trigger('CornerstoneElementDisabled', eventData);

// Remove the child DOM elements that we created (e.g.canvas)
enabledElements[i].element.removeChild(enabledElements[i].canvas);
enabledElements[i].canvas = undefined;

// Remove this element from the list of enabled elements
enabledElements.splice(i, 1);

break;
}
}
}
1 change: 1 addition & 0 deletions src/displayImage.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import $ from './jquery.js';
import { getEnabledElement } from './enabledElements.js';
import getDefaultViewport from './internal/getDefaultViewport.js';
import updateImage from './updateImage.js';
Expand Down
179 changes: 90 additions & 89 deletions src/enable.js
Original file line number Diff line number Diff line change
@@ -1,89 +1,90 @@
/**
* This module is responsible for enabling an element to display images with cornerstone
*/

import { addEnabledElement } from './enabledElements.js';
import resize from './resize.js';
import drawImageSync from './internal/drawImageSync.js';
import requestAnimationFrame from './internal/requestAnimationFrame.js';
import webGL from './webgl/index.js';

function hasImageOrLayers (enabledElement) {
return enabledElement.image !== undefined || enabledElement.layers.length;
}


/**
* Enable an HTML Element for use in Cornerstone
*
* @param {HTMLElement} element An HTML Element enabled for Cornerstone
* @param {Object} options Options for the enabledElement
*
* @return {void}
*/
export default function (element, options) {
if (element === undefined) {
throw new Error('enable: parameter element cannot be undefined');
}

// If this enabled element has the option set for WebGL, we should
// Check if this device actually supports it
if (options && options.renderer && options.renderer.toLowerCase() === 'webgl') {
if (webGL.renderer.isWebGLAvailable()) {
// If WebGL is available on the device, initialize the renderer
// And return the renderCanvas from the WebGL rendering path
webGL.renderer.initRenderer();
options.renderer = 'webgl';
} else {
// If WebGL is not available on this device, we will fall back
// To using the Canvas renderer
console.error('WebGL not available, falling back to Canvas renderer');
delete options.renderer;
}
}

const canvas = document.createElement('canvas');

element.appendChild(canvas);

const enabledElement = {
element,
canvas,
image: undefined, // Will be set once image is loaded
invalid: false, // True if image needs to be drawn, false if not
needsRedraw: true,
options,
layers: [],
data: {},
renderingTools: {}
};

addEnabledElement(enabledElement);

resize(element, true);

/**
* Draw the image immediately
*
* @param {DOMHighResTimeStamp} timestamp The current time for when requestAnimationFrame starts to fire callbacks
* @returns {void}
*/
function draw (timestamp) {
if (enabledElement.canvas === undefined) {
return;
}

$(enabledElement.element).trigger('CornerstonePreRender', {
enabledElement,
timestamp
});

if (enabledElement.needsRedraw && hasImageOrLayers(enabledElement)) {
drawImageSync(enabledElement, enabledElement.invalid);
}

requestAnimationFrame(draw);
}

draw();
}
/**
* This module is responsible for enabling an element to display images with cornerstone
*/

import $ from './jquery.js';
import { addEnabledElement } from './enabledElements.js';
import resize from './resize.js';
import drawImageSync from './internal/drawImageSync.js';
import requestAnimationFrame from './internal/requestAnimationFrame.js';
import webGL from './webgl/index.js';

function hasImageOrLayers (enabledElement) {
return enabledElement.image !== undefined || enabledElement.layers.length;
}


/**
* Enable an HTML Element for use in Cornerstone
*
* @param {HTMLElement} element An HTML Element enabled for Cornerstone
* @param {Object} options Options for the enabledElement
*
* @return {void}
*/
export default function (element, options) {
if (element === undefined) {
throw new Error('enable: parameter element cannot be undefined');
}

// If this enabled element has the option set for WebGL, we should
// Check if this device actually supports it
if (options && options.renderer && options.renderer.toLowerCase() === 'webgl') {
if (webGL.renderer.isWebGLAvailable()) {
// If WebGL is available on the device, initialize the renderer
// And return the renderCanvas from the WebGL rendering path
webGL.renderer.initRenderer();
options.renderer = 'webgl';
} else {
// If WebGL is not available on this device, we will fall back
// To using the Canvas renderer
console.error('WebGL not available, falling back to Canvas renderer');
delete options.renderer;
}
}

const canvas = document.createElement('canvas');

element.appendChild(canvas);

const enabledElement = {
element,
canvas,
image: undefined, // Will be set once image is loaded
invalid: false, // True if image needs to be drawn, false if not
needsRedraw: true,
options,
layers: [],
data: {},
renderingTools: {}
};

addEnabledElement(enabledElement);

resize(element, true);

/**
* Draw the image immediately
*
* @param {DOMHighResTimeStamp} timestamp The current time for when requestAnimationFrame starts to fire callbacks
* @returns {void}
*/
function draw (timestamp) {
if (enabledElement.canvas === undefined) {
return;
}

$(enabledElement.element).trigger('CornerstonePreRender', {
enabledElement,
timestamp
});

if (enabledElement.needsRedraw && hasImageOrLayers(enabledElement)) {
drawImageSync(enabledElement, enabledElement.invalid);
}

requestAnimationFrame(draw);
}

draw();
}
1 change: 1 addition & 0 deletions src/imageCache.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ const imageCacheDict = {};
// Array of cachedImage objects
export const cachedImages = [];

import $ from './jquery.js';
import events from './events.js';

export function setMaximumSizeBytes (numBytes) {
Expand Down
Loading

0 comments on commit 5102a97

Please sign in to comment.